Chciałbym przywrócić LightDM do stanu domyślnego, ponieważ z jakiegoś powodu
/etc/lightdm/unity-greeter.conf
jest on teraz pustym plikiem.
Usunięcie, /etc/lightdm/unity-greeter.conf
a następnie uruchomienie sudo apt-get install --reinstall unity-greeter
nie tworzy nowego pliku konfiguracyjnego, jak można się spodziewać.
Jak mogę przywrócić brakujący plik konfiguracyjny?
źródło
--force-confask
bez usuwania jest to, że oferuje różnicę między zmianami a oryginałem.ucf
tej--force-confmiss
opcji nie będzie działać, trzeba użyćsudo UCF_FORCE_CONFFMISS=1 apt-get --reinstall install [pkgname]
.-o
, dostałem błąd „dpkg: error: unknown option -o”, ale kiedy go użyłem--option
, zadziałało. Jestem na Ubuntu 16.04.1.W wielu przypadkach domyślny plik konfiguracyjny jest dostarczany bezpośrednio przez pakiet. W takich przypadkach możesz wyodrębnić konkretny plik z pakietu, dzięki czemu łatwo odzyskasz plik.
Aby sprawdzić, czy pakiet zawiera plik, uruchom
dpkg -S
pełną ścieżkę do pliku. Na przykład:Dostarczone przez pakiet
Jak widzimy,
/etc/ssh/sshd_config
nie jest dostarczany bezpośrednio przez żaden pakiet, ale pozostałe dwa są dostarczane odpowiednio przezopenssh-client
isudo
. Więc jeśli chcesz odzyskać/etc/ssh/ssh_config
, najpierw zdobądź pakiet:Teraz możesz wyodrębnić plik bezpośrednio do jego zamierzonej lokalizacji lub do zamierzonej lokalizacji względem bieżącego katalogu zamiast
/
, jeśli chcesz porównać i kontrastować, lub ręcznie scalić je lub coś. Dla tych pierwszych:-C /
Mówitar
wyodrębnić po zmianie/
, co oznacza, że plik docelowy zostaną zastąpione. Jeśli go usuniesz,tar
wyodrębnisz go do bieżącego katalogu, co oznacza, że./etc/ssh/ssh_config
będzie istniał w twoim bieżącym katalogu.Jeśli z jakiegoś powodu
sudo
nie działa, użyjpkexec
zamiast tego. Jeślipkexec
też nie działa, uruchom ponownie w trybie odzyskiwania, zamontuj/
jakorw
. Jeśli to nie działa ...Utworzony przez pakiet
Co
/etc/ssh/sshd_config
? Wydaje się, że nie zapewnia go żaden pakiet, więc jak to wyglądało?W tym przypadku (i w wielu innych takich przypadkach, innym przykładem
/etc/modules
), plik został utworzony przy użyciu skryptu opiekuna pakietu podczas instalacji. Często dzieje się tak, gdy plik konfiguracyjny wymaga zmiany ze względu na odpowiedzi użytkowników na zapytania. Na przykład OpenSSH pyta, czyPermitRootLogin
należy go zmienićno
między innymi w nowszych wersjach.Aby zidentyfikować takie przypadki, spróbuj przejrzeć skrypty opiekuna. Zazwyczaj wystarczy spojrzeć
postinst
, ale jeśli nie masz szczęściapostinst
, spróbujpreinst
również:W tym przypadku mamy szczęście:
Tylko jeden plik pasował i, na szczęście, zawiera kod do utworzenia domyślnego pliku konfiguracyjnego :
Zazwyczaj jest to, co zobaczysz (inny przykład,
/etc/modules
zkmod
):Możesz więc poszukać tego kodu i pobrać zawartość bezpośrednio ze skryptu.
Nie ma takiego skryptu? Nadal możesz próbować przeszukiwać listy plików powiązanych pakietów, aby sprawdzić, czy coś nie trafi, ale w tym momencie nie widzę łatwej do uogólnienia metody (brak ponownej instalacji w środowiskach przejściowych, takich jak chroot lub VM lub USB na żywo).
Na dłuższą metę zachowaj swoją konfigurację pod kontrolą wersji. Wszelkie VCS wart jego sól można zapisać dzień tutaj i narzędzie znacznie upraszcza utrzymanie w VCS.
etckeeper
/etc
źródło
Zgodnie z tym wątkiem na forach Ubuntu jest to tak proste, jak uruchomienie następującego w terminalu:
źródło
dpkg-maintscript-helper: warning: environment variable DPKG_MAINTSCRIPT_NAME missing dpkg-maintscript-helper: warning: environment variable DPKG_MAINTSCRIPT_PACKAGE missing
. LightDM również nie został przywrócony do oryginalnej konfiguracji.sudo apt-get --reinstall install lightdm
) i nadal/etc/lightdm/unity-greeter.conf
jest pusty.Znajdź pakiet, który jest właścicielem pliku konfiguracyjnego:
wyświetli coś podobnego do:
więc nazwa pakietu to „unity-greeter”, pobierz pakiet:
następnie wyodrębnij dane drzewa systemu plików do pliku tar:
wreszcie wyodrębnij tylko tę dokładną konfigurację, gdziekolwiek chcesz:
./etc/lightdm/unity-greeter.conf
to nazwa pliku w naszym archiwum./etc/lightdm/unity-greeter.conf
wysyłam go do przechowywania.Lub, jak sugeruje @Muru, możemy to zrobić w jednym wierszu:
źródło
dpkg-deb --fsys-tarfile unity-greeter_version-0ubuntu1_amd64.deb | sudo tar x -C / ./etc/lightdm/unity-greeter.conf
, atar
następnie wypakuj go/
przed wypakowaniem.Miałem ten sam problem na Ubuntu 17.04. Poinstalacja używa szablonu z
/usr/share/openssh/
. Sprawdza, czy rootlogin jest włączony, czy nie, ustawia tę opcję i kopiuje ją/etc/ssh
. Potem wykonuje kilka wywołań ucf i ucfr (nie wiem po co to jest).Po prostu skopiuj
/usr/share/openssh/sshd_config
do/etc/ssh/sshd_config
:Teraz dostosuj,
sshd_config
jak chcesz.źródło
To nie działa na wszystkie pliki konfiguracyjne. Aby uzyskać
/etc/nsswitch.conf
informacje na temat przywracania / odtwarzania plików etc / nsswitch.conf . Nie wydaje się możliwe odtworzenie tego pliku za pomocądpkg-reconfigure
.źródło
Usuń (z powrotem) plik i zainstaluj ponownie za
unity-greeter
pomocąapt-get install --reinstall unity-greeter
.źródło