Как установить статус выбора пакета на текущий статус?

Я сделал dpkg --clear-selections Команда и обнаружил, что все мои пакеты выбраны для удаления. Как говорится на страницах руководства

--clear-selections: установить запрашиваемое состояние каждого несущественного пакета для удаления.

и позже я знал, если я сделаю sudo apt-get dselect-upgrade все пакеты будут удалены.

Я проверил этот вопрос в Ask Ubuntu и прочитал значение каждого из флагов в dpkg -l команда. Там написано: "Первый столбец показывает" желаемое состояние пакета "или состояние выбора, а второй столбец показывает" текущее состояние ".

Поскольку у меня нет проблем с зависимостями, я хочу установить состояние выбора в качестве желаемого состояния в базе данных dpkg. Как я могу это сделать?

Я не дал вывод dpkg -l из-за большого объема производства. На выходе все ri колонны.

Также, когда я сделал команду sudo apt-get dselect-upgrade, это дало мне это сообщение,

......... После длинного списка имен пакетов, которые будут удалены...
ВНИМАНИЕ: Следующие необходимые пакеты будут удалены.
Это НЕ должно быть сделано, если вы точно не знаете, что делаете!
  apt ubuntu-keyring (из-за apt) libapt-pkg4.12 (из-за apt) libstdC++6 (из-за
  apt) gnupg (из-за apt) bash-файлов bash
4 обновлены, 0 вновь установлены, 1764 для удаления и 1 не обновлены.
Нужно получить 0 B/1359 кБ архивов.
После этой операции будет освобождено 3078 МБ дискового пространства.
Вы собираетесь сделать что-то потенциально опасное.
Для продолжения введите фразу "Да, делай, как я говорю!"?] 

Есть ли способ сбросить состояние выбора пакетов в текущее установленное состояние?

2 ответа

Решение

Попробуйте эту команду, чтобы изменить статус пакета -

echo "<package-name> <status>" | sudo dpkg --set-selections

Скажем, вы установили статус пакета zip в deinstall, Откат к исходному состоянию install запустить эту команду

echo "zip install" | sudo dpkg --set-selections 

Чтобы изменить больше пакетов одновременно, используйте эту команду

dpkg --get-selections | sed -n 's/\<<current-status>$/<status>/p' | sudo dpkg --set-selections

например, чтобы изменить все пакеты со статусом deinstall для установки use -

dpkg --get-selections | sed -n 's/\<deinstall$/install/p' | sudo dpkg --set-selections

Хорошо, мне просто нужно было сделать это. Спасибо @sarowar за команду. Шаги, чтобы сделать скрипт для всех установленных пакетов:

export IFS='
'
for i in $(dpkg -l |egrep '^[a-z]i.*' |awk '{print $2" install"}') ; do echo $i|dpkg --set-selections  ; done
unset IFS
Другие вопросы по тегам