Ответы:
Если они вам не мешают, я бы оставил их там, где они есть.
Если вы настаиваете на удалении, используйте dpkg -l | grep i386
для создания списка i386-пакетов. Вы можете удалить их после тщательной проверки с чем-то вроде sudo apt-get purge <package-name>
.
apt-get purge <package-name>
все равно должно работать
dpkg -l | grep amd64
я получил pkg i386 в моем списке, который amd64-microcode 3.20160316.3 i386
, я думаю, что ':' в шаблоне grep является важным ! ( dpkg -l | grep ":amd64"
)
Верхние автоматизированные решения опасны и не всегда работают (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» в качестве статуса).
awk
любом случае, вы можете также избавиться от grep
вызова. Кроме того, $()
предпочтительнее вместо кавычек. Я только что избавился от своих пакетов i386, используя эту команду, основанную на той, которую вы дали:sudo apt purge $(dpkg --get-selections | awk '$1 ~ /:i386$/ { print $1 }')
Я уничтожил все свои 32-битные пакеты, как это:
sudo apt-get remove `dpkg --get-selections | grep i386 | awk '{print $1}'`
dpkg -l | grep i386
проверяю пакеты, есть ли еще какие-либо идеи, также +1 для предыдущего комментария и, я думаю, это связано с методами сценариев оболочки
sudo dpkg --remove-architecture i386
В случае, если кому-то интересно, есть гораздо более вменяемый и изящный способ сделать это. Последний предыдущий ответ надеется сделать то же самое, но поиск завершится неудачно, поскольку архитектуры фактически не являются частью имен пакетов, за исключением особых случаев.
с правами root (или с помощью sudo) выполните:
aptitude remove ~i~ri386
Если вы уже не используете aptitude вместо apt-get, сделайте. Это действительно отлично. Вы можете найти список условий поиска aptitude здесь .
Вот еще один способ снижения риска:
apt-get remove "^.*:i386$"
Это будет конкретно соответствовать только пакетам, оканчивающимся на ":i386"
, что является стандартным соглашением об именах для всех i386
архитектурных пакетов Debian.
sudo apt-get purge .*:i386
В многоархивном руководстве Debian упоминается эта команда:, apt-get purge ".*:<arch>"
которая выглядит такi386
:
apt-get purge ".*:i386"
Затем вы можете удалить архитектуру из dpkg:
dpkg --remove-architecture i386