[pacman] Impossible d’exécuter les crochets de transaction (Résolu)

Questions et astuces concernant l'installation et la configuration d'archlinux
Répondre
jimarch
yeomen
Messages : 224
Inscription : mer. 26 déc. 2012, 20:38
Localisation : La Roche sur Yon - 85000

[pacman] Impossible d’exécuter les crochets de transaction (Résolu)

Message par jimarch »

Bonjour à toutes et à tous !

J'ai fait ce jour une tentative de mise à jour complète du système.
Normalement, je la fais tous les jours ou presque. La dernière remonte au 7 novembre, sans problème.
Ici, après un long WE, j'ai les erreurs suivantes lors de la mise à jour.


Dans la console, j'ai les messages suivants :
(116/116) vérification des clés dans le trousseau [#######################] 100%
(116/116) vérification de l’intégrité des paquets [#######################] 100%
(116/116) chargement des fichiers des paquets [#######################] 100%
(116/116) analyse des conflits entre fichiers [#######################] 100%
(116/116) vérification de l’espace disque disponible [#######################] 100%
:: Exécution des crochets de pré-transaction…
(1/3) Removing linux initcpios...
(2/3) Remove DKMS modules
(3/3) Checking Arch News ...
There are 9 unread news items! Use informant to read them.
erreur : la commande n’a pas pu être exécutée correctement
erreur : la validation de la transaction a échoué (Impossible d’exécuter les crochets de transaction)
Des erreurs se sont produites, aucun paquet n’a été mis à jour.
Le chargement des paquets se fait normalement, mais au moment de l'installation, cela bloque

Si je vais voir dans le log de pacman, je peux lire :
[2019-11-11T15:25:57-0300] [PACMAN] Running 'pacman -Syu'
[2019-11-11T15:25:57-0300] [PACMAN] synchronizing package lists
[2019-11-11T15:25:58-0300] [PACMAN] starting full system upgrade
[2019-11-11T15:29:39-0300] [ALPM] running '60-mkinitcpio-remove.hook'...
[2019-11-11T15:29:39-0300] [ALPM] running '70-dkms-remove.hook'...
[2019-11-11T15:29:39-0300] [ALPM-SCRIPTLET] ==> dkms remove vboxhost/6.0.14_OSE -k 4.19.81-1-lts
[2019-11-11T15:29:47-0300] [ALPM-SCRIPTLET] ==> dkms remove vboxhost/6.0.14_OSE -k 5.3.8-arch1-1
[2019-11-11T15:29:55-0300] [ALPM] running 'informant.hook'...
[2019-11-11T15:29:58-0300] [ALPM-SCRIPTLET] There are 10 unread news items! Use informant to read them.
[2019-11-11 15:29] Exited with code 1
Jusqu'à présent, je n'ai jamais trouvé la ligne : running '60-mkinitcpio-remove.hook'...

Si je regarde la première annonce dans informant,
# informant read 0
New kernel packages and mkinitcpio hooks
All our official kernels: linux, linux-lts, linux-zen and linux-hardened, do not install the actual kernel to /boot anymore.
The installation is done by mkinitcpio hooks and scripts, as well as removals. There is no need for any manual intervention.
The intention is to make the kernel packages more self-contained, as well as making the boot process more flexible, while also keeping it backwards compatible.
As of now, only mkinitcpio has hooks for handling kernels installations and removals. We do not ship any for dracut yet, but it will have similar hooks in the near future.
je peux lire :
The installation is done by mkinitcpio hooks and scripts, as well as removals. There is no need for any manual intervention.
Donc je suppose qu'il n'y a rien à faire de spécial.

Pour info, la version de mkinitcpio est la suivante :
mkinitcpio-27-2 est à jour

Mon mkinitcpio.conf est le suivant :
# vim:set ft=sh
# MODULES
# The following modules are loaded before any boot hooks are
# run. Advanced users may wish to specify all system modules
# in this array. For instance:
# MODULES=(piix ide_disk reiserfs)
MODULES=()

# BINARIES
# This setting includes any additional binaries a given user may
# wish into the CPIO image. This is run last, so it may be used to
# override the actual binaries included by a given hook
# BINARIES are dependency parsed, so you may safely ignore libraries
BINARIES=()

# FILES
# This setting is similar to BINARIES above, however, files are added
# as-is and are not parsed in any way. This is useful for config files.
FILES=()

# HOOKS
# This is the most important setting in this file. The HOOKS control the
# modules and scripts added to the image, and what happens at boot time.
# Order is important, and it is recommended that you do not change the
# order in which HOOKS are added. Run 'mkinitcpio -H <hook name>' for
# help on a given hook.
# 'base' is _required_ unless you know precisely what you are doing.
# 'udev' is _required_ in order to automatically load modules
# 'filesystems' is _required_ unless you specify your fs modules in MODULES
# Examples:
## This setup specifies all modules in the MODULES setting above.
## No raid, lvm2, or encrypted root is needed.
# HOOKS=(base)
#
## This setup will autodetect all modules for your system and should
## work as a sane default
# HOOKS=(base udev autodetect block filesystems)
#
## This setup will generate a 'full' image which supports most systems.
## No autodetection is done.
# HOOKS=(base udev block filesystems)
#
## This setup assembles a pata mdadm array with an encrypted root FS.
## Note: See 'mkinitcpio -H mdadm' for more information on raid devices.
# HOOKS=(base udev block mdadm encrypt filesystems)
#
## This setup loads an lvm2 volume group on a usb device.
# HOOKS=(base udev block lvm2 filesystems)
#
## NOTE: If you have /usr on a separate partition, you MUST include the
# usr, fsck and shutdown hooks.
HOOKS=(base udev autodetect modconf block filesystems keyboard fsck)

# COMPRESSION
# Use this to compress the initramfs image. By default, gzip compression
# is used. Use 'cat' to create an uncompressed image.
#COMPRESSION="gzip"
#COMPRESSION="bzip2"
#COMPRESSION="lzma"
#COMPRESSION="xz"
#COMPRESSION="lzop"
#COMPRESSION="lz4"

# COMPRESSION_OPTIONS
# Additional options for the compressor
#COMPRESSION_OPTIONS=()
Un avis, une solution ?
Dernière modification par jimarch le mar. 19 nov. 2019, 16:15, modifié 1 fois.
Fixe : AMD Ryzen 5 2600X Six-Core Processor | 15,6 Gio de mémoire vive | GeForce GTX 1650 SUPER/PCIe/SSE2
Portable : Plasma - Kde | Notebook Clevo W740SU | Plateforme Intel Haswell avec Intel Core i7-4750HQ | Intel Iris Pro graphics 5200
Sauvegardes quotidiennes de mes système et données par BORG
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17187
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [pacman] Impossible d’exécuter les crochets de transaction

Message par benjarobin »

Bonjour,
C'est toi qui as installé la paquet informant (c'est étrange car tu devrais savoir pourquoi et comment cela fonctionne....) ?
C'est super dangereux comme hook... Si au moins ce hook était exécuté en premier... Mais là cela annule toute une mise à jour en plein milieu.
Pour le fonctionnement tout est décrit ici : https://github.com/bradford-smith94/informant
Je te conseil vivement de t'en débarrasser !!!

Code : Tout sélectionner

rm /usr/share/libalpm/hooks/informant.hook
rm /var/cache/informant.dat
pacman -R informant
pacman -Syu
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
jimarch
yeomen
Messages : 224
Inscription : mer. 26 déc. 2012, 20:38
Localisation : La Roche sur Yon - 85000

Re: [pacman] Impossible d’exécuter les crochets de transaction

Message par jimarch »

Suite de la mesaventure....

La manoeuvre précédente (mais qu'ai-je donc fait à pacman ??? :o ) a eu pour effet d'effacer totalement les fichiers suivants dans /boot

file:///boot/initramfs-linux-fallback.img
file:///boot/initramfs-linux-lts-fallback.img
file:///boot/initramfs-linux-lts.img
file:///boot/initramfs-linux.img
file:///boot/intel-ucode.img
file:///boot/vmlinuz-linux
file:///boot/vmlinuz-linux-lts

Avant de rebooter ma machine, j' étais allé voir dans boot et avais constaté l'absence ou plutôt l'effacement de ces fichiers.
J'étais convaincu que ces fichiers n'étaient effacés ou remplacés que lorsque une mise à jour du noyau linux était réalisée...
J'ai quand même rebooté, et là plus de noyau !!!!!

Par chance, j'ai toujours sur ma machine une sauvegarde de /boot et de / (hors home)
J'ai donc pu restaurer rapidement... mais n'ose plus faire une mise à jour tant que le problème précédent n'est pas résolu.
Fixe : AMD Ryzen 5 2600X Six-Core Processor | 15,6 Gio de mémoire vive | GeForce GTX 1650 SUPER/PCIe/SSE2
Portable : Plasma - Kde | Notebook Clevo W740SU | Plateforme Intel Haswell avec Intel Core i7-4750HQ | Intel Iris Pro graphics 5200
Sauvegardes quotidiennes de mes système et données par BORG
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17187
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [pacman] Impossible d’exécuter les crochets de transaction

Message par benjarobin »

Quelle idée de redémarrer alors que tu as constaté que boot était vide... Le résultat était garanti !
Remarque générale : Ne jamais redémarrer après l'échec d'une mise à jour !!! Tu as presque 100% de chance d'avoir un système cassé
Cf mon message... Note que j'avais prédit le désastre. Exécute ces 4 commandes et cela devrait bien se passer :-)
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
jimarch
yeomen
Messages : 224
Inscription : mer. 26 déc. 2012, 20:38
Localisation : La Roche sur Yon - 85000

Re: [pacman] Impossible d’exécuter les crochets de transaction

Message par jimarch »

OK, et grand merci !

Effectivement, j'avais aussi prévu le désastre... mais ne voulais y croire !
Comme j'avais une sauvegarde de /boot sous la main sur le second disque de ma machine, je savais quand même que je ne prenais qu'un risque limité (a priori).
Mais quand on ne veut pas croire à quelque chose.... Bel effet psychologique !

J'ai éliminé "informant"... et la mise à jour s'est fait normalement !
Je l'avais installé il y a moins d'un mois et sans problème lors des mises à jour.
Mais comme il ne fait que reprendre les messages que l'on trouve dans les dernières nouvelles de l'accueil, il n'a qu'un intérêt limité... et un effet destructeur comme je viens de l'expérimenter !

Une dernière question :
dans mon mkinitcpio.conf, la ligne suivante (qui fonctionne) est-elle à jour ?
HOOKS=(base udev autodetect modconf block filesystems keyboard fsck)

En regardant le wiki sur https://wiki.archlinux.fr/Mkinitcpio#Hooks , j'ai lu sur le hook "systemd"
Ce hook remplace base, usr, udev, timestamp et resume.
et aussi :
Met en place la configuration de base de systemd. Le hook base reste nécessaire avant lui pour assurer un shell de secours.
Puis-je donc écrire sans risque (je me méfie à présent...)
HOOKS=(base systemd autodetect modconf block filesystems keyboard fsck)

Cdt
Fixe : AMD Ryzen 5 2600X Six-Core Processor | 15,6 Gio de mémoire vive | GeForce GTX 1650 SUPER/PCIe/SSE2
Portable : Plasma - Kde | Notebook Clevo W740SU | Plateforme Intel Haswell avec Intel Core i7-4750HQ | Intel Iris Pro graphics 5200
Sauvegardes quotidiennes de mes système et données par BORG
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17187
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [pacman] Impossible d’exécuter les crochets de transaction

Message par benjarobin »

Euh, non le wiki ne dit pas de faire cela. Après je ne sais pas non plus si le wiki est à jour.
Ce qui est sûr c'est que maintenant il y a plusieurs choix possible pour l'initramfs (plusieurs config pour mkinitcpio ou remplacer mkinitcpio par dracut)
Bref, la configuration par défaut de mkinitcpio n'a pas changé que je sache, il y a juste plus de possibilité.
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
avi3000
Chu Ko Nu
Messages : 404
Inscription : dim. 19 juin 2011, 18:53
Localisation : dans le neuf trois

Re: [pacman] Impossible d’exécuter les crochets de transaction

Message par avi3000 »

Le mkinitcpio.conf que j'utilise date du 18 mai 2013.
Il est quasiment identique au mkinitcpio.conf.pacnew du 6 novembre.
  • La compression lz4 a été ajoutée comme option de compression.
  • Les paramètres MODULES, BINARIES, FILES et HOOKS qui étaient des chaînes de caractères sont maintenant des tableaux.
Il vaut mieux éviter les bricolages inutiles dans ce fichier.
jimarch
yeomen
Messages : 224
Inscription : mer. 26 déc. 2012, 20:38
Localisation : La Roche sur Yon - 85000

Re: [pacman] Impossible d’exécuter les crochets de transaction

Message par jimarch »

Pour info, je ne suis pas le seul à avoir des problèmes avec les fichiers du noyau lors d'une mise à jour du système.

Dans un message sur
arch-general Digest, Vol 181, Issue 13 du 14 novembre,
Amon Amish fait part d'un problème différent de celui que j'ai rencontré, dans une situation nettement plus compliquée que la mienne, mais le résultat est identique
: So effectively this created an un-bootable system requiring manual booting.

Pour faire simple, comme mkinitcpio hook commence par supprimer les fichiers du noyau présents sur le système avant même de les mettre à jour,
il y a un gros risque, s'il y a un problème avec un hook (comme ce fut le cas pour moi) ou un autre problème, ( comme c'est le cas pour Amish) de se retrouver avec un système non-bootable.

Un homme averti... etc

(extraits du message pour ceux qui ne l'ont pas lu)...
1. Re: [arch-announce] New kernel packages and mkinitcpio hooks
(Amish)
I would like to report an issue I faced due to this. Not an issue for
everyone but can be an issue in a certain special cases.

I have a custom package (in my custom repo) which modifies grub UI /
menus (cosmetic change only) by putting some files in /etc/grub.d/ and
regenerates /boot/grub/grub.cfg (by calling grub-mkconfig in package's
post install script). This has been working fine from 2 years or so.

Recently I released an update to that custom package but at the same
time, upgrades to linux as well as linux-lts packages were also
available in arch repository.

And after upgrade, grub.cfg lost linux and linux-lts menu entries
completely.

What happened is:

1. mkinitcpio hook first removed vmlinuz-linux, vmlinuz-linux-lts and
initrd files from /boot

2. My package got updated along with new versions of linux and linux-lts
3. My package's post install script ran grub-mkconfig but new vmlinuz
files did not exist yet in /boot.
So grub entries were not created
for them.
4. mkinitcpio-install post transaction hook runs and copies kernel to
/boot (but its too late for my post install scripts)

So effectively this created an un-bootable system requiring manual booting.
Bon, moi j'ai fait une bourde. Mais il est quand même curieux que les fichiers du noyau ne soient pas remplacés seulement APRES que tout soit mis en ordre.
Mais pour être complet, il faut aussi lire les réponses des différents mainteneurs.
Fixe : AMD Ryzen 5 2600X Six-Core Processor | 15,6 Gio de mémoire vive | GeForce GTX 1650 SUPER/PCIe/SSE2
Portable : Plasma - Kde | Notebook Clevo W740SU | Plateforme Intel Haswell avec Intel Core i7-4750HQ | Intel Iris Pro graphics 5200
Sauvegardes quotidiennes de mes système et données par BORG
Avatar de l’utilisateur
CoudUr
yeomen
Messages : 230
Inscription : sam. 06 avr. 2013, 17:12

Re: [pacman] Impossible d’exécuter les crochets de transaction

Message par CoudUr »

Salut,

À la place d'utiliser un paquet AUR pour avoir les news Archlinux tu peux utiliser ce bout de code écrit en perl qui donnera les "x"(dans l’exemple donné ici 3) dernières nouvelles diffusées:

Code : Tout sélectionner

news () 
{ 
    echo ':: ArchLinux News ::';
    perl -E '
    $_ = qx{curl -s "https://www.archlinux.org/feeds/news/"};
    for (m{<item>(.*?)</item>}sg) {
        ($t) = m{<title>(.*?)</title>};
        ($d) = m{<pubDate>(.*?)</pubDate>};
        say $d, ": ", $t;
        last if ++$n == 3;
    }'
}
En pratique cela donne ceci:

Code : Tout sélectionner

news
:: ArchLinux News ::
Sun, 10 Nov 2019 21:41:24 +0000: New kernel packages and mkinitcpio hooks
Fri, 25 Oct 2019 20:27:46 +0000: Clarification regarding recent email activity on the arch-announce list
Wed, 16 Oct 2019 12:43:54 +0000: Required update to recent libarchive
Comme te le vois je l'ai placé en tant que fonction dans mon bashrc que j'appelle en lançant la commande "news", mais chacun fait comme il veut un simple script bash fait l'affaire aussi.
J'avais piqué ça soit sur le forum anglais, reddit ou un blog désolé je ne me souviens plus exactement :roll:
En revanche ce dont je me souviens c'est que j'avais essayé de faire la même chose en bash mais le résultat n'était pas mieux, le code beaucoup plus long et une dépendance était nécessaire pour parser le html, le tout n'étant pas très jojo j'ai donc décidé de conserver le code d'origine et virer ma gribouille :lol:

Bref tout ça pour dire que si on peut éviter l'installation d'un paquet AUR autant ne pas se priver.
avi3000
Chu Ko Nu
Messages : 404
Inscription : dim. 19 juin 2011, 18:53
Localisation : dans le neuf trois

Re: [pacman] Impossible d’exécuter les crochets de transaction

Message par avi3000 »

En 2014, sur ce forum je m'étais occupé du sujet scripts news archlinux avec des tests et des versions C, sed, awk, bash, python.
Avatar de l’utilisateur
CoudUr
yeomen
Messages : 230
Inscription : sam. 06 avr. 2013, 17:12

Re: [pacman] Impossible d’exécuter les crochets de transaction

Message par CoudUr »

avi3000 a écrit : dim. 17 nov. 2019, 18:22 En 2014, sur ce forum je m'étais occupé du sujet scripts news archlinux avec des tests et des versions C, sed, awk, bash, python.
Ha oui je suis passé complètement à côté de ce sujet, vraiment au top @avi3000 .
Avec mon script bash utilisant xmlstartlet cela fait pâle figure pour sûr, bravo à toi et merci .
:bravo:
avi3000
Chu Ko Nu
Messages : 404
Inscription : dim. 19 juin 2011, 18:53
Localisation : dans le neuf trois

Re: [pacman] Impossible d’exécuter les crochets de transaction

Message par avi3000 »

j'ai ajouté une version bash avec un affichage un peu plus propre
jimarch
yeomen
Messages : 224
Inscription : mer. 26 déc. 2012, 20:38
Localisation : La Roche sur Yon - 85000

Re: [pacman] Impossible d’exécuter les crochets de transaction

Message par jimarch »

Grand merci pour vos contributions.
Je marque ce sujet comme résolu !
Fixe : AMD Ryzen 5 2600X Six-Core Processor | 15,6 Gio de mémoire vive | GeForce GTX 1650 SUPER/PCIe/SSE2
Portable : Plasma - Kde | Notebook Clevo W740SU | Plateforme Intel Haswell avec Intel Core i7-4750HQ | Intel Iris Pro graphics 5200
Sauvegardes quotidiennes de mes système et données par BORG
Répondre