Ich habe kürzlich Samba installiert und die /etc/samba/smb.conf
Datei durcheinander gebracht . Wie bekomme ich die ursprüngliche Konfiguration zurück?
Ich habe kürzlich Samba installiert und die /etc/samba/smb.conf
Datei durcheinander gebracht . Wie bekomme ich die ursprüngliche Konfiguration zurück?
Antworten:
Bearbeitet :
Habe dies auf einer Serverfehlerfrage entdeckt . Wenn das dpkg-reconfigure foo
nicht funktioniert, verwenden Sie Folgendes:
Entfernen Sie die beschädigte Konfigurationsdatei oder benennen Sie sie um.
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.broken
Ersatz anfordern von dpkg
.
sudo dpkg -i --force-confmiss /path/to/samba-common.deb
Dies weist dpkg
an, fehlende Konfigurationsdateien durch solche aus der .deb zu ersetzen. Möglicherweise finden Sie das Originalpaket .deb in /var/cache/apt/archives
, oder Sie können eine neue Kopie derselben Version aus den Repositorys Ihrer Distribution verwenden.
dpkg -i --force-confnew foo.deb
Dies weist Sie dpkg
an, vorhandene Konfigurationsdateien mit denen aus der .deb-Datei zu überschreiben. Möglicherweise finden Sie das Originalpaket .deb in /var/cache/apt/archives
, oder Sie können eine neue Kopie derselben Version aus den Repositorys Ihrer Distribution verwenden.
dpkg
dann das Überschreiben der Konfigurationsdatei, wenn es sonst um Erlaubnis gebeten hätte . Es macht nicht macht es auf magische Weise unberührte Konfigurationsdateien aus dem Paket neu zu erstellen.
--force-confmiss
stattdessen. In diesem speziellen Fall, z. B. Samba, --force-confnew
würde das Überschreiben meiner Meinung nach durchgeführt, aber Sie haben Recht, dass es von den Einzelheiten der Paketkonfigurationsskripte abhängt.
Kurze Antwort: /usr/share/samba/smb.conf
ist die Originalversion der Datei smb.conf.
Wenn ich mit dieser Situation für ein Paket konfrontiert bin, mache ich Folgendes:
Suchen Sie in Ihrem Editor nach Sicherungsdateien der Originalversion . Ich verwende Emacs, das normalerweise foo~
Dateien hinterlässt , und ich habe die Option zur numerischen Versionskontrolle so eingestellt, dass immer die Originalversion verfügbar ist foo.~1~
. Aber vielleicht haben Sie es anders gemacht oder einen anderen Editor verwendet. Überprüfen Sie die Konfiguration Ihres Editors, um diese Funktion zu aktivieren, falls Sie dies noch nicht getan haben. Es ist eine gute Angewohnheit, sich darauf einzulassen.
Konfigurieren Sie das Paket mit neu dpkg-reconfigure PACKAGENAME
. Manchmal reicht das aus. Nach meiner Erfahrung funktioniert es selten; Dies hängt davon ab, wie das Paket seine Konfigurationsdateien erstellt.
Löschen Sie das Paket und installieren Sie es erneut ( apt-get purge packagename
gefolgt von apt-get install packagename
). Das sollte immer funktionieren.
In extremen Fällen müssen Sie nach dem Löschen die Konfigurationsdateien manuell suchen und löschen, bevor Sie das Paket neu installieren. Dies ist jedoch selten. Dadurch werden jedoch alle anderen Daten und / oder Konfigurationsdateien für das Paket entfernt, was nicht immer akzeptabel ist.
Laden Sie den Quellcode für das Paket ( apt-get source foo
) herunter und prüfen Sie, ob die ursprüngliche Konfigurationsdatei dort als Datei vorhanden ist. Es kann jedoch sein, dass die Konfigurationsdatei nicht im Voraus vorhanden ist, sondern bei der Installation vom Post-Install-Skript des Pakets erstellt wird.
Überprüfen Sie das Postinst-Skript für das Paket ( /var/lib/dpkg/info/foo.postinst
), um herauszufinden, wo und wie die Konfigurationsdatei erstellt wird. Versuchen Sie dann, den Vorgang manuell zu wiederholen. Das ist ein bisschen Arbeit und nicht immer einfach.
sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf
, meine verworfene Conf-Datei mit dem Original zu überschreiben.
dpkg-reconfigure <package>
Geänderte Conf-Dateien werden standardmäßig nicht geändert.
Der wahrscheinlich einfachste Weg, dies zu tun, wenn Sie das Paket noch im apt-Cache haben, ist die Ausführung
dpgk -i --force-confask /var/cache/apt/archives/<package file name>
Dabei lautet der Name der Paketdatei normalerweise ungefähr so <package name>_<version>.deb
(verwenden Sie einfach die Tab-Vervollständigung). Dies wird den gleichen Prozess wie ein apt-Upgrade durchlaufen und Sie fragen, was Sie tun möchten, wenn eine geänderte conf-Datei gefunden wird. Geben Sie einfach N
an jeder Eingabeaufforderung ein. dpkg installiert die Paketversion der conf-Datei mit .dpkg-dist
am Ende des Dateinamens. Sie können dann vimdiff
oder ein anderes Zusammenführungstool verwenden, um Unterschiede zu vergleichen und die gelesene conf-Datei zu ändern.
Sie können die Deb extrahieren und die Originaldatei abrufen:
ar p packagename.deb data.tar.gz | tar zx
dpkg-source
ist einfacher und die Verwendung apt-get source PACKAGE
ist viel einfacher.
packagename.postinst
Skript.
Sie können den Inhalt des Deb-Pakets erneut herunterladen und extrahieren
Der beste Weg (von #ubuntu bekommen) ist dies zu tun:
dpkg-reconfigure <package>
In diesem Fall bedeutet das
dpkg-reconfigure samba-common
Sie können die ursprüngliche smb.conf
Konfigurationsdatei wie folgt wiederherstellen :
# cp /usr/share/samba/smb.conf /etc/samba/smb.conf
# dpkg-reconfigure samba-common
Dies ist im Grunde das, was der ursprüngliche Paketinstallationsprozess macht (auf Debian Squeeze).
Dadurch werden Sie aktuell überschrieben. Erstellen Sie smb.conf
daher zuerst ein Backup, wenn Sie es nicht verlieren möchten.
$ sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf
und
$ sudo dpkg --configure -a
wird den Job machen.
sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf