Я хотел бы восстановить LightDM в его состояние по умолчанию, потому что по какой-то причине
/etc/lightdm/unity-greeter.conf
теперь пустой файл.
Удаление /etc/lightdm/unity-greeter.conf
и последующий запуск sudo apt-get install --reinstall unity-greeter
не создают новый файл конфигурации, как вы могли ожидать.
Как я могу восстановить отсутствующий файл конфигурации?
--force-confask
без удаления является то, что он предлагает показать разницу между вашими изменениями и оригиналом.ucf
этой--force-confmiss
опцией, не будет работать, вам придется использоватьsudo UCF_FORCE_CONFFMISS=1 apt-get --reinstall install [pkgname]
.-o
я получал ошибку «dpkg: error: unknown option -o», но когда я использовал--option
вместо этого, это работало. Я на Ubuntu 16.04.1.Во многих случаях файл конфигурации по умолчанию предоставляется пакетом напрямую. В таких случаях вы можете извлечь конкретный файл из пакета, что позволяет легко восстановить файл.
Чтобы проверить, предоставляет ли файл файл, запустите его
dpkg -S
по полному пути. Например:Предоставляется пакетом
Как мы видим,
/etc/ssh/sshd_config
не предоставляется ни одним пакетом напрямую, но два других предоставляютсяopenssh-client
иsudo
соответственно. Итак, если вы хотите восстановить/etc/ssh/ssh_config
, сначала получите пакет:Теперь вы можете извлекать файл непосредственно в его предполагаемое местоположение или в его предполагаемое местоположение относительно текущего каталога, а не
/
, если вы хотите сравнить и сопоставить, или вручную объединить их или что-то еще. Для первых:-C /
Говоритtar
извлечь после перехода к/
, что означает , что целевой файл будет заменен. Если вы удалите его,tar
будет извлечен в текущий каталог, то./etc/ssh/ssh_config
есть значение будет существовать в вашем текущем каталоге.Если по какой-то причине
sudo
не работает, используйтеpkexec
вместо этого. Еслиpkexec
тоже не работает, перезагрузитесь в режим восстановления, смонтируйте/
какrw
. Если что не работает ...Создано пакетом
Как насчет
/etc/ssh/sshd_config
? Кажется, он не предоставляется ни одним пакетом, так как он появился?В этом случае (и во многих других подобных случаях, например в другом
/etc/modules
) файл был создан с использованием сценария сопровождающего пакета во время установки. Это часто делается, когда необходимо изменить файл конфигурации из-за ответов пользователя на запросы. OpenSSH, например, спрашивает,PermitRootLogin
следует ли изменитьno
, среди прочего, в более новых версиях.Чтобы выявить такие случаи, попробуйте выполнить поиск сценариев сопровождающего. Как правило, вам нужно только посмотреть
postinst
, но если вам не повезлоpostinst
, попробуйтеpreinst
также:В этом случае нам повезло:
Подходит только один файл, и, если повезет, он содержит код для создания файла конфигурации по умолчанию :
Как правило, это то, что вы увидите (другой пример,
/etc/modules
изkmod
):Таким образом, вы можете искать этот код и получать содержимое из скрипта напрямую.
Нет такого сценария? Вы все еще можете попытаться просмотреть списки файлов связанных пакетов, чтобы увидеть, попадет ли что-нибудь, но на данный момент я не вижу легко обобщаемого метода (если не считать переустановку в переходных средах, таких как chroot или VM или живой USB).
В долгосрочной перспективе сохраняйте свою конфигурацию под контролем версий. Любой VCS стоит его соли может спасти день здесь, и утилита значительно упрощает задачу сохранения в VCS.
etckeeper
/etc
источник
Согласно этой теме на форумах Ubuntu, это так же просто, как запустить следующее в терминале:
источник
dpkg-maintscript-helper: warning: environment variable DPKG_MAINTSCRIPT_NAME missing dpkg-maintscript-helper: warning: environment variable DPKG_MAINTSCRIPT_PACKAGE missing
. LightDM также не был восстановлен в своей первоначальной конфигурации.sudo apt-get --reinstall install lightdm
) и до сих пор/etc/lightdm/unity-greeter.conf
пусто.Найдите пакет, которому принадлежит файл конфигурации:
он выведет что-то похожее на:
поэтому имя пакета "unity-greeter", скачайте пакет:
затем извлеките данные дерева файловой системы в файл tar:
наконец, извлеките только ту точную конфигурацию, где хотите, чтобы она была:
./etc/lightdm/unity-greeter.conf
это имя файла в нашем архиве./etc/lightdm/unity-greeter.conf
это то, куда я отправляю это, чтобы быть сохраненным.Или, как предложил @Muru, мы можем сделать это в один лайнер:
источник
dpkg-deb --fsys-tarfile unity-greeter_version-0ubuntu1_amd64.deb | sudo tar x -C / ./etc/lightdm/unity-greeter.conf
, такtar
что перейдите на cd/
перед извлечением.У меня была такая же проблема на Ubuntu 17.04. Postinstall использует шаблон из
/usr/share/openssh/
. Он проверяет, включен rootlogin или нет, устанавливает эту опцию и копирует ее в/etc/ssh
. После этого он делает некоторые вызовы ucf и ucfr (я не знаю, для чего это).Просто скопируйте
/usr/share/openssh/sshd_config
в/etc/ssh/sshd_config
:Теперь настройте свой,
sshd_config
как вы хотите.источник
Это не работает все файлы конфигурации. Для
/etc/nsswitch.conf
см Как восстановить / обновить и т.д. / nsswitch.conf файлы . Кажется, невозможно восстановить этот файл с помощьюdpkg-reconfigure
.источник
Удалите (верните) файл и переустановите
unity-greeter
с помощьюapt-get install --reinstall unity-greeter
.источник