Как удалить все пакеты i386 с Ubuntu 64bit?

Другой вариант использования для ex, указанного в файле POSIX редактора файлов

(Это предшественник vi и все еще является частью vi.)

printf '%s\n' '0/Fred Flintstone///s/$/ someString/' x | ex filename
3] Магия здесь заключается в том, что в отличие от Sed, Awk и подобных инструментов, ex не запускает код на каждой строке. Вы можете перемещать курсор вокруг, давать команды и т. Д.

В этом случае мы укажем номер строки 0 (что гарантирует, что Фред Флинтстон на первой строке будет учтен), а затем регулярное выражение /Fred Flintstone/, которое ссылается на первую строку в файле, соответствующем этому регулярному выражению, за которым следует другое регулярное выражение //, которое, будучи пустым, повторно использует последнее регулярное выражение и поэтому ссылается на вторую строку в файле, который соответствует; а затем мы используем команду s, которую вы уже знаете.

Команда x означает сохранение любых изменений и выход.

Мы используем printf для подачи команд на ex.

1
задан 15 August 2012 в 08:11

5 ответов

Я включил все свои 32-битные пакеты следующим образом:

sudo apt-get remove `dpkg --get-selections | grep i386 | awk '{print $1}'`
21
ответ дан 25 May 2018 в 13:28
  • 1
    как сделать такие команды, я знаю apt-get и grep, но что awk '{print $ 1}', просто хочу знать. – Sukupa91 27 November 2013 в 08:07
  • 2
    удивительный, и теперь я смог удалить архитектуру i386, но когда я делаю dpkg -l | grep i386, чтобы проверить пакеты, все еще есть идеи, а также +1 для комментария previouse, и я предполагаю, что это связано с методами сценариев оболочки – Ismail Marmoush 10 January 2014 в 18:07
  • 3
    Вероятно, ответов нет, потому что комментарии не являются местом для учебника awk. Этот бит awk печатает только первое поле каждой строки, в которую подается сообщение. Разделитель полей по умолчанию Awk - это пробел, " & Quot ;. – rthbound 15 January 2016 в 21:45

Верхние автоматизированные решения опасны и не всегда работают (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
[d5 ] (1) В предыдущих командах также перечислены пакеты, имеющие только имя i386 (хотя они предназначены для архитектуры с 64-разрядной архитектурой), регулярное выражение не работает, а dpkg показывает пакеты, которые уже удалены, но все еще остаются файлы конфигурации (dpkg - l показывает «rc» вместо «ii» как статус).

21
ответ дан 25 May 2018 в 13:28
  • 1
    Так как вы все равно используете awk, вы можете также избавиться от вызова grep. Кроме того, $() предпочтительнее вместо обратных ссылок. Я просто избавился от своих пакетов i386, используя эту команду, основанную на том, что вы дали: sudo apt purge $(dpkg --get-selections | awk '$1 ~ /:i386$/ { print $1 }') – scy 27 January 2017 в 03:54

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

с правами root (или с sudo):

aptitude remove ~i~ri386

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

9
ответ дан 25 May 2018 в 13:28

Другим способом является еще более низкий риск:

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

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

6
ответ дан 25 May 2018 в 13:28
  • 1
    зачем удалять излишки? – Lotus 7 October 2015 в 18:16
  • 2
    @Lotus: Я не знаю разницы. Не могли бы вы объяснить? Возможно, мы сможем обновить этот ответ, чтобы улучшить его. – kevinarpe 8 October 2015 в 04:41
  • 3
    чистка также принимает файлы конфигурации и любые справочники исправлений iirc – Lotus 8 October 2015 в 05:11
  • 4
    @Lotus Я использовал чистку, и она работала 14.04. Это только помогло мне после удаления кавычек и carret. [F1] – Antonios Hadjigeorgalis 9 March 2016 в 21:25

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

apt-get purge ".*:i386"

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

dpkg --remove-architecture i386
4
ответ дан 25 May 2018 в 13:28

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

Похожие вопросы: