Как удалить все пакеты i386 из 64-битной Ubuntu?

Со временем я установил много пакетов i386, которые мне больше не нужны. Как я могу очистить систему и остаться только с пакетами amd64?

6 ответов

Решение

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

Верхние автоматизированные решения опасны и не всегда работают (1), поэтому здесь другой путь

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

или же

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

(Старайтесь использовать всегда и только один из инструментов. Поскольку aptitude лучше справляется с проблемами зависимости, я предпочитаю это.)

Хорошая идея также

dpkg --remove-architecture i386

и возможно

dpkg --print-foreign-architectures

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

Я уничтожил все свои 32-битные пакеты, как это:

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

В многоархивном руководстве Debian упоминается эта команда: apt-get purge ".*:<arch>"который бы выглядел так i386:

apt-get purge ".*:i386"

Затем вы можете удалить архитектуру из dpkg:

dpkg --remove-architecture i386

В случае, если кому-то интересно, есть гораздо более вменяемый и изящный способ сделать это. Последний предыдущий ответ надеется сделать то же самое, но поиск завершится неудачно, поскольку архитектуры фактически не являются частью имен пакетов, за исключением особых случаев.

с правами root (или с помощью sudo) выполните:

aptitude remove ~i~ri386

Если вы уже не используете aptitude вместо apt-get, сделайте. Это действительно отлично. Вы можете найти список условий поиска aptitude здесь.

Вот еще один способ снижения риска:

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

Это будет специально соответствовать только пакетам, заканчивающимся на ":i386", который является стандартным соглашением об именах для всех i386 Архитектура пакетов Debian.

Другие вопросы по тегам