[pacman 5] hook

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

[pacman 5] hook

Message par papajoke »

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 modification par papajoke le lun. 01 févr. 2016, 17:03, modifié 1 fois.
Arch stable - Kde 5 / zsh - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau
Moviuro
Elfe
Messages : 765
Inscription : dim. 17 juin 2012, 22:49

Re: [pacman 5] hook

Message par Moviuro »

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 : 773
Inscription : sam. 30 août 2014, 19:54

Re: [pacman 5] hook

Message par papajoke »

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 modification par papajoke le lun. 01 févr. 2016, 17:36, modifié 7 fois.
Arch stable - Kde 5 / zsh - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau
Moviuro
Elfe
Messages : 765
Inscription : dim. 17 juin 2012, 22:49

Re: [pacman 5] hook

Message par Moviuro »

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 »

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.
Moviuro
Elfe
Messages : 765
Inscription : dim. 17 juin 2012, 22:49

Re: [pacman 5] hook

Message par Moviuro »

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 : 773
Inscription : sam. 30 août 2014, 19:54

Re: [pacman 5] hook

Message par papajoke »

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 : 1933
Inscription : dim. 22 janv. 2012, 19:25
Localisation : Entre le clavier et la chaise.

Re: [pacman 5] hook

Message par Xorg »

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 - Sway
AMD Ryzen 5 3600X - 32 Go de DDR4 - SSD NVMe 1 To + SSD SATA 250 Go - Sapphire NITRO+ Radeon RX 580
Image AUR___Image Wiki___Image GitHub
Avatar de l’utilisateur
papajoke
Elfe
Messages : 773
Inscription : sam. 30 août 2014, 19:54

Re: [pacman 5] hook

Message par papajoke »

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