Rollback libc6 suite à modif sources.list squeeze vers wheezy

Bonjour,

J’ai fait une boulette : sur un debian squeeze, modifier le sources.list pour pointer sur les repo wheezy. Mauvaise idée.
Après j’ai fait :
apt-get clean
apt-get update
apt-get install qpdf

J’ai pas fait gaffe, ça a mis à jour libc6 de 2.11.3-4 vers 2.13-38. Je m’en suis rendu compte lorsqu’il a voulu faire le “configure” de libc6 et j’ai annulé (kill du process). Je suis donc dans un état instable concernant libc6.

Je voudrais rollback cet upgrade libc6 et ses dépendance. J’ai remis le sources.list avec ceci :

deb http://archive.debian.org/debian/ squeeze main
deb-src http://archive.debian.org/debian/ squeeze main

deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main

Quand je fais un :

apt-get install libc-bin=2.11.3-4

Il m’insulte un peu … :

Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires :
  iso-codes discover-data ttf-dejavu-core libx11-data ttf-liberation linux-headers-2.6.32-5-common libklibc klibc-utils libthai-data pgdg-keyring libsnmp-base xkb-data libavahi-common-data
  console-terminus geoip-database wwwconfig-common gcc-4.3-base vim-runtime manpages-dev libjs-jquery mysql-common javascript-common gsfonts
Veuillez utiliser « apt-get autoremove » pour les supprimer.
Les paquets supplémentaires suivants seront installés :
  libc-bin libsnmp-base mysql-common
Paquets suggérés :
  snmp-mibs-downloader
Les paquets suivants seront ENLEVÉS :
  acpi acpi-support-base acpid adduser aecf-haproxy-1.5 apt apt-listchanges apt-utils aptitude arkeia aspell aspell-fr at base-files base-passwd bash bash-completion bc bind9-host binutils
  bsd-mailx bsdmainutils bsdutils busybox bzip2 bzr bzrtools ca-certificates colordiff console-setup coreutils cpio cpp cpp-4.3 cpp-4.4 cron curl daemon dash dbus dc debconf debconf-i18n
  debian-archive-keyring debianutils deborphan defoma dialog dictionaries-common diffutils discover dmidecode dmsetup dnsutils dpkg e2fslibs e2fsprogs eject exim4 exim4-base exim4-config
  exim4-daemon-light facter fancontrol file findutils fontconfig fontconfig-config ftp gcc gcc-4.4 gettext-base ghostscript git gnupg gpgv graphviz grep groff-base grub-common grub-pc gzip
  host hostname htop ifrench-gut ifupdown info initramfs-tools initscripts insserv install-info iotop ipcalc iproute iptables iputils-ping isc-dhcp-client isc-dhcp-common ispell jnettop kbd
  keyboard-configuration laptop-detect less libacl1 libapr1 libaprutil1 libapt-pkg-perl libart-2.0-2 libaspell15 libattr1 libavahi-client3 libavahi-common3 libbind9-60 libblkid1
  libboost-iostreams1.42.0 libbsd0 libbz2-1.0 libc-dev-bin libc6 libc6-dev libc6-i386 libcairo2 libcap2 libcdt4 libcgraph5 libcomerr2 libconfig-file-perl libcups2 libcupsimage2 libcurl3
  libcurl3-gnutls libcwidget3 libdatrie1 libdb4.6 libdb4.7 libdb4.8 libdbus-1-3 libdevmapper1.02.1 libdiscover2 libdns69 libedit2 libept1 liberror-perl libevent-1.4-2 libexpat1
  libfont-freetype-perl libfontconfig1 libfontenc1 libfreetype6 libgc1c2 libgcc1 libgcrypt11 libgd2-noxpm libgdbm3 libgeoip1 libglib2.0-0 libglib2.0-data libgmp10 libgmp3c2 libgnutls26
  libgomp1 libgpg-error0 libgpgme11 libgpm2 libgraph4 libgs8 libgssapi-krb5-2 libgssglue1 libgssrpc4 libgvc5 libgvpr1 libice6 libidn11 libisc62 libisccc60 libisccfg62 libjasper1 libjbig2dec0
  libjpeg62 libk5crypto3 libkadm5clnt-mit7 libkadm5srv-mit7 libkdb5-4 libkeyutils1 libkrb5-3 libkrb5support0 liblcms1 libldap-2.4-2 liblist-moreutils-perl liblocale-gettext-perl liblockfile1
  liblua5.1-0 liblwres60 liblzma2 libmagic1 libmpfr4 libmysqlclient16 libncurses5 libncursesw5 libneon27-gnutls libnet-ip-perl libnewt0.52 libnfnetlink0 libnfsidmap2 libopts25 libpam-modules
  libpam-runtime libpam0g libpango1.0-0 libpango1.0-common libpaper-utils libpaper1 libpathplan4 libpcap0.8 libpci3 libpcre3 libperl5.10 libpixman-1-0 libpng12-0 libpopt0 libpq5 libpth20
  libpython2.6 libreadline5 libreadline6 libregexp-assemble-perl librpcsecgss3 libruby1.8 libsasl2-2 libsasl2-modules libselinux1 libsensors4 libsepol1 libserf-0-0 libsigc++-2.0-0c2a
  libslang2 libsm6 libsnmp15 libsqlite3-0 libss2 libssh2-1 libssl-dev libssl0.9.8 libstdc++6 libsvn1 libtasn1-3 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl libthai0
  libtidy-0.99-0 libtiff4 libtokyocabinet8 libudev0 libusb-0.1-4 libuuid-perl libuuid1 libwrap0 libx11-6 libxapian22 libxau6 libxaw7 libxcb-render-util0 libxcb-render0 libxcb1 libxdmcp6
  libxdot4 libxext6 libxfont1 libxft2 libxml2 libxmu6 libxmuu1 libxpm4 libxrender1 libxslt1.1 libxt6 libyaml-0-2 linux-base linux-image-2.6-amd64 linux-image-2.6.32-5-amd64
  linux-kbuild-2.6.32 lm-sensors locales locate lockfile-progs login logrotate lsb-base lsb-release lsof lvm2 m4 make man-db mawk mlocate module-init-tools mount mpt-status multiarch-support
  mutt nano ncurses-bin net-tools netbase netcat-traditional nfs-common nmap ntp ntpdate openssh-blacklist openssh-blacklist-extra openssh-client openssh-server openssl os-prober passwd
  patch pciutils perl perl-base perl-modules pgtune portmap postgresql-9.1 postgresql-client-9.1 postgresql-client-common postgresql-common procmail procps psmisc psutils python python-antlr
  python-apt python-apt-common python-central python-chardet python-configobj python-crypto python-dateutil python-dev python-docutils python-egenix-mxdatetime python-egenix-mxtools
  python-feedparser python-gdata python-gmpy python-imaging python-jinja2 python-ldap python-libxml2 python-libxslt1 python-lxml python-mako python-markupsafe python-minimal python-mock
  python-openid python-openssl python-paramiko python-pip python-pkg-resources python-psutil python-psycopg2 python-pybabel python-pychart python-pydot python-pygments python-pyparsing
  python-pypdf python-renderpm python-reportbug python-reportlab python-reportlab-accel python-roman python-setuptools python-simplejson python-suds python-support python-tz python-unittest2
  python-utidylib python-vatnumber python-vobject python-webdav python-werkzeug python-xlwt python-yaml python-zsi python2.6 python2.6-dev python2.6-minimal readline-common reportbug rsync
  rsyslog ruby1.8 screen sed sendemail sgml-base shared-mime-info snmp snmpd ssl-cert strace subversion sudo sysbench sysstat sysv-rc sysvinit sysvinit-utils tar tasksel tasksel-data tcpd
  tcpdump telnet texinfo time traceroute tzdata ucf udev unzip usbutils util-linux vim vim-common vim-tiny w3m wamerican wfrench wget whiptail whois x-ttcidfont-conf x11-common xauth
  xfonts-encodings xfonts-utils xml-core xymon-client-mbs xz-utils zabbix-agent zlib1g zlib1g-dev
Les paquets suivants seront mis à jour :
  libsnmp-base mysql-common
Les paquets suivants seront mis à une VERSION INFÉRIEURE :
  libc-bin
ATTENTION : Les paquets essentiels suivants vont être enlevés.
Vous NE devez PAS faire ceci, à moins de savoir exactement ce
que vous êtes en train de faire.
  apt libc6 (en raison de apt) libgcc1 (en raison de apt) libstdc++6 (en raison de apt) zlib1g (en raison de apt) debian-archive-keyring (en raison de apt) gnupg (en raison de apt)
  base-files base-passwd bash debianutils (en raison de bash) dash (en raison de bash) libncurses5 (en raison de bash) bsdutils coreutils libacl1 (en raison de coreutils) libattr1 (en raison
  de coreutils) libselinux1 (en raison de coreutils) dpkg (en raison de dash) diffutils libbz2-1.0 (en raison de dpkg) xz-utils (en raison de dpkg) e2fsprogs e2fslibs (en raison de
  e2fsprogs) libblkid1 (en raison de e2fsprogs) libcomerr2 (en raison de e2fsprogs) libss2 (en raison de e2fsprogs) libuuid1 (en raison de e2fsprogs) util-linux (en raison de e2fsprogs)
  findutils install-info (en raison de findutils) grep gzip hostname login libpam0g (en raison de login) libpam-runtime (en raison de login) libpam-modules (en raison de login) mount
  libsepol1 (en raison de mount) ncurses-bin perl-base sed sysvinit initscripts (en raison de sysvinit) sysv-rc (en raison de sysvinit) sysvinit-utils (en raison de sysvinit) tar lsb-base
  (en raison de util-linux) tzdata (en raison de util-linux) debconf (en raison de util-linux) libslang2 (en raison de util-linux)
2 mis à jour, 0 nouvellement installés, 1 remis à une version inférieure, 452 à enlever et 3 non mis à jour.
11 partiellement installés ou enlevés.
Il est nécessaire de prendre 1 917 ko dans les archives.
Après cette opération, 778 Mo d'espace disque seront libérés.
Vous êtes sur le point de faire quelque chose de potentiellement dangereux
Pour continuer, tapez la phrase « Oui, faites ce que je vous dis ! »

Please, help! :slight_smile:

Forcément, si tu demandes à APT d’installer une version de libc-bin incompatible avec la version de libc6 installée, il va vouloir désinstaller cette dernière et les nombreux paquets qui en dépendent.

je voudrais revenir à des versions de libc6 et libc-bin prévues pour squeeze du coup…

As-tu essayé de réinstaller les deux (voire tous les autres paquets binaires issus du même paquet source eglibc, comme locales) en même temps ?

pas encore, je voudrais juste être “sûr” de la commande et de cette possibilité de faire un retour arrière.
Dois-je faire ces commandes ? :

apt-get clean && apt-get update 
apt-get install libc6 libc-bin

Faut-il passer d’autres options sur le apt-get install ? dois-je répondre “oui” aux différentes alertes qu’il va me faire ? pas de risque immédiat sur le rollback de libc6 ? sachant que j’ai compris qu’il n’a pas été configuré dans sa nouvelle version mais “téléchargé et dézippé”.
Merci !

D’ailleurs, avec apt-get install, je ne sais pas ce qu’il va me faire vu que :

$> apt-cache policy libc6
libc6:
  Installé : 2.13-38+deb7u10
  Candidat : 2.13-38+deb7u10
 Table de version :
 *** 2.13-38+deb7u10 0
        100 /var/lib/dpkg/status
     2.11.3-4 0
        500 http://archive.debian.org/debian/ squeeze/main amd64 Packages

et :

$> apt-cache policy libc-bin
libc-bin:
  Installé : 2.13-38+deb7u10
  Candidat : 2.13-38+deb7u10
 Table de version :
 *** 2.13-38+deb7u10 0
        100 /var/lib/dpkg/status
     2.11.3-4 0
        500 http://archive.debian.org/debian/ squeeze/main amd64 Packages

comment revenir à la version 2.11 du coup ?

En forçant la version comme tu l’avais fait dans ton message initial, je suppose. Mais il faudra peut-être inclure d’autres paquets comme libc6-dev et libc6-i386 pour éviter qu’ils soient désinstallés.

Ok merci pour ton aide.

Enfin, pour confirmer ce que je devrais faire, peux-tu valider ceci STP ?

apt-get install libc-bin=2.11.3-4 libc6-dbg=2.11.3-4 libc6-dev=2.11.3-4 libc6-i386=2.11.3-4 libc6-pic=2.11.3-4 libc6-prof=2.11.3-4 libc-bin=2.11.3-4

Et je confirme à la question :

Vous êtes sur le point de faire quelque chose de potentiellement dangereux
Pour continuer, tapez la phrase « Oui, faites ce que je vous dis ! »

Autre question, j’ai vu sur stackoverflow ceci :

apt-get download libc6
cd /var/cache/apt/archives/
dpkg --force-downgrade -i <full_package_name>.deb

Est-ce préférable ou identique ?

Il faut faire un pinning de 900 (force install) pour tous les paquets squeeze, et -1 (force deinstall) sur les paquets wheezy.
cf https://help.ubuntu.com/community/DowngradeHowto
Normalement, tu t’en sors lors de l’upgrade avec une demande de confimation que tu veux vraiment downgrader et ça doit (toujours normalement) se faire tout seul.

Mais personnellement, si ce n’est pas un serveur ou si tu as des contraintes de dev, je remettrais les depots squeeze (voire jessie) et je dist-upgraderais complètement.
J’ai passé une vieille squeeze en jessie il y a qques jours. Il y a eu des cahots et quelques cheveux en moins, mais au final c’est passé.

Pardon, j’ai pris le premier lien qui venait sur le pinning, et pas de bol c’est une daube.
Celui là m’a l’air pas mal https://help.ubuntu.com/community/PinningHowto , et sinon, RTFM https://wiki.debian.org/AptPreferences

Tu veux dire les dépots **wheezy (**voire jessie)" ?

Sinon, ok et merci pour ta réponse. Je vais essayer d’appliquer le pinning.
Par contre, que veux-tu dire par “et -1 (force deinstall) sur les paquets wheezy” STP ?

$> cat /etc/apt/apt.conf

APT::Default-Release "squeeze";

$> cat /etc/apt/sources.list

deb http://archive.debian.org/debian/ squeeze main
deb-src http://archive.debian.org/debian/ squeeze main

deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main

$> cat /etc/apt/preferences.d/back-to-squeeze

Package: *
Pin: release n=wheezy
Pin-Priority: -1

Package: *
Pin: release n=squeeze
Pin-Priority: 900

$> apt-get update
ou
$> apt-get upgrade
?

Je ne peux rien valider du tout. apt-get affiche ce qu’il compte faire avant de demander confirmation, tu peux vérifier si cela te convient. Normalement il doit downgrader les paquets listés, ne supprimer que des paquets qui viennent de wheezy et n’existent pas dans squeeze, et n’installer aucun nouveau paquet.