Frage Wie kann ich eine 32-Bit-Installation auf eine 64-Bit-Installation umstellen?


Ich habe eine 32-Bit-Ubuntu-Installation auf 64-Bit-Hardware. Nun das Multi-Arch wurde implementiertIch möchte auf 64-Bit umschalten, ohne das Betriebssystem neu installieren zu müssen.

Dies ist einer der User Storys adressiert durch die Spezifikation:

Shawn installierte sein System mit der 32-Bit-Version von Ubuntu, aber seine Hardware ist 64-Bit und er will umschalten. Er installiert die AMD64-Versionen von dpkg und apt manuell, ersetzt die i386-Versionen und ändert die Architektur, die standardmäßig verwendet wird. dann installiert er das Paket amd64 ubuntu-minimal; Dann installiert er das Paket amd64 ubuntu-desktop. Im Laufe der Zeit werden die verbleibenden i386-Pakete beim Upgrade automatisch ersetzt.

Wenn ich versuche, den dortigen Anweisungen zu folgen, kann ich keine 64-Bit-Version von dpkg oder apt finden.

Wurde diese User Story in der finalen Spezifikation anders umgesetzt oder muss ich etwas anders machen?

Kurz gesagt, wie kann ich meine 32-Bit-Installation auf 64-Bit umstellen?


52
2017-11-22 19:34


Ursprung


Mir ist klar, dass die Frage bereits gestellt wurde askubuntu.com/questions/5018/..., aber das war bevor Multi-Arch implementiert wurde, also sollte die Antwort anders sein. - David Planella


Antworten:


Ein solcher Ansatz ist sehr kompliziert und wird wahrscheinlich nicht dazu führen, dass alle Ihre Pakete die sind amd64 Version statt der i386 Ausführung. Nur Pakete, die tatsächlich Upgrades erhalten, werden wahrscheinlich in der Architektur geändert, und wahrscheinlich nur dann, wenn keine anderen Pakete, die nicht aktualisiert werden, davon abhängen, dass sie i386 die Architektur. Da einige Pakete nicht erhalten irgendein Updates über den gesamten Support-Zyklus Ihrer Ubuntu-Version werden Sie wahrscheinlich nie vollständig haben amd64 System mit einer solchen Technik. Darüber hinaus gibt es sicherlich keine offizielle Unterstützung für einen solchen Ansatz.

Sie sollten also Ihr vorhandenes Ubuntu-System durch eine neue 64-Bit-Installation ersetzen.

Allerdings, wenn Sie diese Technik versuchen möchten, müssen Sie manuell Laden Sie die .deb Dateien für dpkg und apt. Sie können sie bei der finden dpkg in Ubuntu und apt in Ubuntu Seiten auf Launchpad - Erweitern Sie die neueste Version unter "The Oneiric Ocelot", die als Release, Sicherheit und / oder Updates markiert ist (aber Sie wollen wahrscheinlich keine Version markiert nur vorgeschlagene und / oder Backports, wenn es überhaupt einen gibt ). Dann lade die .deb Dateien markiert amd64. Insbesondere sind die Dateien, die Sie wünschen: dieses für dpkg (und die anderen auch aufgelistet, wenn Sie diese Pakete installiert haben) und Dies und Dies und Dies und Dies und Dies zum apt.

Bevor Sie irgendwas mit diesen Dateien machen, sollten Sie alle wichtigen Dokumente in Ihrem installierten Ubuntu-System und alle anderen wichtigen Dateien (zB Musik, E-Books, Videos) sichern, da es sehr wahrscheinlich ist, dass der Versuch, diese Technik zu verwenden, sehr schlecht funktioniert und lassen Sie Ihr Ubuntu-System vollständig unbenutzbar.

Sie können alle diese Pakete installieren, indem Sie sie in einen Ordner einfügen, der nichts anderes enthält (vorausgesetzt, der Ordner wird aufgerufen) debs und ist in deinem DownloadsVerzeichnis) und dann diesen Befehl ausführen:

sudo dpkg -Ri ~/Downloads/debs

Sobald Sie sie installiert haben, laufen sie natürlich nicht mehr, da ihre ausführbaren Dateien 64-Bit sind und Ihr 32-Bit-Ubuntu-System einen 32-Bit-Kernel ausführt (der nur ausführbare 32-Bit-Dateien ausführt). In der Tat werden sie möglicherweise nicht einmal mit der Installation fertig, da sie nach der Installation Skripts haben, die ihre nicht ausführbaren 64-Bit-Programme aufrufen.

Es gibt verschiedene Möglichkeiten zu versuchen, einen 64-Bit-Kernel auf einem 32-Bit-System zu installieren, aber sie sind alle extrem kompliziert. Stattdessen empfehle ich, von einer 64-Bit-Oneiric-Live-CD zu booten (die selbst 64-Bit ausführt) Kernel), Chroot in das installierte Ubuntu-System und verwende das kürzlich installierte 64-Bit apt und dpkg um einen 64-Bit-Kernel zu installieren.

Hier sind spezielle Anweisungen dafür ... aber bitte nimm das nicht so, dass ich sage, dass es funktionieren wird. Ich habe das nicht versucht. (Ich habe von Live-CDs in installierte Ubuntu-Systeme gechropt und Paketverwaltung und andere Operationen durchgeführt, aber ich habe die hier vorgeschlagenen architekturübergreifenden Operationen nicht versucht.)

  1. Öffnen Sie in Ihrem installierten Ubuntu-System ein Terminal-Fenster (Strg+Alt+T) und Renn mount | grep ' on / ' (indem Sie es in das Terminal einfügen und Enter drücken). Sie sollten etwas wie sehen /dev/sda2 on / type ext4 (rw,errors=remount-ro,commit=0). Der Teil, an dem Sie interessiert sind, ist der Gerätename zuvor on (In diesem Beispiel ist es /dev/sda2). Denken Sie daran oder schreiben Sie es auf.

  2. Schritt 1 gab Ihnen den Gerätenamen des / Partition. Wenn Sie eine separate haben /boot Partition, dann müssen Sie auch den Gerätenamen dafür kennen. Also, in diesem Fall, lauf mount | grep ' on /boot '. Du wirst etwas wie sehen /dev/sda1 on /boot type ext2 (rw). Denken Sie daran oder schreiben Sie dies auch nieder.

  3. Booten Sie von einer oneirischen amd64 (d. H. 64-Bit) Live-CD und wählen Sie "Try Ubuntu" anstelle von "Ubuntu installieren".

  4. Gehen Sie in einen Webbrowser und stellen Sie sicher, dass die Internetverbindung vollständig funktioniert. Wenn nicht, richten Sie es ein.

  5. Öffnen Sie ein Terminalfenster und führen Sie es aus sudo mount /dev/sda2 /mnt (ersetzen /dev/sda2 mit dem Gerätenamen, den Sie in Schritt 1 erhalten haben, falls abweichend).

  6. Wenn Ihr installiertes System ein separates System hat /boot Partition, run sudo mount /dev/sda1 /mnt/boot (ersetzen /dev/sda1 mit dem Gerätenamen, den Sie in Schritt 2 erhalten haben, falls unterschiedlich).

  7. Führen Sie diese Befehle nun aus, um in Ihr installiertes System zu chrooten:

    sudo mount --bind /dev /mnt/dev  
    sudo chroot /mnt  
    mount -t proc none /proc  
    mount -t sysfs none /sys  
    mount -t devpts none /dev/pts  
    
  8. Lauf ping -c 4 launchpad.net um zu sehen, ob die Internetverbindung vollständig innerhalb der Chroot funktioniert. Sie hoffen auf so etwas:

    PING launchpad.net (91.189.89.223) 56(84) bytes of data.
    64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=1 ttl=41 time=141 ms
    64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=2 ttl=41 time=143 ms
    64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=3 ttl=41 time=142 ms
    64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=4 ttl=41 time=140 ms
    
    --- launchpad.net ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3003ms
    
  9. Wenn Sie jedoch keine Pakete übertragen oder empfangen konnten, müssen Sie die Internetverbindung in der Chroot einrichten. Um dies zu tun, führe diese Befehle aus (um die Chroot zu verlassen, kopiere die relevanten Konfigurationsdateien vom Live-CD-System in die Chroot und besuche die Chroot erneut):

    sudo cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.old  
    sudo cp /mnt/etc/hosts /mnt/etc/hosts.old  
    sudo cp /etc/resolv.conf /mnt/etc/resolv.conf  
    sudo cp /etc/hosts /mnt/etc/hosts
    

    Im Allgemeinen sollten Sie diesen Prozess stoppen, wenn ein Fehler auftritt. Machen Sie sich keine Sorgen, wenn der erste und / oder der zweite dieser vier Befehle fehlschlagen, vorausgesetzt, dass die spezielle Art und Weise, in der der Fehler auftritt, Ihnen dies sagt /mnt/etc/resolv.conf (oder /mnt/etc/hosts) ist nicht vorhanden.

    Die chroot zurück und versuchen Sie es erneut:

    sudo chroot /mnt  
    ping -c 4 launchpad.net  
    
  10. Führen Sie diese Befehle aus, um Ihre chroot-Umgebung vollständig einsatzbereit zu machen:

    export HOME=/root  
    export LC_ALL=C  
    
  11. Wenn Sie das nicht installiert haben .deb Dateien für die 64-Bit-Versionen von dpkg und aptmach es jetzt. Wenn Sie sie installiert haben, aber Konfigurationsfehler aufgetreten sind, führen Sie sie aus dpkg --configure -a um sie zu reparieren. (Hoffentlich wird das funktionieren ... es wäre besser zu warten, zu versuchen, sie zu installieren, bis Sie in der Live-CD-Umgebung sind, falls Sie das 64-Bit installieren dpkg während des Starts in das installierte System bleibt dpkg in einem unbrauchbaren Zustand.)

  12. Mit den 64-Bit-Versionen von dpkg und apt installiert, vorausgesetzt, dass sie 64-Bit-Pakete automatisch installieren, können Sie nun alle Ihre 32-Bit-Kernel entfernen und einen 64-Bit-Kernel installieren. Um Ihre 32-Bit-Kernel zu entfernen, führen Sie dpkg -l | grep linux-. Dies listet installierte Pakete auf, die mit beginnen linux-. Sie sind speziell an Paketen interessiert, die wie folgt starten linux-generic, linux-image, linux-serverund / oder linux-headers. Entferne diese Dateien mit apt-get purge ... woher ... wird durch eine durch Leerzeichen getrennte Liste der zu entfernenden Pakete ersetzt.

  13. Installieren Sie jetzt die Pakete, die Sie entfernt haben, erneut. (Eigentlich für Pakete, die Versionsnummern im Paketnamen enthalten, wie zum Beispiel linux-image-3.0.0-13-generic, Sie müssen nur die neuesten versionierten Paketnamen installieren.) Führen Sie dies durch apt-get install ... woher ... wird durch eine durch Leerzeichen getrennte Liste der Pakete ersetzt, die Sie installieren.

  14. Aktualisieren Sie die Bootloader-Konfiguration, deaktivieren Sie einige Geräte und verlassen Sie die chroot:

    update-grub  
    umount /proc || umount -lf /proc  
    umount /sys  
    umount /dev/pts  
    exit  
    sudo umount mnt/dev  
    
  15. Wenn du rennst sudo cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.old und es ist nicht gescheitert, dann lauf jetzt sudo cp /mnt/etc/resolv.conf.old /mnt/etc/resolv.conf.

  16. Wenn du rennst sudo cp /mnt/etc/hosts /mnt/etc/hosts.old und es ist nicht gescheitert, dann lauf jetzt sudo cp /mnt/etc/hosts.old /mnt/etc/hosts.

  17. Wenn Ihr installiertes System ein separates System hat /boot Partitionieren, unmounten Sie das: sudo umount /mnt/boot

  18. Hängen Sie das installierte System aus / Partition: sudo umount /mnt

  19. Verlasse das Terminalfenster (run exit), starten Sie das Live-CD-System neu (oder fahren Sie es herunter) und booten Sie das installierte System.

  20. Prüfen Sie, ob das System verwendbar ist und einen 64-Bit-Kernel ausführt (uname -m sollte sagen, die Architektur ist x86_64).

Möglicherweise müssen Sie zusätzliche Pakete installieren, z ia32_libs und / oder die 64-Bit-Version von libc6, damit dies funktioniert. Für einige von ihnen werden Sie möglicherweise darüber informiert, dass Sie sie benötigen, wenn Sie versuchen, die 64-Bit-Version von dpkg und / oder apt. Für andere werden Sie möglicherweise nicht informiert.

(Die obigen Anweisungen zum Chrooten und Arbeiten in der chrooted-Umgebung basieren zum großen Teil auf dieses verwandte aber unterschiedliche Verfahren und auch auf einigen Launchpad Antworten Beiträge von mir, insbesondere # 6 Hier und # 6 Hier. Und besonderer Dank an Cäsium zum Hinweis, dass das 64-Bit dpkg und apt ausführbare Dateien werden nicht auf einem System ausgeführt, auf dem ein 32-Bit-Kernel ausgeführt wird.)


35
2017-11-22 19:53



Werden diese Binaries unter einem 32-Bit Kernel laufen, Eliah? - Caesium
@ Caesium Guter Anruf. Natürlich nicht. Ich würde meinen Beitrag bearbeiten, um anzugeben, wie der 64-Bit-Kernel läuft ... außer dass ich keine Ahnung habe, wie man ein 64-Bit-Kernel-Paket auf einem 32-Bit-Ubuntu-System (auf 64-Bit-Hardware) installiert. natürlich) wann apt und dpkg sind immer noch 32-Bit und werden (vermutlich) die Installation eines 64-Bit-Kernel-Pakets ablehnen. (Den Kernel aus der Quelle zu erstellen und Cross-Compilation zu verwenden, würde funktionieren, aber das ist sehr kompliziert und ich möchte es nicht empfehlen. Ich bin mir sicher, dass es einen besseren, einfacheren Weg gibt. Wenn du es weißt, bitte sei frei um meinen oder deinen Beitrag zu bearbeiten oder einen Kommentar dazu zu schreiben.) - Eliah Kagan
@Caesium Eigentlich glaube ich, dass ich weiß, wie man den 64-Bit-Kernel installiert. Ich werde meinen Beitrag in Kürze bearbeiten, um dies zu reflektieren. Sobald ich das tue, wenn Sie das Gefühl haben, dass meine vorgeschlagene Technik funktionieren würde, können Sie sie gerne kopieren und / oder in Ihre Antwort paraphrasieren ... oder alternativ, solange sowohl die Informationen in Ihrer Antwort, die nicht in meiner sind, als auch die Informationen In meiner Antwort, die nicht in Ihrem ist, können Sie unsere Antworten in einer einzigen Antwort kombinieren. (Es könnte deine Antwort sein - das ist okay für mich. Du hast ein bisschen vorher gepostet. Dann lösche ich meine Antwort.) - Eliah Kagan
@ Caesium bearbeitet abgeschlossen; Ich freue mich auf Ihre Kommentare. - Eliah Kagan
Wow, nette Arbeit :) An diesem Punkt hast du viel mehr Mühe als ich, also würde ich nicht davon träumen, in meine Antwort zu kopieren, deine sollte für den Kredit bleiben. Es entfernt sich zwar von dem ursprünglichen Ziel, die Multiarchentechnologie zu verwenden, aber ich bin interessiert zu hören, ob es trotzdem funktioniert :) Schätze, wir müssen auf das Original-Poster warten :) - Caesium


Wie oben erwähnt, habe ich:

echo foreign-architecture amd64 | sudo tee /etc/dpkg/dpkg.cfg.d/multiarch
sudo apt-get update
sudo apt-get install linux-image:amd64
sudo apt-get install gcc-multilib
sudo update-grub

Es funktionierte. Ich kann mein 32-Bit-Benutzerland mit 64-Bit-Kernel in Ubuntu 12.04 ausführen.


24
2018-06-19 00:05



Diese Antwort rockt. Ich kann bestätigen, dass es immer noch mit Saucy funktioniert. Der einzige Unterschied ist, dass sich das Verfahren zum Hinzufügen einer Architektur geändert hat: use sudo dpkg --add-architecture amd64 stattdessen. Es wird dich anschreien, wenn du es anders machst. Ich musste dies tun, damit ich in eine 64-Bit-Installation von einem (früher) 32-Bit-System chroot und es funktioniert genau wie erwartet ohne Probleme. - Wug
Ich habe das auf Mint versucht, aber ich habe ein paar Probleme, hast du noch etwas anderes gemacht? Einzelheiten: superuser.com/q/927830/150718 - dr Hannibal Lecter
Zusätzlich zu Wugs Änderung müssen Sie auch verwenden linux-image-generic:amd64 auf Ubuntu 16.04. Es funktionierte gut, auch ohne die letzten beiden Befehle. - qznc


Obwohl die Frage ähnlich ist Ist es möglich, von einer 32-Bit- auf eine 64-Bit-Installation zu "upgraden"? (Wenn Sie es noch nicht gelesen haben, ermutige ich Sie, es zu versuchen. Die Antwort ist gut.) Ich empfehle Ihnen auch, die folgenden Links zu lesen:

Für eine bessere Leistung sollte ich 32-Bit oder 64-Bit installieren?

Wie kann ich eine 32-Bit-Installation auf eine 64-Bit-Installation umstellen?

Was sind die Unterschiede zwischen 32-Bit und 64-Bit, und welche sollte ich wählen?

Ist es möglich: Ja

Ist es einfach: NEIN!

Wenn Ihr Problem im Speicher liegt, sollten Sie wissen, dass Ubuntu 32 Bit mehr als 4 GB RAM (bis zu 64 GB) lesen kann. Es ist also kein Problem, die neueste Ubuntu 32 Bit Version mit einem 32 Bit oder 64 Bit Prozessor zu verwenden und mehr RAM zu installieren. Es wird einfach den zusätzlichen RAM lesen und arbeiten.


6
2018-03-25 02:29





Diese Antworten sind etwas veraltet. Cross-Grading ist jetzt für Debian auf dokumentiert das Debian-Wiki, aber es ist immer noch nicht zu empfehlen.

Das Installieren eines Kernels aus einer anderen Architektur ist jetzt so einfach wie dort beschrieben, aber das neue 'apt' erkennt keine Pakete aus einer früheren Architektur und daher können alle seine Frontends viele defekte Pakete melden. Dazu müssen entweder alle Abhängigkeiten zur anderen Architektur geändert oder apt und dpkg auf 32-Bit zurückgesetzt werden.

Der beste Ansatz könnte also sein, zunächst Ergebnisse zu speichern dpkg --get-selections, strip: i386 davon und lade ein amd64-Paket für jede der Abhängigkeiten zum Cache herunter:

apt-get --download-only install perl:amd64 python3:amd64 python3-gi:amd64 xorg:amd64...

Im besten Fall ist es wahrscheinlich langsam und zeitraubend, die Abhängigkeiten aufzulösen.


5
2018-05-31 17:43





Mit diesen Anweisungen wird das System mit einem 64-Bit-Kernel gestartet, die meisten Länderlandprogramme werden jedoch nicht geändert.

Nach der Aktualisierung meines Systems mit 64-Bit-CPU wollte ich auch einen 64-Bit-Kernel auf meinem 32-Bit 14.04.2 Ubuntu (Codename: Trusty) installieren. Dazu habe ich folgende Befehle als eingegeben Root-Benutzer:

dpkg --add-architecture amd64   
apt-get update
apt-get install linux-generic-lts-utopic:amd64

Anmerkungen:

  1. Dies kann Ihren 32-Bit-Kernel als vertrauenswürdig entfernen - standardmäßig - wird mit einem aktualisierten Kernel ausgeliefert (der Kernel von utopic), siehe 14.04 Versionshinweise. In diesem Fall steht Ihr aktueller Kernel in Konflikt mit dem zu installierenden 64-Bit-Kernel und wird daher entfernt. Wenn Ihnen diese Idee nicht gefällt, sollten Sie stattdessen das ältere 64-Bit-Kernel-Paket "linux-generic-lts-trusty: amd64" ausprobieren.

  2. Der Befehl "--add-architecure" ist wichtig. Ohne es unterstützt das Paketsystem keine Pakete von verschiedenen Architekturen, siehe Multiarch-HowTo

  3. Um was zu sehen apt-get werde dein System tun, führe es mit den Optionen aus -Vs wodurch der "ausführliche Simulationsmodus" aktiviert wird. Dadurch werden alle Pakete gedruckt, die installiert und entfernt werden sollen.

  4. Ob Sie mit dem neuen Kernel booten, hängt von der grub Aufbau. Wie Root-Benutzer, Lauf update-grub um grub zu aktualisieren und die aktuelle Boot-Konfiguration zu drucken. Das erste Bild in der Liste wird standardmäßig gestartet.

  5. Um ein anderes Kernel-Image auszuwählen, habe ich die Zeile entfernt GRUB_HIDDEN_TIMEOUT=0 von /etc/default/grub und lief als Root-Benutzer  update-grub. Beim Booten können Sie jetzt einen anderen Kernel auswählen (Sie haben 10 Sekunden Zeit, um eine beliebige Taste zu drücken, ansonsten wird grub mit dem Standard-Kernel fortfahren).

  6. Die Antwort mit den meisten Stimmen stammt aus 2011 und ist meiner Meinung nach hoffnungslos veraltet. Mit Multiarch können Sie Bibliothekspakete aus mehreren Architekturen auf demselben Computer ohne viel Aufwand installieren.


4
2018-06-12 21:45



Das ist ein schöner, einfacher Ratschlag, der für mich am 14.10 (Utopic) fast funktioniert hat (wie auch immer ich es gemacht habe) apt-get install linux-generic:amd64 was für das Experiment nicht sehr wichtig sein darf)! Wenn ich die Bootoption "Rescue" durchführe, wird das System ausgeführt, aber X wird nicht verwendet nouveau Videotreiber und so. Wenn ich normal starte, bricht der Start irgendwann ab und das System startet neu. (Aber das allererste Mal konnte ich erfolgreich booten.) Ich bin mir nicht sicher, ob das Problem mit dem Grafiktreiber beim "normalen" Booten oder etwas anderem auftritt. - imz -- Ivan Zakharyaschev
Der Videotreiber und X stellten sich nicht (statistisch) auf meine Abstürze / Neustarts mit dem AMD64 Kernel. Es ist nur ein Geheimnis für jetzt - bugs.launchpad.net/ubuntu/+source/upstart/+bug/1495116 . - imz -- Ivan Zakharyaschev


Crossgrading (Upgrade auf eine andere Architektur) wird noch nicht unterstützt.


2
2018-01-06 09:53





Vielleicht, wenn ich das gleiche Problem habe, wird es funktionieren, genau das habe ich vor,

Besorgen Sie sich eine 64-Bit-Version des Betriebssystems und installieren Sie diese in eine Partition. Wenn Sie die Dokumente und andere Dateien vollständig aus der 32-Bit-Installation kopiert haben, können Sie den Rest des Laufwerks formatieren und verwenden.


2
2018-06-20 11:10





Ja, die Fremdarchitektur-Linie ist definitiv entscheidend für die Installation von Cross-Arch-Paketen. Aber danach, wie mehrere andere Benutzer erwähnt:

sudo apt-get update
sudo apt-get install linux-image:amd64
sudo apt-get install linux-modules:amd64
sudo init 6 #reboot into new kernel
sudo apt-get install apt:amd64
sudo apt-get install ubuntu-desktop:amd64

Das sollte es einfach tun ...


2
2018-04-04 06:19



Hast Du es versucht? es funktioniert nicht wirklich, ich bekomme Probleme, wenn es anfängt, dpkg und perl durch ihre amd64 Entsprechungen zu ersetzen - Janus Troelsen


Mein Rezept für Ubuntu 16.04 Xenial, getestet auf frisch installierter 32-Bit-Ubuntu-VM mit Standard-System und SSH-Server, aber ohne GUI:

sudo -s
dpkg --get-selections > pkg1
dpkg --add-architecture amd64
apt update
apt install linux-image-generic:amd64 thermald 

(Andernfalls würde thermald: amd64 installiert und unter 32-Bit-Kernel nicht neu gestartet)

reboot

nach dem Neustart mit 64-Bit-Kernel:

sudo -s
unset LANG
apt install apt:amd64 apt-utils:amd64

tippe 'Ja, mach was ich sage!' wenn gefragt, wird es sicher sein

mkdir /tmp/upgrade 
cd /tmp/upgrade
pkgs() { dpkg -l | awk '$4=="'$1'"{print $2}' | awk -F: '{print $1}' | sort -u
}
apt download $(comm -23 <(pkgs i386) <(pkgs amd64))
while ls *amd64*deb
do dpkg -i *amd64*deb
   dpkg -l | awk '$1=="ii" && $4=="amd64" {print $2}' | awk -F: '{print $1}' |
   while read a
   do [ -f ${a}_*amd64*deb ] && rm ${a}_*amd64*deb
   done
done

In der obigen Schleife entfernen wir .deb-Dateien, die erfolgreich installiert wurden und haben den Status 'ii' in der dpkg-Liste.

Wir müssen es wiederholen dpkg -i läuft, wie es vom ersten Versuch an nicht gelingt

reboot

Mit dem 64-Bit-Kernel und dem Userspace können nun die verbleibenden i386-Pakete entfernt werden:

dpkg --purge $(dpkg -l | awk '$4=="i386"{print $2}')

die Liste, in der du gespeichert hast pkgs1 Datei, die Sie für Ihre weiteren Bedürfnisse verwenden können.


2
2018-01-18 14:18



Das ist eine Art Magie, aber es hat mir geholfen, 32- bis 64-Bit-Übergang über SSH auf Remote-PCs zu machen. - user271872


Gute Frage. Ich habe eine Jagd gemacht und abgesehen von der User Story, die du zitierst, kann ich keine Details dazu finden. Die gesamte Dokumentation zeigt an, dass es nur zum Ausführen von 32-Bit-Anwendungen auf einem bereits 64-Bit-Betriebssystem dient.

Wenn Sie jedoch experimentieren möchten, können Sie Folgendes versuchen (abgeleitet von meinem Link unter [1]):

 echo foreign-architecture amd64 | sudo tee /etc/dpkg/dpkg.cfg.d/multiarch
 sudo apt-get install linux-image:amd64

Ich denke, Sie müssen mit einem amd64-Kernel beginnen, da der 32-Bit-Prozessor keine 64-Bit-Binärdateien ausführen kann. Allerdings sollte das 64-Bit-Programm 32-Bit-Binärdateien ausführen (wenn ia32-libs installiert ist?).

Wenn Sie den 64bit-Kernel installiert und gestartet haben, können Sie von dort zu apt: amd64 wechseln und dann die User-Story wie zuvor zitiert, ubuntu-minimal, ubuntu-desktop usw.

Nachdem apt: amd64 installiert ist, denke ich, dass Sie die fremde Architekturlinie entfernen können, da Sie an dieser Stelle im Wesentlichen umgeschaltet haben.

Haftungsausschluss: Ich habe kein 32-Bit-System zu testen, also ist das alles Raten. Viel Glück!

[1] https://wiki.ubuntu.com/OneiricOcelot/TechnicalOverview/Beta1#Improved_handling_of_32-bit_compatibility_on_amd64_systems


1
2017-11-22 19:52