Bagaimana cara menghapus semua paket i386 dari Ubuntu 64bit?

Jawaban:

15

Jika mereka tidak menghalangi Anda, saya akan meninggalkan mereka di tempat mereka.
Jika Anda bersikeras menghapus, gunakan dpkg -l | grep i386untuk membuat daftar paket-i386. Anda dapat menghapus ini setelah memeriksa dengan teliti seperti sudo apt-get purge <package-name>.

Henk
sumber
2
Kecuali bahwa bakat rusak pada multiarch , sehingga tidak akan bekerja dengan baik: P
tumbleweed
apt-get purge <package-name>harus tetap bekerja.
Eliah Kagan
2
"Setelah memeriksa dengan cermat" - itu tidak jelas. Harap lebih jelas.
kevinarpe
1
saya punya sistem i386 di usb kadang-kadang saya menggunakannya di mesin amd64, sekarang saya hanya ingin melakukan kebalikannya, jadi setelah menjalankan dpkg -l | grep amd64saya mendapat i386 pkg di daftar saya yang amd64-microcode 3.20160316.3 i386, saya pikir ':' dalam pola grep penting ! ( dpkg -l | grep ":amd64")
Jonah
24

Solusi otomatis teratas berbahaya dan tidak selalu berfungsi (1), jadi inilah cara lain

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

atau

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

(Cobalah untuk selalu menggunakan dan hanya salah satu alat. Karena bakat lebih baik ketika mengalami masalah ketergantungan, saya lebih suka itu.)

Ide bagus juga

dpkg --remove-architecture i386

dan mungkin

dpkg --print-foreign-architectures

(1) Perintah sebelumnya juga mencantumkan paket-paket yang hanya memiliki i386 dalam namanya (meskipun untuk arsitektur 64bit), ekspresi reguler tidak berfungsi dan dpkg memperlihatkan paket yang sudah dihapus, tetapi masih ada file konfigurasi yang tersisa ( dpkg -l menampilkan "rc" daripada "ii" sebagai status).

PythoNic
sumber
Karena Anda awktetap menggunakan , Anda juga bisa menghilangkan grepdoa. Juga, $()lebih disukai daripada backticks. Saya baru saja menyingkirkan paket i386 saya menggunakan perintah ini berdasarkan yang Anda berikan:sudo apt purge $(dpkg --get-selections | awk '$1 ~ /:i386$/ { print $1 }')
scy
23

Saya merusak semua paket 32-bit saya seperti ini:

sudo apt-get remove `dpkg --get-selections | grep i386 | awk '{print $1}'`
Mathnode
sumber
1
bagaimana cara membuat perintah semacam ini, saya tahu apt-get dan grep tetapi whats awk '{print $ 1}', hanya ingin tahu.
Sukupa91
luar biasa, dan saya bisa menghapus arsitektur i386 sekarang, tetapi ketika saya lakukan dpkg -l | grep i386untuk memeriksa paket masih ada ide, juga +1 untuk komentar sebelumnya dan tebakan saya itu terkait dengan teknik skrip shell
Ismail Marmoush
Tidak ada tanggapan mungkin karena komentar bukan tempat untuk tutorial awk. Sedikit awk hanya mencetak bidang pertama dari setiap baris yang disalurkan. Pemisah bidang default awk adalah spasi, "".
rthbound
Akhiri dengansudo dpkg --remove-architecture i386
Serge Stroobandt
9

Jika ada yang bertanya-tanya, ada cara yang lebih waras dan anggun untuk melakukan ini. Jawaban terakhir sebelumnya berharap untuk melakukan hal yang sama, tetapi pencarian gagal karena arsitektur sebenarnya bukan bagian dari nama paket, kecuali dalam kasus khusus.

sebagai root (atau dengan sudo) jalankan:

aptitude remove ~i~ri386

Jika Anda tidak menggunakan aptitude daripada apt-get, lakukan. Sangat bagus. Anda dapat menemukan daftar istilah pencarian aptitude di sini .

Patrick
sumber
6

Berikut cara lain yang berisiko lebih rendah:

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

Ini secara khusus hanya akan cocok dengan paket yang diakhiri ":i386", yang merupakan konvensi penamaan standar untuk semua i386paket Debian arsitektur.

kevinarpe
sumber
mengapa menghapus pembersihan?
Lotus
1
@ Lotus: Saya tidak mengetahui perbedaannya. Bisakah Anda jelaskan? Mungkin kita dapat memperbarui jawaban ini untuk memperbaikinya.
kevinarpe
purge juga mengambil file konfigurasi dan direktori yang tersisa iirc
Lotus
2
@ Lotus saya menggunakan pembersihan dan bekerja pada 14,04. Ini hanya berfungsi untuk saya setelah menghapus tanda kutip dan carret. sudo apt-get purge .*:i386
Antonios Hadjigeorgalis
6

The panduan multiarch debian ini menyebutkan perintah ini: apt-get purge ".*:<arch>"yang akan terlihat seperti ini untuk i386:

apt-get purge ".*:i386"

Anda kemudian dapat menghapus arsitektur dari dpkg:

dpkg --remove-architecture i386
Francisco Couzo
sumber