Dpkg et GLIBC

Bonjour !

J’ai un problème assez gros il me semble…

J’ai voulu installer un .deb avec apt-get, mais des erreurs de dépendances m’ont amené à faire quelque chose que je n’aurai pas dû faire.

Pour une histoire de dpkg qui ne comprenait pas les “Breaks”, j’ai voulu mettre DPKG à jour. J’ai fais un --force pour ce faire, et je me suis retrouvé avec un DPKG demandant un GLIBC plus élevé que ce que j’ai. J’ai tenté de mettre à jour libc6 au pif, mais là plus rien ne va.

Ma première question est donc : comment réinstaller l’ancien DPKG qui va bien avec ma config ? Il me faudrait certainement les binaires, voire les sources, mais où les trouver ?

Merci !

La libc6 est un des paquets le plus important du système, on pourrait dire que sa version conditionne quelle version de Debian tu utilises réellement,
il ne faut jamais la mettre à jour en mode graphique,
toujours d’abord tuer ta session X et basculer en console.

Si tu n’as pas modifié ton sources.list, réinstalles d’abord la libc6 dans la version qui convient
( tu peux forcer l’installation de la version que tu veux ( voir options d’apt-get ) )
et ensuite dpkg.

Bonjour, merci pour ta réponse.

Alors déjà, j’ai omis de préciser que je suis connecté en SSH à un serveur distant OVH. Donc rien de graphique.

Actuellement, étant donné que dpkg ne marche plus, apt-get non plus. Même avec “source” puisqu’il me demande dpkg-dev.

Donc pour réinstaller proprement la libc6 (ce qui me semble le bon début en effet, j’avais essayé) je ne vois pas comment faire… En plus je pense que le sources.list a été modifié, avant que je prenne la main sur ce serveur. Ce n’est certainement plus l’original.

Quelques infos :

cat /etc/debian_version

squeeze/sid

cat /proc/version

Linux version 2.6.21.5-grsec-xxxx-grs-ipv4-32 (root@kernel-32.ovh.net) (gcc version 3.3.5 (Debian 1:3.3.5-13)) #7 SMP Thu Sep 13 10:22:01 CEST 2007

J’ai aussi vu un message de apt m’indiquant que le paquet libc6 était corrompu.

J’ai envie de dire… “au secours” ? :wink:

{EDIT} Voilà la sortie de “aptitude upgrade” :

Reading package lists... Done Building dependency tree... Done Reading extended state information Initializing package states... Done Reading task descriptions... Done Building tag database... Done The following packages have unmet dependencies: dpkg: PreDepends: libc6 (>= 2.11) but 2.3.6.ds1-13etch5 is installed and it is kept back. PreDepends: xz-utils but it is not installable

Et un “apt-cache policy libc6” me renvoi ça :

libc6: Installed: 2.3.6.ds1-13etch5 Candidate: 2.11.2-7 Version table: 2.11.2-7 0 500 http://ftp.fr.debian.org squeeze/main Packages 500 http://ftp.fr.debian.org sid/main Packages 2.11.2-6+squeeze1 0 500 http://security.debian.org squeeze/updates/main Packages *** 2.3.6.ds1-13etch5 0 100 /var/lib/dpkg/status

Merci ! :wink:

Tu vas dans /var/cache/apt/archives et récupère le paquet kibc6 version 2.11.2-6+squeeze1,
sous / tu fais

dpkg-deb -x libc6-[2.11].deb .

ldconfig

et tu pries

Je vais essayer, mais je vais de toutes façons rencontrer un problème avant puisque le binaire dpkg-deb ne va même pas vouloir se lancer, ne trouvant pas les GLIBC dans les versions qui lui conviennent…

Je teste et raconte tout à l’heure (au lit là).

Merci ! :wink:

Tu peux le faire via un CD live en écrasant la version courante de la libc

Ca va être difficile car c’est un serveur hébergé comme je le disais :slightly_smiling:

Non il faudrait vraiment que j’arrive à récupérer les binaires de DPKG qui vont avec la version de ma libc6. Je pense les avoir trouvé ici :
ftp://debian.advalem.net/debian-archive … in/d/dpkg/
mais je ne sais pas lesquels correspondent le mieux, j’en ai essayé pas mal et, même si ça marche beaucoup mieux, je retrouve mes erreurs du début. Un “#apt-get -f install” me donne ça, après avoir tout téléchargé :

Fetched 73.3MB in 15s (4812kB/s) Extracting templates from packages: 100% Preconfiguring packages ... dpkg: regarding .../libc-bin_2.11.2-7_i386.deb containing libc-bin: package uses Breaks; not supported in this dpkg dpkg: error processing /var/cache/apt/archives/libc-bin_2.11.2-7_i386.deb (--unpack): unsupported dependency problem - not installing libc-bin dpkg: regarding .../libc6_2.11.2-7_i386.deb containing libc6: package uses Breaks; not supported in this dpkg dpkg: error processing /var/cache/apt/archives/libc6_2.11.2-7_i386.deb (--unpack): unsupported dependency problem - not installing libc6 Errors were encountered while processing: /var/cache/apt/archives/libc-bin_2.11.2-7_i386.deb /var/cache/apt/archives/libc6_2.11.2-7_i386.deb E: Sub-process /usr/bin/dpkg returned an error code (1)

Je ne sais vraiment pas comment régler ça maintenant.

Sur une debian externe, tu récupères le paquet via ftp, tu le déplies dans un répertoire, et tu le déplies via tar. Eventuellement utilises un programme compilé en statique.

Hum, mais comment savoir de quel paquet j’ai besoin ? Celui-là ne sait pas traiter les “Breaks”, donc lequel prendre ? Et le tar ensuite je le décompresse à la racine c’est ça ?

Merci ! :slightly_smiling:

salut

tu redémarres ton serveur en mode rescue voir avec ton manager ovh :wink:

Pour être honnête, je veux bien le faire, mais je ne sais pas c que j’y ferai ensuite :slightly_smiling:

Concrètement, je ne sais pas comment résoudre mon problème actuel, qui parle de “PreDepends”. Je pense que c’est un joli sac de noeuds. Je vous le soumet ici. Imaginons que je veuille installer vim.

#apt-get install vim Reading package lists... Done Building dependency tree... Done You might want to run 'apt-get -f install' to correct these: The following packages have unmet dependencies. dpkg: PreDepends: libc6 (>= 2.11) but 2.3.6.ds1-13etch5 is to be installed PreDepends: xz-utils but it is not going to be installed locales: Depends: glibc-2.11-1 vim: Depends: vim-common (= 2:7.2.445+hg~cb94c42c0e1a-1) but 1:7.0-122+1etch3 is to be installed Depends: vim-runtime (= 2:7.2.445+hg~cb94c42c0e1a-1) but 1:7.0-122+1etch3 is to be installed Depends: libc6 (>= 2.7) but 2.3.6.ds1-13etch5 is to be installed Depends: libgpm2 (>= 1.20.4) but it is not going to be installed E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

Ok, je tente le fix :

#apt-get -f install Reading package lists... Done Building dependency tree... Done Correcting dependencies...Done The following extra packages will be installed: libc-bin libc6 liblzma2 xz-utils Suggested packages: glibc-doc xz-lzma Recommended packages: libc6-i686 The following NEW packages will be installed libc-bin liblzma2 xz-utils The following packages will be upgraded: libc6 1 upgraded, 3 newly installed, 0 to remove and 295 not upgraded. 1 not fully installed or removed. Need to get 0B/4935kB of archives. After unpacking 520kB of additional disk space will be used. Do you want to continue [Y/n]? Y Preconfiguring packages ... dpkg: regarding .../libc-bin_2.11.2-7_i386.deb containing libc-bin: package uses Breaks; not supported in this dpkg dpkg: error processing /var/cache/apt/archives/libc-bin_2.11.2-7_i386.deb (--unpack): unsupported dependency problem - not installing libc-bin dpkg: regarding .../libc6_2.11.2-7_i386.deb containing libc6: package uses Breaks; not supported in this dpkg dpkg: error processing /var/cache/apt/archives/libc6_2.11.2-7_i386.deb (--unpack): unsupported dependency problem - not installing libc6 Errors were encountered while processing: /var/cache/apt/archives/libc-bin_2.11.2-7_i386.deb /var/cache/apt/archives/libc6_2.11.2-7_i386.deb E: Sub-process /usr/bin/dpkg returned an error code (1)

Donc j’imagine que je dois mettre DPKG à jour ? Mais si j’essaie :

# apt-get upgrade dpkg Reading package lists... Done Building dependency tree... Done You might want to run 'apt-get -f install' to correct these. The following packages have unmet dependencies. dpkg: PreDepends: libc6 (>= 2.11) but 2.3.6.ds1-13etch5 is installed PreDepends: xz-utils but it is not installed locales: Depends: glibc-2.11-1 E: Unmet dependencies. Try using -f.

[quote]PreDepends: libc6 (>= 2.11) but 2.3.6.ds1-13etch5 is installed
PreDepends: xz-utils but it is not installed[/quote]

Kézako le PreDepends ?

En plus je suis étonné car je ne pense pas être en etch.

Mais je n’exclue pas qu’il y ait eu de la m***e de faite avant mon arrivée.

Merci si quelqu’un peut tenter de m’aider pour tout remettre dans l’ordre :slightly_smiling:

ton serveur était en etch, non touché depuis des lustres, il y avait stable et non etch dans le sources.list…

met

[quote]deb archive.debian.org/debian/ etch main contrib non-free
[/quote]dans le sources.list

Salut, merci fran pour ton astuce, donc j’ai fais ça et voilà ce que j’obtiens quand je veux fixer :

# apt-get -f install Reading package lists... Done Building dependency tree... Done Correcting dependencies...Done The following packages will be REMOVED dpkg dselect libapache2-mod-python locales mailman man-db openssh-client openssh-server policycoreutils python python-all python-all-dev python-central python-dev python-minimal python-newt python-pysqlite2 python-selinux python-semanage python-subversion python-support reportbug selinux-policy-refpolicy-targeted ssh trac WARNING: The following essential packages will be removed. This should NOT be done unless you know exactly what you are doing! dpkg 0 upgraded, 0 newly installed, 25 to remove and 87 not upgraded. 1 not fully installed or removed. Need to get 0B of archives. After unpacking 94.6MB disk space will be freed. You are about to do something potentially harmful To continue type in the phrase 'Yes, do as I say!' ?]

Quand je vois tout ce qu’il veut désinstaller, je flippe un peu :slightly_smiling: Je tente ?

Oui et non, car ton dpkg n’est pas le bon. Il est impératif d’avoir de toute façon un dpkg etch. Je te suggère la manip suivante:

Voilà http://boisson.homeip.net/debian/dpkg-etch.tgz une archive contenant un dpkg-etch i386 qui devrait te convenir.

Je te suggère de faire

  1. Chargement du paquet dpkg de etch. http://archive.debian.org/debian/pool/main/d/dpkg/dpkg_1.13.26_i386.deb
  2. Chargement de cette archive. http://boisson.homeip.net/debian/dpkg-etch.tgz
  3. Essai de l’installation du paquet dpkg_1.13.26_i386.deb (via dpkg -i).
    3bis) Si ça coince

cd /

tar xzf dpkg-etch.tgz

puis réinstallation du paquet deb.
4) Si ça coince encore, là tu commence à être mal, tu peux faire le apt-get -f install
puis tu fais

cd /

tar xzf dpkg-etch.tgz

apt-get install dpkg

et ça devrait aller mieux.

Merci pour ton aide !

J’ai donc tenté l’installation du premier, il me fait une erreur très étonnante :

# dpkg -i dpkg_1.13.26_i386.deb dpkg: error processing dpkg_1.13.26_i386.deb (--install): package architecture (i386) does not match system () Errors were encountered while processing: dpkg_1.13.26_i386.deb

Pourquoi l’architecture de mon système est-elle vide ? Est-ce que je force quand même l’installation ? Est-ce que je tente ta deuxième solution ?

Je te suggère de forcer l’installation…

Ok, donc encore merci d’être là :slightly_smiling:

Voilà la suite :

# dpkg -i --force-architecture --force-depends dpkg_1.13.26_i386.deb dpkg - warning, overriding problem because --force enabled: package architecture (i386) does not match system () dpkg: regarding dpkg_1.13.26_i386.deb containing dpkg, pre-dependency problem: dpkg pre-depends on libc6 (>= 2.3.6-6) dpkg: warning - ignoring pre-dependency problem ! dpkg: regarding dpkg_1.13.26_i386.deb containing dpkg, pre-dependency problem: dpkg pre-depends on coreutils (>= 5.93-1) dpkg: warning - ignoring pre-dependency problem ! (Reading database ... 0 files and directories currently installed.) Unpacking dpkg (from dpkg_1.13.26_i386.deb) ... dpkg: dpkg: dependency problems, but configuring anyway as you request: dpkg depends on libc6 (>= 2.3.6-6); however: Package libc6 is not installed. dpkg depends on coreutils (>= 5.93-1); however: Package coreutils is not installed. Setting up dpkg (1.13.26) ...

Après ça, le apt-get -f install me demande toujours de remove plein de choses, dont DPKG.

Si j’essaye d’installer autre chose, par exemple ncftp, j’ai toujours et encore le problème avec la libc6. Je pense vraiment que c’est elle qui est bousillée :

# apt-get install ncftp Reading package lists... Done Building dependency tree... Done You might want to run 'apt-get -f install' to correct these: The following packages have unmet dependencies. dpkg: PreDepends: libc6 (>= 2.11) but 2.3.6.ds1-13etch5 is to be installed PreDepends: xz-utils but it is not installable locales: Depends: glibc-2.11-1 but it is not installable E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

Dois-je tenter quand-même le apt-get -f install, quitte à devoir resintaller dpks à la main ensuite ? Mais il va me supprimer openssh, et je suis connecté en SSH…

Ou dois-je trouver un moyen de rétablir ma libc6 ?

Merci :slightly_smiling:

EDIT

J’ai tenter de forcer l’installation de libc6 :

# apt-get install --force-yes libc6 Reading package lists... Done Building dependency tree... Done You might want to run 'apt-get -f install' to correct these: The following packages have unmet dependencies. dpkg: PreDepends: libc6 (>= 2.11) but 2.3.6.ds1-13etch10+b1 is to be installed PreDepends: xz-utils but it is not installable locales: Depends: glibc-2.11-1 but it is not installable E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

Je sèche…

Du coup j’ai retenté ce que tu m’as dis au début :

[quote]Tu vas dans /var/cache/apt/archives et récupère le paquet kibc6 version 2.11.2-6+squeeze1,
sous / tu fais

dpkg-deb -x libc6-[2.11].deb .

ldconfig

et tu pries[/quote]

J’ai pas du prier assez fort :

/var/cache/apt/archives# cp libc6_2.11.2-7_i386.deb / /var/cache/apt/archives# cd / /# dpkg-deb -x libc6_2.11.2-7_i386.deb . /# ldconfig

Et maintenant, si je tente n’importe quelle commande standard :

#ls ls: relocation error: /lib/tls/libc.so.6: symbol _dl_out_of_memory, version GLIBC_PRIVATE not defined in file ld-linux.so.2 with link time reference

Ce n’est peut-être pas la bonne version de libc6 que j’avais en archive ? J’en ai pas vu d’autre ceci-dit.

EDIT :

Je tiens à préciser que j’ai encore un accès FTP si nécessaire, pour faire du remplacement.

EDIT 2 :

Je tiens à préciser qu’en fait je n’ai plus rien du tout. Le serveur Apache est encore en route (serveur web accessible) mais c’est tout. Plus de FTP ni de SSH. Je ne peux plus accéder au serveur. Malheureusement, c’est le serveur d’une assez grosse boîte, le site fait la moitié de son CA. Je commence doucement à être mal :wink:

J’imagine que je dois passer par la console de récup ? Je vais déjà faire un tour sur IRC. Merci !

Arg, tu n’aurais pas du, ça c’était pour forcer l’installation de la libc de squeeze. Bon, tu vas sur la console de récupération et tu installes la libc6 de etch, en clair:

Tu récupères la libc6 de etch, http://archive.debian.org/debian/pool/main/g/glibc/libc6_2.3.6.ds1-13etch10+b1_i386.deb et dans la console de récupération OVH, tu l’as déplies sur la racine de ton serveur

cd [racine]

dpkg-deb -x libc6_2.3.6.ds1-13etch10+b1_i386.deb .

chroot . ldconfig

puis tu essayes

Une méthode peut être d’essayer aptitude -f install plutôt que apt-get quand ta machine sera redémarrée, il est plus subtil

aptitude install dpkg

par exemple.

Mince, je suis donc allé trop vite tout à l’heure…

Je vais essayer ton alternative. Juste pour être sûr, j’avais cette info sur le serveur MySQL, qui donne peut être une idée précise de ma version etch:

5.0.32-Debian_7etch5-log

Merci :slightly_smiling:

Sinon, tu es peut-être sur un canal IRC? :slightly_smiling: