Пропавший файл пакета возвращает повторная установка того же архива. Свои настройки при этом не теряются.
sudo dpkg -i <архив> распаковывает файлы заново, поверх того, что осталось, и снова проверяет зависимости. Архив нужен той же версии, что стоит: dpkg -s и dpkg -I покажут обе. Скачанные архивы apt хранит в /var/cache/apt/archives: оттуда, например, можно вернуть файлы tree.
С настройками dpkg обращается бережнее. Файл настройки, который пакет объявил своим, — conffile — dpkg не перезаписывает, если ты его менял: твоя правка остаётся. Список таких файлов печатает dpkg -s в поле Conffiles.
Не правь записи в /var/lib/dpkg/status руками ради «правильного» состояния: файлы от этого не вернутся, а база пакетов перестанет совпадать с системой.
Ты удалил conffile /etc/lab-pkg-report.conf и поставил тот же архив lab-pkg-report снова. Что будет с файлом настройки?
-
dpkg молча оставляет удалённый conffile удалённым. Спрашивает он, когда настройку изменили и ты, и новая версия пакета.
-
Удаление conffile dpkg считает твоей правкой, как и изменение. После установки
ls -l /etc/lab-pkg-report.confпо-прежнему напечатаетNo such file or directory.
Удалённый conffile для dpkg — тоже локальная правка, повторная установка его не вернёт. Поставляемую версию возвращает sudo dpkg -i --force-confmiss <архив>.
Главное в шаге
- Повторная установка того же архива возвращает файлы пакета.
- Изменённый тобой conffile dpkg не перезаписывает.
- Архив берут той же версии, что установлена; записи базы руками не правят.