[pacman] base de donnée locale perdu! (résolu)

Applications, problèmes de configuration réseau
Répondre
Avatar de l’utilisateur
BadPotato
archer
Messages : 127
Inscription : dim. 26 août 2007, 19:57
Localisation : Canada - Québec

[pacman] base de donnée locale perdu! (résolu)

Message par BadPotato »

Bonjour,

je crois que c'est la deuxième fois que ça arrive(l'autre fois, j'ai pu réglé par moi même en réinstallant tout depuis le cache)...

en gros, pacman/yaourt voit mon système comme s'il n'avait rien d'installer..

exemple:

Code : Tout sélectionner

[root@rorqual badpotato]# pacman -S htop
resolving dependencies...
warning: dependency cycle detected:
warning: bash will be installed before its glibc dependency
warning: dependency cycle detected:
warning: readline will be installed before its ncurses dependency
warning: dependency cycle detected:
warning: readline will be installed before its glibc dependency
looking for inter-conflicts...

Targets: readline-5.2-7  bash-3.2.033-2  kernel-headers-2.6.24.3-1  
         tzdata-2008b-1  glibc-2.7-9  ncurses-5.6-6  htop-0.7-2  

Total Download Size:    0.00 MB
Total Installed Size:   36.81 MB

Proceed with installation? [Y/n]
et je n'ai pas vraiment le gout de tout réinstaller, vous voyez... juste remettre pacman sur pied

je crois que bug est survenu après avoir "essayer" d'installer un truc depuis aur ou c'était en essayant de faire fonctionner le daemon pacmandb(je suis pas sur, mais c'est dans cette période de temps)

enfin bref, j'ai remarquer que les information sur les paquet installer sont stocker dans /var/lib/pacman/local/

présentement elle est vide(bien que mon système est ok... :roll: )

est-ce qu'il aurait moyen de regénérer une liste avec yaourt ou autre?

merci
Dernière modification par BadPotato le jeu. 29 mai 2008, 12:26, modifié 1 fois.
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Message par tuxce »

Avatar de l’utilisateur
BadPotato
archer
Messages : 127
Inscription : dim. 26 août 2007, 19:57
Localisation : Canada - Québec

Message par BadPotato »

hm, ma derniere maj date d'un moment... et il a pas eu de prob jusqu'à aujourd'hui(et vu que j'ai déjà eu ce type de problème il a quelques mois..)

enfin j'ai mit loop dans mes modules de démarrage... mais sans vraiment de résultat :?

Code : Tout sélectionner

[root@rorqual badpotato]# modprobe loop
[root@rorqual badpotato]# ls /var/lib/pacman/local/
[root@rorqual badpotato]#
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Message par tuxce »

Code : Tout sélectionner

yaourt -B
sert à sauvegarder la base, je l'ai mis pour l'utiliser après avoir résolu pour se mettre en quelque sorte à l'abri en cas de mauvaise surprise...


tu as mis le module loop, tu as redemarré par la suite?
tu as parlé de pacmandb, est ce que tu l'utilises encore?
ce prog déplace la base dans un fichier qui doit être monté avec le device loop, si c'est la cause de ton souci, il faut soit redemarrer après avoir rajouter pacmandb dans les daemons et loop dans les modules, soit sans redemarrer:

Code : Tout sélectionner

modprobe loop
/etc/rc.d/pacmandb start
regarde aussi si tu n'as pas un rep /var/lib/pacman.bak
Avatar de l’utilisateur
BadPotato
archer
Messages : 127
Inscription : dim. 26 août 2007, 19:57
Localisation : Canada - Québec

Message par BadPotato »

salut,

he bien il était évidemment trop tard pour un un yaourt -B (j'avais obtenu une archive mais rien dedans)

mais en effet, en fouillant un peu partout dans mes .bak, j'ai pu m'en sortir :)


# cp -rv /var/lib/pacman.bak/pacman.bak/local/* /var/lib/pacman/local/

merci beaucoup tuxce ! :D
système à jour 8)
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Message par tuxce »

:chinois:
par contre, ce répertoire est crée par pacman-cage, tu risques d'avoir un conflit si tu l'as rajouté dans les daemons vu qu'il essaie de monter la base pacman dans /var/lib/pacman
Avatar de l’utilisateur
BadPotato
archer
Messages : 127
Inscription : dim. 26 août 2007, 19:57
Localisation : Canada - Québec

Message par BadPotato »

donc j'imagine qu'il faut modifier pour que la base devienne /var/lib/pacman/local ?

donc pour ceux qui utilise pacman-cage... il faudrait qu'il modifie leur fichiers un peu comme cela: ?? (je aussi comptais le rentrer dans le ArchScript)

Code : Tout sélectionner

sed  "\#dbroot="/*"#c dbroot=/var/lib/pacman/local" /usr/bin/pacman-cage &&
sed  "\#mount -o#c mount -o loop -t ext2 /var/lib/pacman.db /var/lib/pacman/local" /etc/rc.d/pacmandb
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Message par tuxce »

je crois que tu t'embrouilles un peu!
ils sont censés faire quoi, les 2 lignes sed?
BadPotato a écrit :donc j'imagine qu'il faut modifier pour que la base devienne /var/lib/pacman/local ?
la base est par défaut /var/lib/pacman/ (local n'étant que la partie représentant ce qui est installé)
pacman-cage ne modifie pas cela, par contre, il remplace son contenu par un fichier image ce qui a pour avantage d'accélerer la recherche/modif
en gros, c'est pareil que si tu déplaces /var/lib/pacman vers une autre partition et que tu monte cette dernière dans /var/lib/pacman.
Avatar de l’utilisateur
BadPotato
archer
Messages : 127
Inscription : dim. 26 août 2007, 19:57
Localisation : Canada - Québec

Message par BadPotato »

tuxce a écrit :je crois que tu t'embrouilles un peu!
ils sont censés faire quoi, les 2 lignes sed?
en fait, en regardant rapidement le contenu du script pacman-cage et du daemon pacmandb je m'étais dit qu'il avait moyen de modifier le point de montage(mais tout à l'heure j'étais dans les patates, en fait le nouveau point de montage devrait être dans /var/lib/pacman.bak/pacman.bak/ pour qu'il est moins de crainte... non?)

soit:

Code : Tout sélectionner

sed  "\#dbroot="/*"#c dbroot=/var/lib/pacman.bak/pacman.bak /usr/bin/pacman-cage &&
sed  "\#mount -o#c mount -o loop -t ext2 /var/lib/pacman.db /var/lib/pacman.bak/pacman.bak" /etc/rc.d/pacmandb
en fait, pour être plus clair à propos des lignes de sed celle de pacman-cage modifierais ce bout de code

Code : Tout sélectionner

dbroot="/var/lib/pacman" 
(ligne 26)

pour

Code : Tout sélectionner

dbroot="/var/lib/pacman.bak/pacman.bak"
(le fichier est assez up-to-date avec mon système)

---
puis pour le daemon pacmandb:

ça serait la ligne 27:

Code : Tout sélectionner

   mount -o loop -t ext2 /var/lib/pacman.db /var/lib/pacman
..pour:

Code : Tout sélectionner

   mount -o loop -t ext2 /var/lib/pacman.db /var/lib/pacman.bak/pacman.bak
mais encore là, je suis pas convaincu que ça fonctionnerait, vu que ce script semble assez vieu (utilisation de ext2... mais heuuu, bon)
tuxce a écrit :pacman-cage ne modifie pas cela, par contre, il remplace son contenu par un fichier image ce qui a pour avantage d'accélerer la recherche/modif
ce qui est bien au moins, c'est qu'il conserve un backup dans /mnt/tmp-pacman, à ce que je peut voir... mais c'est vrai que le fait qu'il essaye de se créer une partition n'est pas à prendre la la légère
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 »

tuxce a raison, il ne faut pas modifier le script pour qu'il utilise pacman.bak.
- Sauves tes données dans un coin, arrête le démon pacmandb (/var/lib/pacman.db doit être démonté).
- Supprimes /var/lib/pacman.db
- Replaces tes données comme il faut dans /var/lib/pacman/
- Lances le script pacman-cage en root pour qu'il recrée le fichier pacman.db
C'est tout. Le démon sera relancé au prochain démarrage.

Pour ext2 il n'est pas vieux... il subit exactement les mêmes mises à jour que ext3 sauf qu'il n'est pas journalisé. Ce choix a été fait dans pacman-cage car la journalisation est inutile et ralentirait le fonctionnement.
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Message par tuxce »

ok, c'est bon, c'est moi qui suis plus :shock:
BadPotato a écrit : en fait, en regardant rapidement le contenu du script pacman-cage et du daemon pacmandb je m'étais dit qu'il avait moyen de modifier le point de montage
pour quelle raison? tout l'intérêt de ce script est d'être transparent pour le système, le point de montage doit correspondre à l'endroit ou pacman est censé trouvé la base.
BadPotato a écrit : (mais tout à l'heure j'étais dans les patates, en fait le nouveau point de montage devrait être dans /var/lib/pacman.bak/pacman.bak/ pour qu'il est moins de crainte... non?)
même remarque
BadPotato a écrit :

Code : Tout sélectionner

sed  "\#dbroot="/*"#c dbroot=/var/lib/pacman.bak/pacman.bak /usr/bin/pacman-cage &&
sed  "\#mount -o#c mount -o loop -t ext2 /var/lib/pacman.db /var/lib/pacman.bak/pacman.bak" /etc/rc.d/pacmandb
en fait, pour être plus clair à propos des lignes de sed celle de pacman-cage modifierais ce bout de code

Code : Tout sélectionner

dbroot="/var/lib/pacman" 
(ligne 26)

pour

Code : Tout sélectionner

dbroot="/var/lib/pacman.bak/pacman.bak"
(le fichier est assez up-to-date avec mon système)
à ma connaissance, sed utilise la commande "s" pour remplacer et le * après le /, bref, ca me parait totalement faux!
BadPotato a écrit : mais encore là, je suis pas convaincu que ça fonctionnerait, vu que ce script semble assez vieu (utilisation de ext2... mais heuuu, bon)
ext2 est ce qu'il y a de plus simple et on a pas besoin de journalisation, le fait que ext2 soit sorti, il y a longtemps ne le rends pas moins efficace :)
Avatar de l’utilisateur
BadPotato
archer
Messages : 127
Inscription : dim. 26 août 2007, 19:57
Localisation : Canada - Québec

Message par BadPotato »

ohhh ok!

dans ce cas, c'est bon je touche plus rien :lol:

mais je crois qu'il faudra quand même mentionner dans le wiki, que l'on peut retrouver sa base de donnée, dans nos .bak... suite à la première utilisation de pacman-cage (à moins que je trompe encore....... :oops: )
Répondre