Как узнать, какие пакеты без кандидатов на установку можно удалить? (Как правильно очистить такие пакеты?)

Это похоже на CSV-файл, в котором используются запятые в качестве разделителей полей и тильда в качестве символа кавычек.

Использование надлежащего синтаксического анализатора CSV, подобного тому, который предоставляется модулем Text::CSVPerl:

perl -MText::CSV -e 'print scalar(@{Text::CSV->new({quote_char=>"~"})->getline(\*STDIN)})' 

При этом будет прочитана первая строка CSV-файла file.csvи напечатано количество столбцов в ней. Мы создаем синтаксический анализатор, который понимает, что символ кавычки — это тильда, прежде чем читать первую строку с помощью этого синтаксического анализатора. Метод getline()этого синтаксического анализатора будет читать строку из заданного дескриптора файла и возвращать ссылку на массив данных, по одному элементу на проанализированный столбец. print scalar(...)— довольно распространенный способ печати длины массива в Perl.

Другой способ, используя CSVKit набор инструментов парсера CSV командной строки:

csvstat -n -q '~' 

или эквивалентно, используя длинные опции,

csvstat --names --quotechar '~' 

Аналогичным образом будет прочитана первая строка входного файла и возвращен список заголовков. (Первая строка CSV-файла обычно содержит заголовки столбцов ), по одному на строку. wc -lподсчитывает количество возвращенных строк.

Команда csvstatсама по себе (безwc -l)возвращает

  1: new file: 12345
  2: 125.5
  3:
  4:
  5:  example (45), case (20)
  6:
  7:

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

0
06.01.2021, 14:49
1 ответ

Я предлагаю пометить все такие пакеты как устанавливаемые автоматически:

apt-show-versions | awk '/No available version in archive/ { print $1 }' | xargs sudo apt-mark auto

Затем apt autoremoveотсеет тех, кого можно удалить; вам нужно будет проверить список и отменить -отметку всех пакетов, которые вы хотите сохранить(apt-mark manual).

Пакеты могут потерять свой «автоматический» маркер несколькими способами; в частности, если apt installкогда-либо используется с ними, , например. , чтобы обновить их или попытаться выяснить, почему они задерживаются. Пакеты без маркера «автоматический» не будут кандидатами на удаление, если с ними не конфликтует другой пакет. Даже автоматически -установленные пакеты могут оставаться дольше, чем предполагалось :по умолчанию, если другой пакет предложит их, они не будут удалены (, что является более слабой зависимостью, чем любая, которая может привести к тому, что пакет ] установлено в первую очередь, по умолчанию ).

3
18.03.2021, 22:38

Теги

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