Passage machine i386 -> amd64

Voir le fil Reinstaller debian en amd64 cause erreur pour l’origine.

Passage d’une installation i386 en amd64.

On part d’une version supportant le multiarchitecture (multiarch) par exemple d’une wheezy i386, avec scilab, java et iceweasel d’installés par exemple (le tout en i386)

1 - Ajoutez l’architecture amd64

# dpkg --add-architecture amd64
# apt-get update

2 - Installez un noyau amd64, par exemple

# apt-get install linux-image-3.2.0-4-amd64

éventuellement update-grub si ça n’est pas fait automatiquement.
Reboute sur le noyau amd64

3 - Supprimez l’ensemble des noyaux i386 via apt-get, puis installez apt en amd64

# LANG=C apt-get install apt:amd64

Il va demander de taper « Yes, do as I say! » pour confirmer l’horreur de ce qu’on fait. Si on omet le LANG=C, cette phrase est en Français mais ne fonctionne pas.
Il y aura une erreur à la fin, faites

# apt-get -f install

ou

# LANG=C apt-get -f install

si vous avez besoin de taper « Yes, do as I say! » (probable).
La plupart des paquets vont alors être basculé dans l’option amd64. Itérez les à la suite jusqu’à ce que ça n’entraine aucune action.

# apt-get -f install
# apt-get -f install
…

Veillez aux éventuels paquets supprimés, il suffira de les reinstaller par la suite. (exemple: java donc scilab, etc), ça peut être des paquets très importants mais non essentiels, cet abruti m’avait enlevé sysvinit. Donc soyez attentifs.

4 - À l’issue de cela, la machine est en amd64. Il y a cependant des paquets qui reste en i386, la machine est fonctionnelle. Un simple

# apt-get install paquet

fera la transition i386 -> amd64.

La machine est désormais multiarchitecture avec dominante et système 64 bits. L’architecture par défaut est désormais en 64 bits.

1 J'aime

Il ne manquerait pas un 4 ?

Il ne manquerait pas un 4 ?[/quote]
Un 4, un -, et un d ! :033

J’ai modifié c’est mieux comme ça ? Pas de Linux sous la main pour vérifier.

Je crois qu’un mode opératoire écrit avec autant d’expertise m’aurais fait gagner beaucoup de temps ( ainsi que de cheveux :smiley: ). Je crois qu’il était important aussi de préciser que l’opération serait moins aventureuse sur une wheezy

[quote]On part par exemple d’un wheezy i386 [/quote]( cause support multi-arch ), j’ai également dans la phase d’installation des paquets en amd64 préféré commencer par installer le paquet amd64 puis désinstallé le paquet i386 ( au cas où un reboot ou une panne de courant vienne y mettre son nez :confused: ).

L’opération pour ma part s’est très bien déroulée, mon pc était très stable par la suite, mais je ne pourrais pas affirmer qu’aucun tracas ne pourrais survenir par la suite ( je testé la bête pendant 24h avant de passer en dual boot avec réinstallation complète de debian).

Mieux vaut sauvegarder ses données par mesure de précaution je dirais, on ne sais jamais :slightly_smiling:

En fait, j’ai voulu vérifié que l’installation d’un paquet par la suite fonctionnait bien en amd64. L’étonnant est qu’il faut d’abord installer apt en amd64 puis l’installation de dpkg en amd64 vient après. J’ai trouvé ça surprenant. Egalement surprenant est la nécessité d’enchainer les apt-get -f install…

Bonjour,

J’ai tenté la manip sur une wheezy plus compliquée (3500 paquets installés).
Hélas, je me suis retrouvé avec près de 700 paquets cassés après le premier apt-get install -f apt:amd64

Il m’a d’abord fallu récupérer le serveur X en installant dkms en amd64 depuis la console :frowning:.

J’ai reconnu les paquets cassés par

Ils étaient pratiquement tous en :i386, et ça provenait apparemment du fait que certains paquets essentiels n’avaient pas été téléchargés en amd64.

Ensuite j’ai utilisé dpkg pour supprimer (ou réinstaller en amd64 après téléchargement dans les dépôts).

Est-ce qu’il y avait une solution plus astucieuse ? Ça m’a pris quelques heures…


JP

Ton apt-get install paquet ne fonctionne pas pour moi !

Il faut réfléchir:

apt-get install paquetréinstalle le paquet en version 64 bits. Il faut choisir les paquets.

J’ai rafraîchi un peu le guide proposé par @fran.b, dont la mise en forme avait été cassée par la migration du forum vers Discourse.

Je ferai peut-être quelques tests quand j’aurai du temps pour ça pour vérifier que les instructions sont toujours valables sur les versions actuelles de Debian, mais je doute que ça ait perdu en pertinence.

Gardez quand même en tête que ce genre de migration n’est pas évidente, et qu’une réinstallation sera à la fois plus rapide et plus facile.

1 J'aime

Si on fait juste ça, on peut avoir une machine mixte ?

Une machine 64 peut exécuter du 32 mais l’inverse… j’en doute, à vérifier.

Debian 11 bullseye devrait embarquer une solution :

debian-crossgrader - Debian Package Tracker

D’expérience, je dirais que plus il y a de paquets et plus ça complique le jeu des conflits et dépendances.
En étape zéro, je mettrais une sauvegarde de la liste des paquets présents puis une diminution du système à la base suivi du crossgrade pour terminer avec la réinstallation des paquets manquants.

Je n’ai pas testé le paquet crossgrader, il fait sans doute ça très bien, surtout avec python 3.

Avec plus de 8000 paquets, ça va être amusant, surtout que je dois traîner de très vieux trucs.
Les paquets en i386 et en amd64 ne sont pas les mêmes (à part l’architecture) ?

La réponse est dans la question.

$ dpkg -l | grep ':i386'

Presque tous les paquets listés par la commande ci-dessus seront amd64 une fois la transition effectuée.

Il est peut-être possible de reconstruire le paquet debian-crossgrader pour les versions 10 buster, 9 stretch, voire 8 jessie.

File: INSTRUCTIONS.md | Debian Sources

#### Target architecture binaries runnable in current architecture, but not the other way around

An example of this situation would be crossgrading from amd64 to i386. i386 binaries are runnable under amd64, but amd64 binaries cannot be run under i386 (even with qemu, see bug #604712)

Since qemu-user-static cannot emulate the current arch under the original arch, the best process is to run the first and second stages of the crossgrader in the original architecture before rebooting to the target arch. In the amd64 to i386 case, you would run crossgrader i386 and crossgrader i386 --second-stage before rebooting to an i386 kernel.

Ce qui me fait 2500 paquets au lieu de 8000.
Il doit y avoir un paquet de paquets sans architecture parmi les 5500 restants (comme les scripts ou la documentation).