Ich möchte LightDM auf den Standardzustand zurücksetzen, da es aus irgendeinem Grund
/etc/lightdm/unity-greeter.conf
jetzt eine leere Datei ist.
Durch das Löschen /etc/lightdm/unity-greeter.conf
und anschließende Ausführen sudo apt-get install --reinstall unity-greeter
wird nicht wie erwartet eine neue Konfigurationsdatei erstellt.
Wie kann ich eine fehlende Konfigurationsdatei wiederherstellen?
quelle
--force-confask
ohne zu löschen ist, dass es den Unterschied zwischen Ihren Änderungen und dem Original zeigt.ucf
der--force-confmiss
Option verwaltet werden, nicht funktionieren, müssen Sie verwendensudo UCF_FORCE_CONFFMISS=1 apt-get --reinstall install [pkgname]
.-o
Fehlermeldung "dpkg: error: unknown option -o" erhalten habe, aber bei der Verwendung hat--option
es funktioniert. Ich bin auf Ubuntu 16.04.1.In vielen Fällen wird die Standardkonfigurationsdatei direkt von einem Paket bereitgestellt. In solchen Fällen können Sie die spezifische Datei aus dem Paket extrahieren und so die Datei leicht wiederherstellen.
Um zu überprüfen, ob ein Paket die Datei enthält, führen Sie
dpkg -S
den vollständigen Pfad der Datei aus. Zum Beispiel:Bereitgestellt von einem Paket
Wie wir sehen können,
/etc/ssh/sshd_config
wird nicht direkt von jedem Paket zur Verfügung gestellt, aber die anderen beiden durch vorgesehen sindopenssh-client
undsudo
jeweils. Wenn Sie sich also erholen möchten/etc/ssh/ssh_config
, holen Sie sich zuerst das Paket:Jetzt können Sie die Datei entweder direkt an den vorgesehenen Speicherort extrahieren oder relativ zum aktuellen Verzeichnis an den vorgesehenen Speicherort, anstatt sie
/
zu vergleichen und zu vergleichen oder manuell zusammenzuführen. Für das ehemalige:Der
-C /
Befehltar
zum Extrahieren nach dem Wechsel zu/
, was bedeutet, dass die Zieldatei ersetzt wird. Wenn Sie es entfernen,tar
wird es in das aktuelle Verzeichnis extrahiert, was bedeutet,./etc/ssh/ssh_config
dass es in Ihrem aktuellen Verzeichnis vorhanden ist.Wenn aus irgendeinem Grund
sudo
nicht funktioniert, verwenden Siepkexec
stattdessen. Wennpkexec
dies auch nicht funktioniert, starten Sie den Computer im Wiederherstellungsmodus neu und hängen Sie ihn/
als einrw
. Wenn das nicht geht ...Erstellt von einem Paket
Was ist
/etc/ssh/sshd_config
? Es scheint von keinem Paket bereitgestellt zu werden. Wie ist es also erschienen?In diesem Fall (und in vielen anderen Fällen, in denen es sich um ein anderes Beispiel handelt
/etc/modules
) wurde die Datei während der Installation mit einem Paketverwaltungsskript erstellt . Dies geschieht häufig, wenn die Konfigurationsdatei aufgrund von Benutzerantworten auf Abfragen geändert werden muss. OpenSSH fragt beispielsweise, ob unter anderem in neueren VersionenPermitRootLogin
geändert werden sollno
.Um solche Fälle zu identifizieren, versuchen Sie, die Betreuerskripte zu durchsuchen. Normalerweise müsstest du nur schauen
postinst
, aber wenn du kein Glück hastpostinst
, versuche espreinst
auch:In diesem Fall haben wir Glück:
Es stimmt nur eine Datei überein, und zum Glück enthält sie Code zum Erstellen einer Standardkonfigurationsdatei :
In der Regel sehen Sie Folgendes (ein weiteres Beispiel
/etc/modules
auskmod
):Sie können also nach diesem Code suchen und den Inhalt direkt aus dem Skript abrufen.
Kein solches Skript? Sie können immer noch versuchen, in den Dateilisten verwandter Pakete zu stöbern, um festzustellen, ob etwas zutrifft. Derzeit sehe ich jedoch keine einfach zu verallgemeinernde Methode (kurz vor der Neuinstallation in vorübergehenden Umgebungen wie einer Chroot oder einer VM oder einem Live-USB).
Behalten Sie auf lange Sicht Ihre Konfiguration unter Versionskontrolle. Jedes VCS, das sein Geld wert ist, kann hier den Tag retten, und das
etckeeper
Hilfsprogramm vereinfacht die Aufbewahrung/etc
in einem VCS erheblich .quelle
Laut diesem Thread in den Ubuntu-Foren ist es so einfach, in einem Terminal Folgendes auszuführen:
quelle
dpkg-maintscript-helper: warning: environment variable DPKG_MAINTSCRIPT_NAME missing dpkg-maintscript-helper: warning: environment variable DPKG_MAINTSCRIPT_PACKAGE missing
. LightDM wurde auch nicht in seiner ursprünglichen Konfiguration wiederhergestellt.sudo apt-get --reinstall install lightdm
) und ist immer noch/etc/lightdm/unity-greeter.conf
leer.Suchen Sie das Paket, dem die Konfigurationsdatei gehört:
es wird etwas Ähnliches ausgeben wie:
Damit der Paketname "unity-greeter" lautet, laden Sie das Paket herunter:
Extrahieren Sie dann die Daten des Dateisystembaums in eine TAR-Datei:
Extrahieren Sie schließlich nur die genaue Konfiguration, die Sie möchten:
./etc/lightdm/unity-greeter.conf
ist der Dateiname in unserem Archiv./etc/lightdm/unity-greeter.conf
Hier schicke ich es zur Aufbewahrung.Oder wie @Muru vorgeschlagen hat, können wir es in einem Liner tun:
quelle
dpkg-deb --fsys-tarfile unity-greeter_version-0ubuntu1_amd64.deb | sudo tar x -C / ./etc/lightdm/unity-greeter.conf
, sotar
wird cd/
vor extrahieren.Ich hatte das gleiche Problem auf Ubuntu 17.04. Die Nachinstallation verwendet eine Vorlage von
/usr/share/openssh/
. Es prüft, ob rootlogin aktiviert ist oder nicht, setzt diese Option und kopiert sie nach/etc/ssh
. Danach führt es einige UFC- und UFC-Aufrufe durch (ich weiß nicht, wofür das ist).Einfach kopieren
/usr/share/openssh/sshd_config
nach/etc/ssh/sshd_config
:Stellen Sie nun Ihren ein,
sshd_config
wie Sie möchten.quelle
Dies funktioniert nicht bei allen Konfigurationsdateien. Für
/etc/nsswitch.conf
sehen, wie wiederherstellen / neu etc / nsswitch.conf Dateien . Es scheint nicht möglich zu sein, diese Datei mit zu rekonstruierendpkg-reconfigure
.quelle
Löschen (zurück) auf die Datei und neu zu installieren und
unity-greeter
mitapt-get install --reinstall unity-greeter
.quelle