Wie entferne ich alle i386-Pakete von Ubuntu 64bit?

Antworten:

15

Wenn sie dir nicht im Weg sind, würde ich sie dort lassen, wo sie sind.
Wenn Sie auf dem Löschen bestehen, dpkg -l | grep i386erstellen Sie mit eine Liste der i386-Pakete. Sie können diese nach sorgfältiger Prüfung mit etwas löschen sudo apt-get purge <package-name>.

Henk
quelle
2
Nur , dass die Eignung des Multiarch gebrochen ist , so dass es nicht so gut funktioniert: P
Tumbleweed
apt-get purge <package-name>sollte aber trotzdem funktionieren.
Eliah Kagan,
2
"Nach sorgfältiger Prüfung" - das ist vage. Bitte sei klarer.
Kevinarpe
1
ich habe ein i386-system auf einem usb, manchmal verwende ich es auf amd64-maschinen, jetzt wollte ich nur das inverse machen, also habe dpkg -l | grep amd64ich nach dem laufen ein i386-pkg in meiner liste, was bedeutet amd64-microcode 3.20160316.3 i386, dass das ':' im grep-muster steht ist wichtig ! ( dpkg -l | grep ":amd64")
Jonah
24

Die oberen automatisierten Lösungen sind gefährlich und funktionieren nicht immer (1), also hier ein anderer Weg

sudo aptitude purge `dpkg --get-selections | grep ":i386" | awk '{print $1}'`

oder

sudo apt-get purge `dpkg --get-selections | grep ":i386" | awk '{print $1}'`

(Versuchen Sie, immer und nur eines der Tools zu verwenden. Da Eignung bei Abhängigkeitsproblemen besser ist, bevorzuge ich dies.)

Gute Idee auch dazu

dpkg --remove-architecture i386

und vielleicht

dpkg --print-foreign-architectures

(1) Mit den vorherigen Befehlen werden auch Pakete aufgelistet, deren Name nur i386 enthält (obwohl sie für die 64-Bit-Architektur vorgesehen sind). Der reguläre Ausdruck funktionierte nicht und dpkg zeigt Pakete an, die bereits entfernt wurden, aber noch Konfigurationsdateien enthalten ( dpkg -l) zeigt "rc" anstelle von "ii" als Status).

PythoNic
quelle
Da Sie awksowieso verwenden, können Sie den grepAufruf auch loswerden . Auch $()ist Backticks vorzuziehen. Ich habe gerade meine i386-Pakete mit diesem Befehl losgeworden, der auf dem folgenden basiert:sudo apt purge $(dpkg --get-selections | awk '$1 ~ /:i386$/ { print $1 }')
scy
23

Ich habe alle meine 32-Bit-Pakete so geblitzt:

sudo apt-get remove `dpkg --get-selections | grep i386 | awk '{print $1}'`
Mathnode
quelle
1
Wie man diese Art von Befehlen macht, weiß ich apt-get und grep, aber was ist awk '{print $ 1}', will nur wissen.
Sukupa91
Genial, und ich konnte die i386-Architektur jetzt entfernen, aber wenn ich dpkg -l | grep i386überprüfe, ob die Pakete noch da sind, gibt es noch Ideen, auch +1 für den vorherigen Kommentar und ich vermute, es hängt mit den Shell-Skripttechniken zusammen
Ismail Marmoush,
Keine Antworten, wahrscheinlich, weil Kommentare nicht der richtige Ort für ein awk-Tutorial sind. Dieses awk-Bit druckt nur das erste Feld jeder Zeile, in die eine Pipeline eingefügt wird. Das Standardfeldtrennzeichen von Awk ist ein Leerzeichen "".
Ankunft am
Beenden Sie es mitsudo dpkg --remove-architecture i386
Serge Stroobandt
9

Für den Fall, dass sich jemand wundert, gibt es eine viel vernünftigere und anmutigere Möglichkeit, dies zu tun. Die letzte vorherige Antwort hofft, dasselbe zu tun, aber diese Suche schlägt fehl, da Architekturen, außer in besonderen Fällen, nicht Bestandteil von Paketnamen sind.

als root (oder mit sudo) ausführen:

aptitude remove ~i~ri386

Wenn Sie Aptitude nicht bereits über Apt-Get einsetzen, tun Sie dies. Es ist wirklich exzellent. Eine Liste der Suchbegriffe von aptitude finden Sie hier .

Patrick
quelle
6

Hier ist ein weiterer Weg, der das Risiko noch verringert:

apt-get remove "^.*:i386$"

Dies stimmt speziell nur mit Paketen überein, die mit enden. Dies ":i386"ist die Standardbenennungskonvention für alle i386Architektur-Debian-Pakete.

kevinarpe
quelle
Warum übermäßiges Spülen entfernen?
Lotus
1
@ Lotus: Mir ist der Unterschied nicht bewusst. Kannst du bitte Erklären? Vielleicht können wir diese Antwort aktualisieren, um sie zu verbessern.
Kevinarpe
Beim Löschen werden auch die Konfigurationsdateien und alle übrigen Verzeichnisse übernommen. iirc
Lotus
2
@Lotus Ich habe purge verwendet und es hat am 14.04 funktioniert. Dies funktionierte nur bei mir, nachdem ich die Anführungszeichen und die Karotte entfernt hatte. sudo apt-get purge .*:i386
Antonios Hadjigeorgalis
6

Der Multiarch-Leitfaden des Debian erwähnt diesen Befehl :,apt-get purge ".*:<arch>" der folgendermaßen aussehen würde i386:

apt-get purge ".*:i386"

Sie können die Architektur dann aus dpkg entfernen:

dpkg --remove-architecture i386
Francisco Couzo
quelle