Frage Linux: Wie kann man eine Konfigurationsdatei mit apt-get / aptitude wiederherstellen?


Ich habe gelegentlich meine Konfigurationsdatei "/etc/mysql/my.cnf" verloren und möchte sie wiederherstellen. Die Datei gehört zum Paket mysql-common was für einige lebenswichtige Funktionen benötigt wird, kann ich nicht einfach purge && install es: die Abhängigkeiten würden auch deinstalliert werden (oder wenn ich sie vorübergehend ignorieren kann, werden sie nicht funktionieren).

Gibt es eine Möglichkeit, die Konfigurationsdatei aus einem Paket wiederherzustellen, ohnear-die Paketdatei?

dpkg-reconfigure mysql-common habe es nicht wiederhergestellt.


37
2017-11-09 05:52


Ursprung


Ich habe immer nur die Paketdateien mit 7zip extrahiert (7z x /path/to/foo.deb, dann 7z x data.tar.gz) .... - quack quixote
Persönlich möchte ich direkt nach der Installation etwas wie Etckeeper auf meinem System installieren. Auf diese Weise werden alle Änderungen und Versionen von Konfigurationsdateien gespeichert. (serverfault.com/questions/13091/advice-on-storing-etc-in-a-vcs) - Zoredache
Und das, Kinder, haben wir deshalb Sicherungen... - womble♦
@womble: eigentlich ist die situation etwas anders: ich habe eine config-datei, die aber von mir modifiziert wird. Ich habe es nicht benutzt conf.dOrdner, und wenn der Paketbetreuer es aktualisiert, wird Upgrade-Prozess wirklich scharf darauf, "config file modified" Nachrichten anzuzeigen :) Der Grund ist nicht so wichtig zu erwähnen, also entschied ich mich, meine Frage zu vereinfachen - kolypto


Antworten:


dpkg -i --force-confmiss mysql-common.deb erstellt fehlende Konfigurationsdateien, d /etc/mysql/my.cnf in Ihrem Fall.


39
2017-11-09 07:36



Vielen Dank! Auf Ubuntu war es sudo dpkg --force-confmiss -i /var/cache/apt/archives/mysql-common*.deb - kolypto


In Debian Squeeze - zumindest - können wir es auch so machen, nach su - oder sudo für Ubuntu -

aptitude install -o Dpkg::Options::=--force-confmiss mysql-server

Dies kümmert sich um die Abhängigkeiten von mysql-server und setzen Sie alle fehlenden conf-Dateien des Loses zurück, einschließlich mysql-common. Widersprüchliche (verbleibende) Dateien werden zum Zurückhalten oder Zurücksetzen aufgefordert.

Leider gibt es das ein Fehler in aptitude, und

aptitude purge -o Dpkg::Options::=--force-all mysql-server

wird nicht funktionieren. Also müssen wir es eins nach dem anderen machen

dpkg --force-all --purge  mysql-common  mysql-server  mysql-client …

Dieser Wille Entferne jede Konfigurationsdatei, original oder modifiziert, aber benutzerdefinierte Dateien wird mit einer Nachricht auf dem Bildschirm erhalten. Beachten Sie übrigens, dass dpkg erkennt auch --force-confnew und --force-confold Optionen.

Bekommen mysql-server Liste der Abhängigkeiten auf dem Bildschirm drucken:

aptitude --simulate remove mysql-server

10
2018-02-24 14:14





Keines der oben genannten Dinge funktionierte für mich - vielleicht veraltet - trotzdem fand ich diese Lösung:

apt-get -o Dpkg::Options::="--force-confmiss" install --reinstall mysql-common

8
2018-01-13 18:28



Dies ist der zu verwendende Befehl, wobei aptitude kein Standardwert ist. Vergiss das Sudo nicht :) - nsn


Sie finden Standard-MySQL-Konfigurationsdateien in /usr/share/doc/mysql-server-5.0/examples/ oder ähnliches. Das kann alles sein, was Sie brauchen, wenn Sie nicht wirklich spezielle / esoterische Konfigurationen aktiviert haben.


3
2017-11-09 08:49





In meinem /etc/mysql/ Verzeichnis, ich habe eine my.cnf.orig Datei, die den ursprünglichen Inhalt von enthält my.cnf.

Ich bin mir nicht sicher wo /etc/mysql/my.cnf.orig kam von - das ist, ob ich erstellt, oder die Installation von mysql hat es getan. Ich erinnere mich, dass ich das einmal überprüft habe war Genau das gleiche wie my.cnf

Wenn du so etwas hast, und Nein  my.cnf Sie können eins zum anderen kopieren.

sudo cp /etc/mysql/my.cnf.orig /etc/mysql/my.cnf

In jedem Fall ist es eine einfache Textdatei von 3897 Bytes und Sie können kopieren und aus einer allgemeinen Mysql-Konfigurationsdatei einfügen.

Es wird eine gute Idee sein Sobald Sie wiederherstellen Ihre /etc/mysql/my.cnf um eine Kopie zu erstellen, damit Sie sie in Zukunft problemlos wiederherstellen können.


0
2017-11-09 06:03



Normalerweise mache ich eine Sicherungskopie von Original-Installationsdateien, indem ich sie kopiere /path/to/foo.conf.orig ... wenn diese automatisch installiert werden, werden sie erstellt, wenn apt-get eine neue Version installiert und feststellt, dass Sie die ursprüngliche Konfigurationsdatei geändert haben. - quack quixote
Hmm, je mehr ich darüber nachdenke, desto mehr scheint es zu sein ich erstellt /etc/mysql/my.cnf.orig als Sicherung, die bei einer Neuinstallation nicht überschrieben würde. Es ist jedoch eine gute Idee, es irgendwo anders hinzustellen. - pavium
Ich habe versucht, generisch zu sein; für my.cnf würde ich es kopieren /etc/mysql/my.cnf.orig. Dann mach natürlich eine Tarball-Sicherung von /etc. :) - quack quixote


Sie müssen mysql-common mit diesem Befehl neu installieren:apt-get install --reinstall mysql-common


0
2017-11-02 02:58



Werden fehlende Konfigurationsdateien tatsächlich wiederhergestellt? - poolie
Nein, das funktioniert nicht. - chrishiestand


Es scheint, einige der anderen Lösungen werden nicht funktionieren wenn die Konfigurationsdateien des Pakets verwaltet werden mit ucf.

In diesem Fall können Sie verwenden:

UCF_FORCE_CONFFMISS=1 apt-get --reinstall install [pkgname]

0
2018-02-23 18:00