Як видалити всі пакети i386 з Ubuntu 64bit?


Відповіді:


15

Якби вони вам не подобалися, я б залишив їх там, де вони є.
Якщо ви наполягаєте на видаленні, використовуйте dpkg -l | grep i386для створення списку i386-пакетів. Ви можете видалити їх після ретельної перевірки чимось подібним sudo apt-get purge <package-name>.


2
За винятком того, що здібності порушені на мультиархах , так що це не спрацює так добре: P
tumbleweed

apt-get purge <package-name>хоча все-таки працювати.
Елія Каган

2
"після ретельної перевірки" - це неясно. Будьте зрозуміліші.
kevinarpe

1
У мене є система i386 в usb, іноді я використовую її на машинах amd64, тепер я просто хотів зробити зворотний, тому після запуску dpkg -l | grep amd64я отримав i386 кг у своєму списку, який є amd64-microcode 3.20160316.3 i386, я думаю, що ':' у схемі grep важливо! ( dpkg -l | grep ":amd64")
Йона

24

Верхні автоматизовані рішення небезпечні і не завжди працюють (1), тому тут інший спосіб

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

або

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

(Намагайтеся використовувати завжди і лише один із інструментів. Оскільки здатність краще, коли виникають проблеми із залежністю, я вважаю за краще це.)

Гарна ідея також

dpkg --remove-architecture i386

а може, й

dpkg --print-foreign-architectures

(1) Колишні команди також перелічують пакети, на яких є лише i386 (хоча вони мають 64-бітну архітектуру), регулярний вираз не працював, і dpkg показує пакунки, які вже видалені, але в них залишилися файли конфігурації ( dpkg -l показує "rc" замість "ii" як статус).


Оскільки ви все awkодно користуєтесь , ви також можете позбутися grepвиклику. Крім того, $()бажано замість задньої частини. Я щойно позбувся своїх пакунків i386, використовуючи цю команду, виходячи з тієї, яку ви дали:sudo apt purge $(dpkg --get-selections | awk '$1 ~ /:i386$/ { print $1 }')
scy

23

Я запалив усі свої 32-бітові пакети так:

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

1
як скласти такі команди, я знаю, apt-get і grep, але що awk '{print $ 1}', просто хочу знати.
Sukupa91

дивовижно, і я зміг видалити архітектуру i386 зараз, але коли я dpkg -l | grep i386перевіряю пакунки, все ще є якісь ідеї, також +1 для коментаря до попереднього використання, і я здогадуюсь, що це пов’язано з методами сценаріїв оболонок
Ісмаїл Мармех

Немає відповідей, ймовірно, тому що коментарі - це не місце для навчального посібника. Цей шматочок awk друкує лише перше поле кожного рядка, в який розміщується. Роздільник полів за замовчуванням Awk - це пробіл, "".
rthbound

Закінчіть цеsudo dpkg --remove-architecture i386
Серж Стротобандт

9

Якщо хтось цікавиться, існує набагато більш розумний і витончений спосіб зробити це. Остання попередня відповідь сподівається зробити те саме, але цей пошук не вдається, оскільки архітектури насправді не є частиною назв пакетів, за винятком спеціальних випадків.

як запустити root (або з sudo):

aptitude remove ~i~ri386

Якщо ви вже не використовуєте здатність над apt-get, зробіть це. Це справді чудово. Ви можете знайти список пошукових термінів у відповідності тут .


6

Ось ще один спосіб, що має ще менший ризик:

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

Це конкретно відповідатиме лише пакетам, що закінчуються ":i386", що є стандартною умовою іменування для всіх i386архітектурних пакетів Debian.


навіщо видаляти над очищенням?
Лотос

1
@Lotus: Я не знаю різниці. Чи можете ви поясніть, будь ласка? Можливо, ми можемо оновити цю відповідь, щоб покращити її.
kevinarpe

Чистка також приймає файли конфігурації та будь-які залишки каталогів iirc
Lotus

2
@Lotus Я використовував чистку, і вона працювала 14.04. Це спрацювало для мене лише після видалення лапок і карет. sudo apt-get purge .*:i386
Антоніос Хаджігеоргаліс

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.