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>.


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).


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}'`

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 .


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.


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.