[pacman 5] hook

Mise à jour / Création /debug de paquetages
Avatar de l’utilisateur
papajoke
Elfe
Messages : 517
Inscription : sam. 30 août 2014, 19:54
Contact :

[pacman 5] hook

Message par papajoke » lun. 01 févr. 2016, 09:47

il est possible de trouver quelques exemples de hook

je vous propose mes premier essais :

lancement automatique de réflector :
/etc/pacman.d/hooks/pacman-mirrorlist.hook

Code : Tout sélectionner

[Trigger]
Operation = Install
Operation = Upgrade
Type = Package
Target = pacman-mirrorlist
[Action]
Description = lancement de reflector
When = PostTransaction
Depends = reflector
Exec = /usr/bin/reflector --verbose --country France -l 5 -p http --sort rate --save /etc/pacman.d/mirrorlist

un hook de sécurité, il empêche la désinstallation de certains paquets
/etc/pacman.d/hooks/obligatoire.hook

Code : Tout sélectionner

[Trigger]
Operation = remove
Type = Package
Target = bash
Target = pacman

[Action]
Description = OBLIGATOIRE, pas de désinstallation possible
When = PreTransaction
Exec = /usr/bin/false
AbortOnFail
Ajouter ces propres "Target"
Dernière édition par papajoke le lun. 01 févr. 2016, 17:03, édité 1 fois.
Arch stable - Kde 5 / zsh - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau

Avatar de l’utilisateur
Moviuro
Elfe
Messages : 765
Inscription : dim. 17 juin 2012, 22:49
Contact :

Re: [pacman 5] hook

Message par Moviuro » lun. 01 févr. 2016, 13:32

Yo,

Merci pour les exemples, c'est bien cool :) (je vais pouvoir créer un hook pour butter)
Par contre, lancer reflector à chaque lancement de pacman, c'est vraiment abusé. (Une fois par semaine, c'est amplement suffisant)

Aussi, ça semble très étrange d'avoir à éditer un fichier dans /usr. T'es sûr de ton coup ?
psycho : Latitude E6430 ; BTRFS over LUKS, UEFI & secureboot
schizo : Acer 8942G ; KDE 4, BTRFS over LUKS ; W7 (prend la poussière)
toxo : i5-6600K, bspwm, VM W10 en PCI-passthrough
deadman : Lenovo Thinkcenter, OpenBSD 6.0-stable
popho.be : Kimsufi KS-3, FreeBSD 11.0
Loi de Murphy : Le jour où tu as besoin d'une backup, tu te dis que tu aurais dû en mettre en place
Venez sur IRC en plus du forum !

Avatar de l’utilisateur
papajoke
Elfe
Messages : 517
Inscription : sam. 30 août 2014, 19:54
Contact :

Re: [pacman 5] hook

Message par papajoke » lun. 01 févr. 2016, 16:55

pour reflector, j'ai mis : Target = pacman-mirrorlist donc il est déclenché uniquement avec un upgrade ou install de ce paquet !

pour /usr/share/libalpm/hooks/, en effet j'avais fait les tests à partir du site github donné plus haut et ca marche :?:
mais dans le nouveau pacman.conf on trouve :

Code : Tout sélectionner

#HookDir     = /etc/pacman.d/hooks/
testé et c'est ok

le man :

Code : Tout sélectionner

man alpm-hooks 
man a écrit :HookDir Add directories to search for alpm hooks in addition to the system hook directory
(/usr/share/libalpm/hooks/).
man a écrit :Hooks may be overridden by placing a file with the same name in a higher priority hook directory. Hooks may be disabled by overriding them with a symlink to /dev/null.
pas compris ?
Dernière édition par papajoke le lun. 01 févr. 2016, 17:36, édité 7 fois.
Arch stable - Kde 5 / zsh - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau

Avatar de l’utilisateur
Moviuro
Elfe
Messages : 765
Inscription : dim. 17 juin 2012, 22:49
Contact :

Re: [pacman 5] hook

Message par Moviuro » lun. 01 févr. 2016, 17:09

papajoke a écrit :pour reflector, j'ai mis : Target = pacman-mirrorlist[c] donc il est déclenché uniquement avec un upgrade ou install de ce paquet ![/quote]Ah yes, mea culpa, j'avais pas vu :oops: :copain:
psycho : Latitude E6430 ; BTRFS over LUKS, UEFI & secureboot
schizo : Acer 8942G ; KDE 4, BTRFS over LUKS ; W7 (prend la poussière)
toxo : i5-6600K, bspwm, VM W10 en PCI-passthrough
deadman : Lenovo Thinkcenter, OpenBSD 6.0-stable
popho.be : Kimsufi KS-3, FreeBSD 11.0
Loi de Murphy : Le jour où tu as besoin d'une backup, tu te dis que tu aurais dû en mettre en place
Venez sur IRC en plus du forum !

Avatar de l’utilisateur
kozaki
Chu Ko Nu
Messages : 422
Inscription : mer. 13 sept. 2006, 22:49
Localisation : London > . < Paris
Contact :

Re: [pacman 5] hook

Message par kozaki » lun. 01 févr. 2016, 22:42

Tip top les exemples de hooks pacman papajoke :)
~ Configs ~ PGP Key: 1C2A554EFF0157D9
« Demande un conseil à ton ennemi et fais le contraire (proverbe juif)
SVP intéressé par tout retour d'exp. sur Arch ARM en général, et sur portable (CrOS) en particulier.

Avatar de l’utilisateur
Moviuro
Elfe
Messages : 765
Inscription : dim. 17 juin 2012, 22:49
Contact :

Re: [pacman 5] hook

Message par Moviuro » mar. 02 févr. 2016, 09:11

papajoke a écrit :

Code : Tout sélectionner

man alpm-hooks 
man a écrit :HookDir Add directories to search for alpm hooks in addition to the system hook directory
(/usr/share/libalpm/hooks/).
man a écrit :Hooks may be overridden by placing a file with the same name in a higher priority hook directory. Hooks may be disabled by overriding them with a symlink to /dev/null.
pas compris ?

Code : Tout sélectionner

# ln -s /dev/null /etc/pacman.d/hooks/$un_hook_qui_existe_dans_usr-share-libalpm-hooks
Enfin, je pense.

Auquel cas ça désactive un hook que tu pourrais activer, un peu comme pour désactiver les règles udev avec systemd où on lie /dev/null à un fichier de règles. ln -s /dev/null /etc/udev/rules/00-machin.rules
psycho : Latitude E6430 ; BTRFS over LUKS, UEFI & secureboot
schizo : Acer 8942G ; KDE 4, BTRFS over LUKS ; W7 (prend la poussière)
toxo : i5-6600K, bspwm, VM W10 en PCI-passthrough
deadman : Lenovo Thinkcenter, OpenBSD 6.0-stable
popho.be : Kimsufi KS-3, FreeBSD 11.0
Loi de Murphy : Le jour où tu as besoin d'une backup, tu te dis que tu aurais dû en mettre en place
Venez sur IRC en plus du forum !

Avatar de l’utilisateur
papajoke
Elfe
Messages : 517
Inscription : sam. 30 août 2014, 19:54
Contact :

Re: [pacman 5] hook

Message par papajoke » mar. 02 févr. 2016, 14:02

autre petit hook de sécurité (pour parano)

/etc/pacman.d/hooks/nopath.hook

Code : Tout sélectionner

[Trigger]
Operation = Install
Operation = Upgrade
Type = File
Target = home/*
Target = media/*
Target = mnt/*
Target = usr/local/*
Target = srv/*
Target = proc/*
Target = sys/*
Target = tmp/*

[Action]
Description = destination NON conforme !
When = PreTransaction
Exec = /usr/bin/false
AbortOnFail
je me suis fait un paquet test puisque que cela n'existe pas sur aur ...

Code : Tout sélectionner

package() {
  install -D -m555 "${srcdir}/untest" "${pkgdir}/home/patrick/untest"
}
et ça marche :D un petit makepkg -si le déclenche bien
Arch stable - Kde 5 / zsh - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau

Avatar de l’utilisateur
Xorg
Maître du Kyudo
Messages : 1927
Inscription : dim. 22 janv. 2012, 19:25
Localisation : Entre le clavier et la chaise.
Contact :

Re: [pacman 5] hook

Message par Xorg » sam. 04 août 2018, 16:54

Bonjour,

Je viens apporter ma pierre à l'édifice. :)
J'ai empaqueté un hook qui met à jour le fichier /etc/pacman.d/mirrorlist à partir du fichier /etc/pacman.d/mirrorlist.pacnew ; contrairement au hook proposé plus haut qui utilise reflector, ici c'est rankmirrors qui est utilisé (disponible dans le paquet pacman-contrib).
Il s'agit du paquet pacman-mirrorlist-rankmirrors-hook. Le pays doit être configuré dans le fichier /etc/pacman.d/mirrorlist-rankmirrors.conf.

Dans le genre hook sympa qu'on trouve sur AUR, j'ai trouvé pacman-cleanup-hook : il permet de nettoyer automatiquement le cache de Pacman, en conservant le paquet installé ainsi que sa version précédente. :D
Arch Linux x86_64 - Gnome 3 (Wayland)
- Desktop : Intel® Core™ i5 2500K - 8Go de DDR3 - SSD 250Go + 2 HDD 500Go
- Laptop : Intel® Pentiuml® 4405U - 4Go de DDR4 - SSD 120Go
Image AUR___Image Wiki___Image GitHub
Tux est un manchot, et non un pingouin. :marche:

Avatar de l’utilisateur
papajoke
Elfe
Messages : 517
Inscription : sam. 30 août 2014, 19:54
Contact :

Re: [pacman 5] hook

Message par papajoke » sam. 04 août 2018, 17:51

bonjour

Petite remarques,
  • je ne suis pas fan de copier le script dans /bin puisqu'il ne devrait jamais fonctionner en console user puisqu'on a jamais de .pacnew (si hook fonctionne bien)
    A noter qu'il est possible de restreindre le script pour uniquement pacman (dans contexte de hook)

    Code : Tout sélectionner

    [[ "${HTTP_USER_AGENT:0:6}" != 'pacman' ]] && exit 4
  • dans fichier .hook Dépendance pacman ? plutôt rankmirrors
    un hook est lancé par alpm ! il n'y a pas de raison ici de demander pacman car tu ne fais aucun appel à pacman dans le script (sinon ok).

    De plus, je connais (mais existe d'autres ???) aussi pamac (qui depuis quelques jours s'utilise en cli) : c'est un programme alpm (donc déclenche les hooks) mais n'utilise aucunement pacman (donc autre HTTP_USER_AGENT).
Pour le clean-hook, je préfère un timer systemd mensuel (...)
Arch stable - Kde 5 / zsh - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau

Répondre