Jak usunąć wszystkie pakiety i386 z Ubuntu 64bit?

Odpowiedzi:

15

Jeśli nie są na twojej drodze, zostawiłbym ich tam, gdzie są.
Jeśli nalegasz na usunięcie, użyj, dpkg -l | grep i386aby utworzyć listę pakietów i386. Możesz je usunąć po dokładnym sprawdzeniu za pomocą czegoś takiego sudo apt-get purge <package-name>.

Henk
źródło
2
Tyle tylko, że umiejętność jest zepsuta na wielu lekcjach , więc to nie zadziała tak dobrze: P
tumbleweed
apt-get purge <package-name>powinien jednak nadal działać.
Eliah Kagan,
2
„po starannym sprawdzeniu” - to jest niejasne. Proszę wyjaśnić.
kevinarpe
1
mam system i386 na usb Czasami używam go na maszynach amd64, teraz po prostu chciałem zrobić odwrotnie, więc po uruchomieniu dpkg -l | grep amd64mam i386 pkg na mojej liście, co jest amd64-microcode 3.20160316.3 i386, myślę, że ':' we wzorcu grep jest ważne ! ( dpkg -l | grep ":amd64")
Jonasz
24

Górne zautomatyzowane rozwiązania są niebezpieczne i nie zawsze działają (1), więc tutaj jest inny sposób

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

lub

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

(Staraj się używać zawsze i tylko jednego z narzędzi. Ponieważ aptitude jest lepszy, gdy masz problemy z zależnością, wolę to.)

Dobry pomysł również

dpkg --remove-architecture i386

I może

dpkg --print-foreign-architectures

(1) Poprzednie polecenia wyświetlają również listę pakietów posiadających tylko nazwę i386 (chociaż są one przeznaczone dla architektury 64-bitowej), wyrażenie regularne nie działało, a dpkg pokazuje pakiety, które zostały już usunięte, ale nadal mają pliki konfiguracyjne ( dpkg -l pokazuje „rc” zamiast „ii” jako status).

PythoNic
źródło
Ponieważ i tak korzystasz awk, równie dobrze możesz pozbyć się grepwywołania. Ponadto $()jest preferowany zamiast backicks. Właśnie pozbyłem się moich pakietów i386 za pomocą tego polecenia opartego na tym, który podałeś:sudo apt purge $(dpkg --get-selections | awk '$1 ~ /:i386$/ { print $1 }')
scy
23

Zblitzowałem wszystkie moje 32-bitowe pakiety w ten sposób:

sudo apt-get remove `dpkg --get-selections | grep i386 | awk '{print $1}'`
Mathnode
źródło
1
jak wykonać tego rodzaju polecenia, wiem, że apt-get i grep, ale co tam awk „{print $ 1}”, po prostu chcę wiedzieć.
Sukupa91
niesamowite i udało mi się teraz usunąć architekturę i386, ale kiedy dpkg -l | grep i386sprawdzam, czy w paczkach są jeszcze jakieś pomysły, również +1 za poprzedni komentarz i przypuszczam, że jest to związane z technikami skryptów powłoki
Ismail Marmoush
Brak odpowiedzi prawdopodobnie dlatego, że komentarze nie są miejscem na samouczek awk. Ten kawałek awk wypisuje tylko pierwsze pole każdej linii, do której jest przesyłany potok. Domyślnym separatorem pól awk jest spacja, „”.
rthbound
Zakończ tosudo dpkg --remove-architecture i386
Serge Stroobandt
9

Jeśli ktoś się zastanawia, istnieje o wiele bardziej rozsądny i pełen wdzięku sposób. Ostatnia poprzednia odpowiedź ma nadzieję zrobić to samo, ale wyszukiwanie kończy się niepowodzeniem, ponieważ architektury nie są w rzeczywistości częścią nazw pakietów, z wyjątkiem szczególnych przypadków.

jako root (lub z sudo) uruchom:

aptitude remove ~i~ri386

Jeśli nie używasz już aptitude w stosunku do apt-get, zrób to. To jest naprawdę doskonałe. Listę wyszukiwanych terminów aptitude znajdziesz tutaj .

Patrick
źródło
6

Oto inny sposób na jeszcze mniejsze ryzyko:

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

Będzie to w szczególności pasować tylko do pakietów kończących się ":i386", co jest standardową konwencją nazewnictwa dla wszystkich i386pakietów Debiana architektury.

kevinarpe
źródło
dlaczego usunąć nadmierne czyszczenie?
Lotus,
1
@Lotus: Nie jestem świadomy różnicy. Czy możesz wyjaśnić? Może możemy zaktualizować tę odpowiedź, aby ją poprawić.
kevinarpe
purge pobiera również pliki konfiguracyjne i wszystkie pozostałe katalogi iirc
Lotus
2
@Lotus Użyłem purge i zadziałało 14.04. To działało tylko dla mnie po usunięciu cudzysłowów i carretta. sudo apt-get purge .*:i386
Antonios Hadjigeorgalis,
6

W podręczniku debiana znajduje się wzmianka o tym poleceniu: apt-get purge ".*:<arch>"które wygląda tak i386:

apt-get purge ".*:i386"

Następnie możesz usunąć architekturę z dpkg:

dpkg --remove-architecture i386
Francisco Couzo
źródło