[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Migration 32 bits vers 64 bits gros problème avec dpkg testing



Bonjour Philippe,

Philippe Merlin, le 2017-05-04 à 14:53:16 CEST :
> Sur ce poste est installé la Debian testing à jour et j'ai
> essayé de migrer d'une version 32 bits vers  64 bits en suivant
> la doc
>
>       https://wiki.debian.org/CrossGrading

Intéressante manipulation, j'ai essayé dans une machine
virtuelle.  Le moins qu'on puisse dire, c'est que c'est délicat.
Ma configuration était une machine en Testing avec uniquement les
composants de base, donc je suis probablement passé à côté des
problèmes de configuration.

Avant toute chose, j'espère que tu as une copie de sauvegarde des
donnée de ta machine et de sa configuration et que tu sais
comment la restaurer.

Les liens en bas de la page du wiki CrossGrading renvoient sur
d'autres retours d'expérience. Il ne faut pas hésiter à les
consulter également pour voir leurs approches.  En particulier,
j'ai trouvé de l'inspiration dans l'article suivant :


http://blog.zugschlus.de/archives/972-How-to-amd64-an-i386-Debian-installation-with-multiarch.html

Ce n'est pas mentionné dans ton courriel, mais je pars du
principe que tu as pu installer tes commandes tar, dpkg et apt en
version 64bits :

        $ file $(which tar)
        /bin/tar: ELF 64-bit LSB shared object, ...
        $ file $(which dpkg)
        /usr/bin/dpkg: ELF 64-bit LSB shared object, ...
        $ file $(which apt-get)
        /usr/bin/apt-get: ELF 64-bit LSB shared object, ...

Si ce n'est pas le cas et que quelque chose a cassé, les
manipulations à base de `ar' et de `busybox tar' mentionnée dans
les retours d'expérience peuvent éventuellement te sauver la
mise.

> Tout a très bien marché, j'ai bien migré vers une version 64
> bits de la testing  qui fonctionne très bien avec un noyau AMD
> 64 et des librairies 32 bits Merci Multi-Arch , mais il y a un
> mais.... Si je veux migrer tous les paquets  installés de 32
> bits à 64 bits par la commande :
>
>       dpkg --get-selections|grep  :i386 |sed -e s/:i386/:amd64/ | dpkg --set-selections
>
> J'obtiens une liste de warning  :
>
>       package not in status nor available database a line xxx : xxxx:amd64
>
> une ligne par paquet répondant à dpkg --get-selections
> On dirait que les paquets amd64 sont ignorés.

Les paquets amd64 sont effectivement ignorés.  L'erreur se
produit dans mon cas d'utilisation aussi.  Un gourou de dpkg aura
sans doute la solution pour résoudre ce problème proprement.
Pour ma part, je suis passé par un fichier temporaire `packages`
pour pouvoir travailler dedans avec un éditeur de texte :

        dpkg --get-selections    \
        | grep :i386             \
        | sed -e s/:i386/:amd64/ \
        | awk '{print $1}'       \
        > packages

Le fichier `packages` contient une liste des paquets, un par
ligne, sans le champ d'état d'installation.  Je le réutilise pour
une première tentative d'installation des paquets en 64bits :

        apt-get install $(xargs < packages)

À la première passe, `apt` sort des erreurs sur des paquets
introuvable.  Il faut les retirer de la liste.  Typiquement les
images linux 686 sont en cause, mais éventuellement certaines
versions de paquets devenus obsolètes, si des mises à jour sont
passées pendant la crossgrade.  C'est souvent le cas des paquets
qui ont leur numéro de version dans leur nom, pour faciliter
l'installation de versions différentes sur un même système.

En relançant la commande sans les erreurs sur les paquets
indisponibles, l'installation démarre.  Étant donné les
composants de cœur en 32bits qui nécessiteront un
désinstallation, il est vraisemblable qu'apt demande de confirmer
l'opération par la saisie au clavier d'une locution: "Yes, do as
I say!" sur une machine localisée en en_US.  La désinstallation
de perl-base:i386 dans mon cas a été la cause du message.  Si
l'opération plante, passer un coup `apt-get -f install` avant de
recommencer avec la liste complète des paquets.

Il est probable que certain services récalcitrants bloquent le
gestionnaire de paquet.  Dans ce cas j'ai eu la chance de pouvoir
désinstaller manuellement le composant, puis le réinstaller après
coup dans sa nouvelle architecture.  En l'occurrence, il
s'agissait du passage de acpid:i386 à acpid:amd64.

Quand une tentative d'installation de l'ensemble des paquets
termine en disant que tout est bien installé et qu'aucune
opération n'est à effectuer, alors la partie 64bits du système
est normalement complète.  Les paquets en 32bits peuvent être
enlevés :

        dpkg --get-selections \
        | grep  :i386         \
        | awk '{print $1}'    \
        > packages.i386

        apt-get remove $(xargs < packages.i386)

À ce stade, le système ne doit plus comporter de binaire 32bits
sur disque et être capable de tourner juste avec les paquets
amd64.  Reste à redémarrer la machine pour arrêter les processus
32bits encore en cours d'exécution, tel l'init.

Si la machine est capable de redémarrer correctement avec ses
services opérationnels après ce traitement, alors la bouteille
réservée aux jours de fêtes sera amplement méritée.  :-)

À plus,
-- 
Étienne Mollier <etienne.mollier@mailoo.org>


Reply to: