Mise à niveau d'une vieille installation de debian

Bonjour tout le monde,

j’ai décidé de recycler une vieille machine sous debian qui me servait de passerelle il y a quelques années pour en faire un serveur VPN.
Seulement voilà, après toute ces années il ne suffit visiblement pas d’un apt-get update, apt-get upgrade et apt-get dist-upgrade car…

J’ai eu un problème de dépendance qui mettait en jeu le paquet “sysvinit” du coup je l’ai desinstallé pour le réinstaller, seulement voilà, maintenant ce sont d’autres dépendances qui posent problème :

[quote]bibine:~# apt-get install sysvinit
Reading Package Lists… Done
Building Dependency Tree… Done
You might want to run `apt-get -f install’ to correct these:
Sorry, but the following packages have unmet dependencies:
binutils: Depends: libc6 (>= 2.7-1) but 2.2.5-11.5 is to be installed
libc-dev-bin: Depends: libc6 (> 2.10) but 2.2.5-11.5 is to be installed
libc6-dev: Depends: libc6 (= 2.10.2-2) but 2.2.5-11.5 is to be installed
sysvinit: Depends: libc6 (>= 2.3) but 2.2.5-11.5 is to be installed
Depends: libselinux1 (>= 1.32) but it is not going to be installed
Depends: libsepol1 (>= 1.14) but it is not going to be installed
PreDepends: initscripts but it is not going to be installed
PreDepends: sysv-rc but it is not going to be installed or
file-rc but it is not going to be installed
PreDepends: sysvinit-utils (>= 2.86.ds1-66) but it is not going to be installed
E: Unmet dependencies. Try ‘apt-get -f install’ with no packages (or specify a solution).
[/quote]

Petit problème, il me semble que sysvinit est indispensable au bon démarrage de la machine, or je n’aurai aucun accès physique à celle-ci avant 6 mois, je ne peux pas me risquer à un reboot tant que je n’ai pas la certitude qu’au moins sshd démarrera correctement, il faut absolument que je puisse régler ces problèmes.

Voilà ce que donne un apt-get -f install :

[quote]bibine:~# apt-get -f install
Reading Package Lists… Done
Building Dependency Tree… Done
Correcting dependencies… Done
The following extra packages will be installed:
libc6
1 packages upgraded, 0 newly installed, 0 to remove and 149 not upgraded.
5 packages not fully installed or removed.
Need to get 0B/3837kB of archives. After unpacking 3478kB will be freed.
Do you want to continue? [Y/n] Y
Preconfiguring packages …
tar: ./md5sums: time stamp 2009-11-24 11:50:11 is 627755171 s in the future
tar: ./preinst: time stamp 2009-11-24 11:50:07 is 627755167 s in the future
tar: ./shlibs: time stamp 2009-11-24 11:50:06 is 627755166 s in the future
tar: ./symbols: time stamp 2009-11-24 11:50:06 is 627755166 s in the future
tar: ./control: time stamp 2009-11-24 11:50:11 is 627755171 s in the future
tar: ./postinst: time stamp 2009-11-24 11:50:07 is 627755167 s in the future
tar: ./postrm: time stamp 2009-11-24 11:50:07 is 627755167 s in the future
tar: ./templates: time stamp 2009-11-24 11:49:56 is 627755156 s in the future
tar: ./conffiles: time stamp 2009-11-24 11:50:07 is 627755167 s in the future
(Reading database … 15450 files and directories currently installed.)
Preparing to replace libc6 2.2.5-11.5 (using …/libc6_2.10.2-2_i386.deb) …
Checking for services that may need to be restarted…
Checking init scripts…
readlink: invalid option – e
usage: readlink [-n] [-f] symlink
readlink: invalid option – e
usage: readlink [-n] [-f] symlink
readlink: invalid option – e
usage: readlink [-n] [-f] symlink
readlink: invalid option – e
usage: readlink [-n] [-f] symlink
readlink: invalid option – e
usage: readlink [-n] [-f] symlink
readlink: invalid option – e
usage: readlink [-n] [-f] symlink
readlink: invalid option – e
usage: readlink [-n] [-f] symlink
readlink: invalid option – e
usage: readlink [-n] [-f] symlink
WARNING: this version of the GNU libc requires kernel version
2.6.18 or later. Please upgrade your kernel before installing
glibc.

The installation of a 2.6 kernel could ask you to install a new libc
first, this is NOT a bug, and should NOT be reported. In that case,
please add lenny sources to your /etc/apt/sources.list and run:
apt-get install -t lenny linux-image-2.6
Then reboot into this new kernel, and proceed with your upgrade
dpkg: error processing /var/cache/apt/archives/libc6_2.10.2-2_i386.deb (–unpack ):
subprocess pre-installation script returned error exit status 1
Errors were encountered while processing:
/var/cache/apt/archives/libc6_2.10.2-2_i386.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
[/quote]

La il me faudrait mettre à jour le noyau et redemarrer… mais je crains de ne pas pouvoir redemarrer sans sysvinit !

Voici mon sources.list :

[quote]bibine:~# cat /etc/apt/sources.list

deb ftp.fr.debian.org/debian/ stable main non-free contrib
deb-src ftp.fr.debian.org/debian/ stable main non-free contrib

deb security.debian.org/ stable/updates main contrib non-free

deb ftp2.fr.debian.org/debian/ testing main contrib non-free
deb-src ftp.fr.debian.org/debian/ testing main contrib non-free

deb ftp.fr.debian.org/debian/ etch main contrib non-free
deb-src ftp.fr.debian.org/debian/ etch main contrib non-free
[/quote]

Et un autre exemple du foirage d’apt quand j’essaie d’installer un paquet quelconque:

[quote]bibine:~# apt-get install emacs
Reading Package Lists… Done
Building Dependency Tree… Done
You might want to run `apt-get -f install’ to correct these:
Sorry, but the following packages have unmet dependencies:
binutils: Depends: libc6 (>= 2.7-1) but 2.2.5-11.5 is to be installed
emacs: Depends: emacs23 or
emacs23-lucid but it is not going to be installed or
emacs23-nox but it is not going to be installed
libc-dev-bin: Depends: libc6 (> 2.10) but 2.2.5-11.5 is to be installed
libc6-dev: Depends: libc6 (= 2.10.2-2) but 2.2.5-11.5 is to be installed
E: Unmet dependencies. Try ‘apt-get -f install’ with no packages (or specify a solution).
[/quote]

Pour information, c’est une installation qui tourne sur le noyau 2.4.18-bf2.4… Je vous ai dit que c’était pas tout jeune !

Si quelqu’un a des pistes je suis preneur !

Déjà tu peux corriger la date de la machine, on dirait qu’elle se croit aux alentours de 1990.

Si je ne m’abuse 2.4.18 c’était la version du noyau de woody. Depuis il y a eu sarge, etch, et lenny l’actuelle stable. Le chemin de migration est relativement balisé d’une version à la suivante, beaucoup moins quand on saute autant de versions. Il risque d’y avoir trop de changements de dépendances entre woody et lenny pour que la migration soit réalisable de façon normale.

Par conséquent ce que je ferais, c’est passer par chaque version intermédiaire en suivant le chemin préconisé dans les notes de publication de chacune. A noter que les dépôts des versions antérieures à etch ont été retirés des miroir principaux et archivés sur archive.debian.org. Eventuellement, pour limiter le travail je supprimerais le maximum de paquets non indispensables aupavant, quitte à les réinstaller en version actuelle à la fin.

Pour commencer, tu peux remettre woody (si c’est bien la version installée, cf. /etc/debian_version qui contiendra 3.0 dans ce cas) dans sources.list, réinstaller sysvinit et faire les mises à jour avant de commencer la migration.

Salut,

merci pour ta réponse rapide.

J’ai donc supprimé tout les dépots et mis celui ci qui correspond apparemment aux depots woody:

un apt-get install sysvinit a pu me virer quelques paquets supplémentaires, mais il bloque sur binutils :

[quote]bibine:~# apt-get install sysvinit
Reading Package Lists… Done
Building Dependency Tree… Done
Sorry, sysvinit is already the newest version.
The following packages will be REMOVED:
binutils
0 packages upgraded, 0 newly installed, 1 to remove and 1 not upgraded.
3 packages not fully installed or removed.
Need to get 0B of archives. After unpacking 7717kB will be freed.
Do you want to continue? [Y/n]
(Reading database … 14446 files and directories currently installed.)
Removing binutils …
FATAL: kernel too old
/var/lib/dpkg/info/binutils.postrm: line 7: 3267 Segmentation fault ldconfig
dpkg: error processing binutils (–remove):
subprocess post-removal script returned error exit status 139
Errors were encountered while processing:
binutils
E: Sub-process /usr/bin/dpkg returned an error code (1)
[/quote]

Comment je pourrais forcer la desinstallation de binutils?

EDIT : peut être que ça interessera certains, voici une liste de dépots pour différentes versions de Debian :

cure.nom.fr/blog/categories/7-Debian

Au fait:

bibine:~# cat /etc/debian_version
5.0.3

Ca doit être du au fait que j’avais les depots de etch jusqu’à tout à l’heure… histoire d’ajouter encore un peu à la confusion !

Autre conseil lorsqu’on change de version: commencer par mettre à jour apt mis ensuite seulement faire le reste des mises à jour avec l’apt upgradé.
J’ai peur que ton passage (provisoire) en lenny ai fait des dégats.
Le plus simple ne serait il pas de faire une réinstall directe de lenny via un chroot ?

J’y ai réflechi mais le fait de ne pas avoir d’accès physique à la machine n’est pas un problème?
Vu que sysvinit est manquant, je ne pourrai pas rebooter correctement sur l’ancien système, et il me semble que c’est nécessaire au moins une fois lors de l’installation en chroot?

Tu vas d’abord réinstaller la libc6 de woody - mais la libc étant apparemment “cassée” j’ai bien peur que tu doives repartir à 0 :neutral_face:

Ayant été dans ton cas y a quelques temps (woody r3 -> lenny), je confirme ce que dit Pascal, il faut upgrader version par version - et encore ça a été un chemin de croix :smiling_imp:

[quote=“jem”]J’y ai réflechi mais le fait de ne pas avoir d’accès physique à la machine n’est pas un problème?
[/quote]
Ca peut poser problème, le reboot est obligatoire pour passer de sarge(2.4.27) à etch (2.6.18), sinon tu vas avoir le même problème que plus haut, et t’es pas sur de pouvoir réacceder à la machine via ssh au reboot :wink:

faudrait que je puisse installer debootstrap pour pouvoir faire une installe en chrootant…

Je sens que je vais devoir passer une journée au téléphone pour faire une nouvelle install ( faire faire les disquettes d’install minimal etc…)…

Si quelqu’un voit une solution plus élégante, je prends bien volontiers !

Si j’installais un noyau 2.6, est-ce que la machine pourra booter correctement dessus en l’absence de sysvinit?

Le paquet sysvinit contient entre autres le programme init qui est le premier processus exécuté par le noyau (modulo l’initrd) et le père de tous les autres processus, donc non le système ne redémarrera pas sans lui quel que soit le noyau. Le noyau démarrera, l’initrd s’exécutera le cas échéant, mais sans init les scripts de démarrage ne seront pas exécutés, et notamment les services comme sshd ne seront pas lancés.

Mais le message suivant me laisse penser que sysvinit est installé.

Reste à savoir lequel. Que raconte la commande suivante ?

Hmmm en effet, il semblerait que sysvinit soit bien installé. Il me semblait pourtant ne pas avoir pu le réinstaller.

En fait le problème est sur binutils…

Le paquet binutils n’est pas indispensable. En fait d’après le message d’erreur le problème est sur ldconfig qui fait partie du paquet libc6. Dans ton premier message, on voit que tu as forcé l’installation du paquet libc6 2.10.2-2 de squeeze/testing, à cause du sources.list modifié qui contient testing. Le message d’avertissement signalait que cette version de libc avait besoin d’un noyau 2.6.18 au moins, d’où tes déboires ultérieurs.

J’essaierais donc en premier de réinstaller la libc6 de woody, en forçant si nécessaire.

PS : concernant l’installation d’un noyau 2.6 sur woody, j’ai peur que ce ne soit pas possible même en le compilant soi-même car si je ne m’abuse woody ne supporte par les noyaux 2.6 et n’a pas le paquet module-init-tools qui succède à modutils pour les noyaux 2.6. Il faut donc installer au moins sarge (j’ai fait tourner un 2.6.28 compilé maison sans initrd avec sarge). En plus ça implique de redémarrer et dans l’état où est l’installation il y a un risque que ça ne se passe pas bien.

EDIT : tu es sûr de l’URL du dépôt pour sarge ? Pourquoi ne pas utilisé l’archive officielle de Debian que j’ai suggérée ?

avec “apt-get update” derrière pour vérifier que c’est bon.

Hello !

En effet c’est peut-être mieux avec le dépot officiel. Je pensais qu’il n’y avait plus de dépot puisque cette version n’est plus supportée.

apt-get s’acharne à vouloir désinstaller binutils:

[quote]bibine:~# apt-get install libc6
Reading Package Lists… Done
Building Dependency Tree… Done
The following extra packages will be installed:
libdb1-compat
The following packages will be REMOVED:
binutils
The following NEW packages will be installed:
libdb1-compat
1 packages upgraded, 1 newly installed, 1 to remove and 140 not upgraded.
3 packages not fully installed or removed.
Need to get 0B/4917kB of archives. After unpacking 4985kB will be freed.
Do you want to continue? [Y/n]
(Reading database … 14433 files and directories currently installed.)
Removing binutils …
FATAL: kernel too old
/var/lib/dpkg/info/binutils.postrm: line 7: 4985 Segmentation fault ldconfig
dpkg: error processing binutils (–remove):
subprocess post-removal script returned error exit status 139
Errors were encountered while processing:
binutils
E: Sub-process /usr/bin/dpkg returned an error code (1)
[/quote]

Comment faire pour retirer binutils de la liste des packages à désinstaller?

essaye aptitude à la place d apt-get
(il a réussi plus d’une fois à me résoudre des dépendances que apt …)
laisse une seule ligne (sarge?) et tente un aptitude avant tout.

Et debootstrap existe sous woody il me semble?
par contre faut bien être sur .config du sshd
et que ton matos soit encore supporté par le 2.6 (au moins pour le chipset dd et réseau)
c’est un peu risqué mais tu démarre sur du propre.

Au pire il existe d’autre init pour debian mais pas testé(à tester sur autre machine avant):

binutils n’est pas le problème, car il n’est pas le seul paquet dont les scripts d’installation/suppression exécutent ldconfig. Tu remarqueras d’ailleurs que ta commande n’aurait pas pour résultat de réinstaller libc6 dans sa version antérieure de toute façon puisqu’il ne fait pas partie des paquets annoncés comme mis à jour.

Pour voir j’ai réinstallé une woody puis mis les mêmes dépôts que toi dans sources.list (donc etch, lenny et squeeze) et fait “apt-get install libc6”, ce qui a installé libc6 de squeeze qui ne marche pas avec le noyau 2.4.18. A propos j’ai dit une petite bêtise, dans squeeze ldconfig n’est plus dans le paquet libc6 mais dans libc-bin donc libc6 dépend (et qui a donc été installé). C’est là que ça devient rigolo, après avoir remis les dépôts de woody dans sources.list.

“apt-get install libc6” me dit que libc6 est déjà à la dernière version et ne fait rien.
“apt-get --reinstall install libc6” charge libc6 de woody mais refuse de l’installer car cela écraserait des fichiers appartenant à libc-bin (évidemment), qui est lui-même devenu orphelin. Ce n’est pas un problème de dépendance, donc -f n’y change rien.

Je tente le tout pour le tout et demande “apt-get remove libc-bin”, qui s’exécute à peu près. Et je redemande la réinstallation de libc6. Problème : le script de désinstallation appelle ldconfig qui n’existe plus, donc ça plante. Tant pis, au point où j’en suis je crée un /sbin/ldconfig bidon avec une copie de /bin/true qui ne retournera pas d’erreur au moins, et je retente. De toute façon si ça passe, le script de post-installation de libc6 exécutera à nouveau ldconfig, le bon qui aura été réinstallé cette fois. Là ça passe. C’est du bricolage, mais tu peux essayer. Cependant je n’avais mis à jour que libc6, donc tu rencontreras peut-être d’autres problèmes.