Ich habe ein 32-Bit-System, das auf einem 64-Bit-Prozessor läuft. Wie konvertiere ich es auf 64-Bit, ohne es neu zu installieren? Ich habe irgendwo gesehen, dass es als Ergebnis des neuen Multiarch-Frameworks machbar ist.
Akzeptierte Antwort:
TL;DR: Es ist machbar, aber kompliziert. Eine Alternative habe ich unten skizziert.
Nun die lange Beschreibung , und nehmen Sie es mit einem Körnchen Salz, da ich vielleicht nicht den besten Weg genommen habe:
Es ist möglich, und hier ist, was ich in den letzten zwei Nächten getan habe:
Es gibt einen Wiki-Eintrag, der den Weg der alten Schule ohne Multiarch-Unterstützung beschreibt. Es ist hilfreich, um beschädigte Pakete zu reparieren.
So migrieren Sie Ihr Basissystem:
$ 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
Einige Ihrer Pakete sind dann amd64, aber die meisten bleiben i386. apt-get upgrade
kümmert sich um einige Pakete, apt-get -f install
wird einige Fehler beheben, aber die meisten Pakete werden immer noch i386 bleiben. Wenn du damit fertig werden willst, dann überspringe den kniffligen Teil 😉
Verwenden von dpkg --get-selections | grep :i386
wird alle Ihre Pakete zurückgeben, die Sie noch migrieren müssen.
Meine nächste Idee war:
# apt-get install `dpkg --get-selections \
| grep i386 \
| awk {'gsub(/:i386/, ":amd64"); print $1'}`
Aber es stellte sich als schlechte Idee heraus:Einige Pakete sind in AMD64 nicht verfügbar (z. B. libc6-i686), apt-get wird verwirrt und viele Pakete werden in beiden Versionen installiert. Es ist viel Handarbeit in der Eignung zu leisten.
Mehr Härte: Einige wichtige Pakete können ersetzt werden, sodass Sie immer die Binärdateien für die Installation installiert haben, aber einige Pakete müssen entfernt und erneut installiert werden, z. Ich hatte dieses Problem mit tar. Ich habe die Pakete auf einem anderen System geholt, die Pakete über ar p package.deb data.tar.gz | tar zx
und dann scp
edieren Sie die extrahierten Dateien über scp -r ./* [email protected]_computer:/
, sodass die Binärdateien wieder verfügbar sind. Spülen und wiederholen, und das scp
ed-Dateien werden überschrieben.
Was ich stattdessen tun würde
Ich habe Folgendes getan, wann immer ich das System gewechselt habe:
Sichern Sie /home
, /etc
(und vielleicht /var
, /usr/local
, einige andere Dateien, die Sie geändert haben, /root
, …, YMMV).
Holen Sie sich eine Liste der installierten Pakete mit dpkg --get-selections > packagelist
und kopieren Sie die resultierende Datei packagelist
auch.
Führen Sie dann eine saubere Neuinstallation von Debian durch, erstellen Sie alle Benutzer neu, möglicherweise Rollen usw.
Installieren Sie alle Pakete neu mit dpkg --set-selections < packagelist; apt-get -f install
.
Kopieren Sie die gesicherten Verzeichnisse und Dateien zurück, und Sie sind größtenteils fertig.
Ein Nachteil dieses Ansatzes:Alle Ihre Pakete, einschließlich Bibliotheken, werden als manuell installiert markiert, sodass sie nicht deinstalliert werden, wenn kein Paket mehr von ihnen abhängt.