Page 1 sur 1

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

Publié : jeu. 29 mai 2008, 11:30
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

Publié : jeu. 29 mai 2008, 11:39
par tuxce

Publié : jeu. 29 mai 2008, 12:00
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]#

Publié : jeu. 29 mai 2008, 12:15
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

Publié : jeu. 29 mai 2008, 12:26
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)

Publié : jeu. 29 mai 2008, 12:37
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

Publié : jeu. 29 mai 2008, 15:08
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

Publié : jeu. 29 mai 2008, 15:22
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.

Publié : jeu. 29 mai 2008, 18:58
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

Publié : jeu. 29 mai 2008, 19:08
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.

Publié : jeu. 29 mai 2008, 19:10
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 :)

Publié : ven. 30 mai 2008, 02:13
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: )