Wie bekomme ich die Standard-Samba-Konfigurationsdatei (Debian-basiertes System) zurück?


Antworten:


8

Bearbeitet :

Habe dies auf einer Serverfehlerfrage entdeckt . Wenn das dpkg-reconfigure foonicht funktioniert, verwenden Sie Folgendes:

  1. Entfernen Sie die beschädigte Konfigurationsdatei oder benennen Sie sie um.

    sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.broken
    
  2. Ersatz anfordern von dpkg.

    sudo dpkg -i --force-confmiss /path/to/samba-common.deb
    

Dies weist dpkgan, 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 dpkgan, 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.


Dieses Flag erzwingt nur dpkgdann 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.
Teddy

Ich glaube du hast recht. ok, also willst du das --force-confmissstattdessen. In diesem speziellen Fall, z. B. Samba, --force-confnewwürde das Überschreiben meiner Meinung nach durchgeführt, aber Sie haben Recht, dass es von den Einzelheiten der Paketkonfigurationsskripte abhängt.
Quacksalber Quijote

7

Kurze Antwort: /usr/share/samba/smb.confist die Originalversion der Datei smb.conf.

Wenn ich mit dieser Situation für ein Paket konfrontiert bin, mache ich Folgendes:

  1. 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.

  2. 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.

  3. Löschen Sie das Paket und installieren Sie es erneut ( apt-get purge packagenamegefolgt 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.

  4. 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.

  5. Ü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.


Dies sollte höher sein. Für mich war es nur ein Fall sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf, meine verworfene Conf-Datei mit dem Original zu überschreiben.
Edzillion

2

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 Nan jeder Eingabeaufforderung ein. dpkg installiert die Paketversion der conf-Datei mit .dpkg-distam Ende des Dateinamens. Sie können dann vimdiffoder ein anderes Zusammenführungstool verwenden, um Unterschiede zu vergleichen und die gelesene conf-Datei zu ändern.


1

Sie können die Deb extrahieren und die Originaldatei abrufen:

ar p packagename.deb data.tar.gz | tar zx

Die Verwendung dpkg-sourceist einfacher und die Verwendung apt-get source PACKAGEist viel einfacher.
Teddy

1
@ Teddy: Nur wenn die Standardkonfigurationsdatei zunächst im Quellpaket enthalten ist. Viele Pakete installieren eine stark herstellerspezifische Konfigurationsdatei. Einige generieren ihre Konfigurationsdateien automatisch im packagename.postinstSkript.
Quacksalber 11.

1

Sie können den Inhalt des Deb-Pakets erneut herunterladen und extrahieren


1
Dies ist ein viel zu niedriger Weg, um dies zu tun
Frew Schmidt

4
bedeutet nicht, dass es nicht funktioniert
John T

1

Der beste Weg (von #ubuntu bekommen) ist dies zu tun:

dpkg-reconfigure <package>

In diesem Fall bedeutet das

dpkg-reconfigure samba-common

1

Sie können die ursprüngliche smb.confKonfigurationsdatei 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.confdaher zuerst ein Backup, wenn Sie es nicht verlieren möchten.


Vielen Dank, dass Sie den Namen des Pakets angegeben haben, das diese Datei enthält. "sudo aptitude purge samba-common; sudo aptitude install samba" war meine Wahl, aber Totors Antwort sieht am wenigsten beängstigend und am debianischsten aus.
Martin Dorey

-1
$ sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf

und

$ sudo dpkg --configure -a

wird den Job machen.


Dies ist fast identisch mit allen anderen Antworten hier. Es ist auch auf einem Post von '14.
var Vorname
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.