[PACMAN] Pb libarchive qui bloque toute maj

Questions et astuces concernant l'installation et la configuration d'archlinux
Répondre
Incognito
newbie
Messages : 6
Inscription : mer. 04 juil. 2007, 08:32

[PACMAN] Pb libarchive qui bloque toute maj

Message par Incognito »

Bonjour à tous, j'ai en fait un très très gros soucis, mon pacman est devenu inutilisable (et yaourt aussi donc) suite à une mise à jour du package libarchive-1 vers libarchive-2

Quelle que soit la commande que j'essaie j'obtiens le message suivant :

Code : Tout sélectionner

pacman: error while loading shared libraries: libarchive.so.1: cannot open shared object file: No such file or directory
impossible de réinstaller libarchive ou pacman, je suis vraiment bloqué... Si qqun a une solution à me proposer je l'essaierai volontier :wink:
galactose
archer
Messages : 135
Inscription : dim. 01 juil. 2007, 14:55

Message par galactose »

[Le post du newbie]
Y a sûrement une solution autre, mais tu peux toujours essayer d'installer libarchive-1 en le compilant. Ensuite peut-être faire une MAJ de Pacman, réinstaller libarchive-2, essayer de voir si y a conflit avec le 1, etc...
Avatar de l’utilisateur
vincentxavier
Elfe
Messages : 778
Inscription : ven. 11 août 2006, 18:17
Localisation : Epinay sur Seine (93)

Message par vincentxavier »

Code : Tout sélectionner

ln -s /usr/lib/libarchive.so.1 $(slocate libarchive | grep so$)
Warranty

THIS ADVICE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

En clair, je ne pourrais être tenu responsable des dégats causés par l'utilisation de mes conseils

Image
Avatar de l’utilisateur
vincentxavier
Elfe
Messages : 778
Inscription : ven. 11 août 2006, 18:17
Localisation : Epinay sur Seine (93)

Message par vincentxavier »

En même temps, ma réponse est mauvaise, car je balance une solution sans explication ....
En fait, la solution est de faire juste un lien symbolique ...
Warranty

THIS ADVICE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

En clair, je ne pourrais être tenu responsable des dégats causés par l'utilisation de mes conseils

Image
Avatar de l’utilisateur
wain
Maître du Kyudo
Messages : 1854
Inscription : ven. 11 août 2006, 19:15
Localisation : Nancy (54)

Message par wain »

la meilleure solution quand pacman ne fonctionne plus et d'utiliser la commande "pacman-static" qui elle ne dépend pas des librairies habituelles, ni même de glibc.

Code : Tout sélectionner

pacman-static -S libarchive
galactose
archer
Messages : 135
Inscription : dim. 01 juil. 2007, 14:55

Message par galactose »

Hey trop bien ça wain ! Merci du tuyau :P C'est marqué dans le man de pacman ? :?
Avatar de l’utilisateur
wain
Maître du Kyudo
Messages : 1854
Inscription : ven. 11 août 2006, 19:15
Localisation : Nancy (54)

Message par wain »

galactose a écrit :Hey trop bien ça wain ! Merci du tuyau :P C'est marqué dans le man de pacman ? :?
Non, si ça peut te rassurer, la doc de pacman ne mentionne pas l'existence de pacman-static. Je le connais parcequ'il est utilisé pour faire une installation en chroot, et aussi parceque je me suis retrouvé coincé un jour après une mise à jour catastrophique de glibc où seul pacman-static pouvait me sortir de là :?
Incognito
newbie
Messages : 6
Inscription : mer. 04 juil. 2007, 08:32

Message par Incognito »

Tout d'abord merci pour vos réponses.

J'ai testé en 1er la solution de wain mais apparemment pacman-static n'existe pas sur mon install...

La solution du lien symbolique a fontionné, en dirigeant /usr/lib/libarchive.so.1 vers /usr/lib/libarchive.so

Ouf! pacman remarche, merci à tous pour vos propositions :D
Avatar de l’utilisateur
vincentxavier
Elfe
Messages : 778
Inscription : ven. 11 août 2006, 18:17
Localisation : Epinay sur Seine (93)

Message par vincentxavier »

En fait parfois, il manque des liens symboliques entre différentes appellations du même objet partagé (*.so.ver comme Shared Object). Il faut donc refaire les liens à la main. Ceci vient du fait que parfois les updates se sont mal déroulées !
Warranty

THIS ADVICE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

En clair, je ne pourrais être tenu responsable des dégats causés par l'utilisation de mes conseils

Image
galactose
archer
Messages : 135
Inscription : dim. 01 juil. 2007, 14:55

Message par galactose »

D'où l'utilité d'essayer de comprendre le système :wink:

J'vous raconte pas la galère quand j'essayais même pas de comprendre ce que /usr/share/, /usr/bin/ et /usr/lib/ renfermaient :?
Avatar de l’utilisateur
vincentxavier
Elfe
Messages : 778
Inscription : ven. 11 août 2006, 18:17
Localisation : Epinay sur Seine (93)

Message par vincentxavier »

Pour ca que ma réponse est mauvaise car elle donne une solution technique sans explication :S
Warranty

THIS ADVICE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

En clair, je ne pourrais être tenu responsable des dégats causés par l'utilisation de mes conseils

Image
galactose
archer
Messages : 135
Inscription : dim. 01 juil. 2007, 14:55

Message par galactose »

vincentxavier a écrit :

Code : Tout sélectionner

$(slocate libarchive | grep so$)
Ca veut dire quoi ça ?
Avatar de l’utilisateur
mélodie
Maître du Kyudo
Messages : 2784
Inscription : lun. 30 oct. 2006, 02:06
Localisation : Pyrénées

Message par mélodie »

galactose a écrit :
vincentxavier a écrit :

Code : Tout sélectionner

$(slocate libarchive | grep so$)
Ca veut dire quoi ça ?
J'aime bien les devinettes quand je connais une partie de la réponse, je vais essayer de jouer. :P

$ veut dire 'argument'.

tout ce qui est entre les parenthèses c'est l'argument.

slocate est invoqué pour chercher sur tout le disque dur.

(vincentxavier, est-ce que ce n'est pas un peu osé ça si il y a des autres GnuLinux installés et montés ? un "find / -name 'name'" voir un "find /usr/lib -name 'name'" ne serait-il pas plus précis ?).

Le tube dit quelque chose comme : avec le ou les fichiers nommés libarchive que slocate aura affiché, grep produira/sélectionnera celui qui contient la chaîne 'so', car à gauche d'un tube '|' on affiche des données et à droite on produit... quelque chose comme ça.

Au total sa commande dit de lier symboliquement (ln -s) à l'argument '$' défini par le résultat de la commande entre parenthèses, c'est à dire, lier le fichier /usr/lib/libarchive.so.1 à n'importe quel fichier nommé libarchive et comportant la chaîne de caractères 'so'.

Alors, est-ce que j'ai gagné ? :D

PS: avant de lancer locate ou slocate, ça peut être utile de lancer en root updatedb.
galactose
archer
Messages : 135
Inscription : dim. 01 juil. 2007, 14:55

Message par galactose »

Alors dans le texte maintenant je comprend ; ce que je comprend pas, c'est à quoi ça sert :P Genre moi mes liens symboliques, je fais :

Code : Tout sélectionner

ln -s /path/file /otherpath/
J'crois que je vais aller faire man ln et man grep :D
Avatar de l’utilisateur
vincentxavier
Elfe
Messages : 778
Inscription : ven. 11 août 2006, 18:17
Localisation : Epinay sur Seine (93)

Message par vincentxavier »

mélodie a écrit :
galactose a écrit :
vincentxavier a écrit :

Code : Tout sélectionner

$(slocate libarchive | grep so$)
Ca veut dire quoi ça ?
J'aime bien les devinettes quand je connais une partie de la réponse, je vais essayer de jouer. :P

$ veut dire 'argument'.

tout ce qui est entre les parenthèses c'est l'argument.

slocate est invoqué pour chercher sur tout le disque dur.

(vincentxavier, est-ce que ce n'est pas un peu osé ça si il y a des autres GnuLinux installés et montés ? un "find / -name 'name'" voir un "find /usr/lib -name 'name'" ne serait-il pas plus précis ?).

Le tube dit quelque chose comme : avec le ou les fichiers nommés libarchive que slocate aura affiché, grep produira/sélectionnera celui qui contient la chaîne 'so', car à gauche d'un tube '|' on affiche des données et à droite on produit... quelque chose comme ça.

Au total sa commande dit de lier symboliquement (ln -s) à l'argument '$' défini par le résultat de la commande entre parenthèses, c'est à dire, lier le fichier /usr/lib/libarchive.so.1 à n'importe quel fichier nommé libarchive et comportant la chaîne de caractères 'so'.

Alors, est-ce que j'ai gagné ? :D

PS: avant de lancer locate ou slocate, ça peut être utile de lancer en root updatedb.
$(machin) ou `machin` exécute et renvoie la sortie de la fonction machin. La ce résultat est passé comme second argument de ln via un tube (|) qui redirige la sortie standard de la commande de droite vers l'entrée standard de la commande de gauche. 'slocate libarchive' permet de localiser tout les fichiers dont le nom contient "libarchive". Le résultat de cette commande est filtré avec grep pour ne garder que ce qui finit par .so (*.so$)
Warranty

THIS ADVICE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

En clair, je ne pourrais être tenu responsable des dégats causés par l'utilisation de mes conseils

Image
Répondre