J'ai un système 32 bits qui fonctionne sur un processeur 64 bits. Comment puis-je le convertir pour qu'il soit entièrement 64 bits, sans réinstaller? J'ai vu quelque part que c'était faisable grâce au nouveau framework Multiarch.
Réponse acceptée :
TL;DR : C'est faisable, mais compliqué. J'ai décrit une alternative en bas.
Maintenant la longue description , et prenez-le avec un grain de sel, car je n'ai peut-être pas pris le meilleur chemin :
C'est possible, et voici ce que j'ai fait ces deux dernières nuits :
Il existe une entrée wiki décrivant la méthode à l'ancienne sans support multiarch. C'est utile pour réparer les paquets cassés.
Pour migrer votre système de base, procédez comme suit :
$ dpkg --print-architecture
i386
# dpkg --add-architecture amd64
$ dpkg --print-foreign-architectures
amd64
# apt-get update
# apt-get download gcc-4.6-base:amd64 libgcc1:amd64 libc6:amd64 \
libselinux1:amd64 zlib1g:amd64 libbz2-1.0:amd64 dpkg:amd64
# dpkg -i gcc-4.6-base*.deb libgcc*.deb libc*.deb libselinux*.deb \
libbz2*.deb zlib*.deb dpkg*.deb
$ dpkg --print-architecture
amd64
$ dpkg --print-foreign-architectures
i386
Certains de vos packages sont alors amd64, mais la plupart resteront i386. apt-get upgrade
s'occupera de certains paquets, apt-get -f install
réparera certaines erreurs, mais la plupart des paquets resteront i386. Si vous voulez faire face à cela, sautez la partie délicate 😉
Utilisation de dpkg --get-selections | grep :i386
renverra tous vos packages, qu'il vous faudra encore migrer.
Ma prochaine idée était de faire :
# apt-get install `dpkg --get-selections \
| grep i386 \
| awk {'gsub(/:i386/, ":amd64"); print $1'}`
Mais cela s'est avéré être une mauvaise idée :certains packages ne sont pas disponibles dans amd64 (par exemple libc6-i686), apt-get sera confus et de nombreux packages seront installés dans les deux versions. Beaucoup de travail manuel d'aptitude est à faire.
Plus de difficultés : Certains packages essentiels peuvent être remplacés, de sorte que vous aurez toujours les binaires installés pour l'installation, mais certains packages devront être supprimés et réinstallés, par ex. J'ai eu ce problème avec le goudron. J'ai récupéré les packages sur un autre système, j'ai extrait les packages via ar p package.deb data.tar.gz | tar zx
puis scp
ed les fichiers extraits via scp -r ./* [email protected]_computer:/
, afin que les fichiers binaires soient à nouveau disponibles. Rincer et répéter, et le scp
les fichiers créés seront écrasés.
Ce que je ferais à la place
J'ai fait ce qui suit, chaque fois que j'ai changé de système :
Sauvegarder /home
, /etc
(et peut-être /var
, /usr/local
, d'autres fichiers que vous avez modifiés, /root
, …, YMMV).
Obtenez une liste des packages installés avec dpkg --get-selections > packagelist
et copiez le fichier résultant packagelist
aussi.
Ensuite, faites une réinstallation propre de Debian, créez à nouveau tous les utilisateurs, peut-être des rôles, etc.
Réinstallez tous les packages avec dpkg --set-selections < packagelist; apt-get -f install
.
Copiez les répertoires et fichiers sauvegardés et vous avez presque terminé.
Un inconvénient de cette approche :tous vos packages, y compris les bibliothèques, seront marqués comme installés manuellement, de sorte qu'ils ne seront pas désinstallés, lorsqu'aucun package n'en dépendra plus.