3

У меня недавно была странная проблема, когда я устанавливал zsh (apt-get install zsh), но он не устанавливал конфигурационные файлы - в частности /etc/zsh/zshenv и друзей.

После некоторого времени и усилий мне удалось отследить эту запись в журнале:

deferred_configure '/etc/zsh/zshenv' (= '/etc/zsh/zshenv')useredited = 1 distedited = 0 what = 202

И это объяснение:

Удаление файла считается «редактированием», потому что для многих файлов конфигурации отсутствие файла имеет смысл.

Теперь, как это происходит, я удалил /etc/zsh и т.д. / каталог ЗШ, так что это все имеет смысл - за исключением того, что я также сделал apt-get remove zsh !!

Итак, учитывая, что я удалил zsh, когда я пришел, чтобы переустановить его, почему он удивился отсутствию файлов конфигурации? Они не будут присутствовать в новой системе, то есть без установленной zsh, так как он узнал, что они были там ранее?

И как мне это остановить?

Я знаю, что могу передать --force-confmiss , но дело не в этом. Действительно, я не верю, что это может быть сделано при использовании apt-get в любом случае.

Я не хочу менять способ установки программ. Вместо этого я хочу знать, как dpkg определяет, что файлы, которые он не ожидал существовать в первую очередь, были удалены пользователем. В чем разница между файлом, который был удален, и файлом, который никогда не существовал? Это как-то связано с apt-get --purge?

2 ответа2

3

Со страницы руководства dpkg:

- удалить пакет (...) Удалить установленный пакет. Это удаляет все, кроме conffiles, что позволяет избежать необходимости переконфигурировать пакет, если он будет переустановлен позже (conffiles - это файлы конфигурации, которые перечислены в управляющем файле DEBIAN/conffiles).

Таким образом, вы не удалили полностью zsh , но некоторая информация осталась в системе. Статус пакета будет "d" (удален), а не "p" (очищен или никогда не виден).

Вам необходимо очистить пакет, чтобы удалить также и conffiles, чтобы переустановить пакеты как новые.

Примечание: если вам интересно, вы можете проверить /var/lib/dpkg/ чтобы узнать, что система знает о ваших пакетах.

0

Вам необходимо удалить посторонние файлы конфигурации.

  1. Вы должны установить dctrl-tools или grep-status (не оба), вы можете использовать эту команду grep-status в скрипте для удаления посторонних файлов конфигурации

  2. вместо этого будет полезна следующая команда:

    aptitude purge ~c
    

    Это тильда, а не тире. Я слышал, что aptitude purge ?config-files тоже будут работать, но я не знаю об этом.

    Сначала вы можете заменить purge search если не чувствуете себя в безопасности.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .