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

37

Ich habe gelegentlich meine Konfigurationsdatei "/etc/mysql/my.cnf" verloren und möchte sie wiederherstellen. Die Datei gehört zu dem Paket, mysql-commondas für einige wichtige Funktionen benötigt wird. Ich kann es also nicht purge && install: Die Abhängigkeiten werden ebenfalls deinstalliert (oder wenn ich sie vorübergehend ignorieren kann, funktionieren sie nicht).

Gibt es eine Möglichkeit, die Konfigurationsdatei aus einem Paket wiederherzustellen, ohne ardie Paketdatei zu deinstallieren?

dpkg-reconfigure mysql-common habe es nicht wiederhergestellt.

kolypto
quelle
Ich habe immer nur die Paketdateien mit 7zip ( 7z x /path/to/foo.deb, dann 7z x data.tar.gz) extrahiert ....
Quack Quixote
Persönlich möchte ich direkt nach der Installation so etwas wie etckeeper auf meinem System einrichten. Auf diese Weise werden alle Änderungen und Versionen der Konfigurationsdateien gespeichert. ( serverfault.com/questions/13091/advice-on-storing-etc-in-a-vcs )
Zoredache
4
Und das, Kinder, ist der Grund, warum wir Backups haben ...
womble
1
@womble: Eigentlich ist die Situation etwas anders: Ich habe eine Konfigurationsdatei, aber sie wurde von mir geändert. Ich war nicht mit conf.dOrdnern und wenn der Paketbetreuer Aktualisierung es, Upgrade - Prozess wirklich von Anzeigen von Nachrichten „config - Datei geändert“ keen wird :) Der Grund dafür ist nicht so wichtig zu erwähnen, also beschloss ich, meine Frage zu vereinfachen
kolypto

Antworten:

39

dpkg -i --force-confmiss mysql-common.deberstellt fehlende Konfigurationsdateien neu, dh /etc/mysql/my.cnfin Ihrem Fall.

TRS-80
quelle
8
Vielen Dank! Auf Ubuntu war essudo dpkg --force-confmiss -i /var/cache/apt/archives/mysql-common*.deb
kolypto
10

Zumindest in Debian Squeeze können wir das auch so machen, nachdem su- oder sudofür Ubuntu -

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

Dadurch werden die Abhängigkeiten mysql-serveraller fehlenden conf-Dateien des Loses berücksichtigt und zurückgesetzt, einschließlich mysql-common. In Konflikt stehende (verbleibende) Dateien werden aufgefordert, beibehalten oder zurückgesetzt zu werden.

Leider gibt es einen Fehler in der Begabung und

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

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

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

Dadurch werden alle ursprünglichen oder geänderten Konfigurationsdateien entfernt , benutzerdefinierte Dateien werden jedoch mit einer Meldung auf dem Bildschirm beibehalten. Beachten Sie übrigens, dass dpkgauch erkennt --force-confnewund --force-confoldOptionen.

Um die mysql-serverListe der Abhängigkeiten auf dem Bildschirm auszudrucken:

aptitude --simulate remove mysql-server
Jean Montané
quelle
9

Keines der oben genannten Probleme hat bei mir funktioniert - vielleicht ist es veraltet - trotzdem habe ich diese Lösung gefunden:

apt-get -o Dpkg::Options::="--force-confmiss" install --reinstall mysql-common
Dave Hilditch
quelle
Dies ist der zu verwendende Befehl, da aptitude nicht die Standardeinstellung ist. Vergessen Sie nicht das sudo :)
nsn
3

Sie finden Standard-MySQL-Konfigurationsdateien in /usr/share/doc/mysql-server-5.0/examples/oder ähnlichem. Dies ist möglicherweise alles, was Sie benötigen, es sei denn, Sie haben einige wirklich spezielle / esoterische Konfigurationen aktiviert.

Sybreon
quelle
0

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

Ich bin mir nicht sicher, woher /etc/mysql/my.cnf.origdas kommt - das heißt, ob ich es erstellt habe oder ob die Installation von mysql es getan hat. Ich erinnere mich , einmal prüfen, ob es war genau das gleiche wiemy.cnf

Wenn Sie so etwas haben und nein my.cnf , können Sie eins auf das andere kopieren.

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

In jedem Fall handelt es sich um eine einfache Textdatei mit 3897 Bytes, die Sie aus einer generischen MySQL-Konfigurationsdatei kopieren und einfügen können.

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

Pavium
quelle
Normalerweise erstelle ich eine Sicherungskopie der Originalinstallations-Konfigurationsdateien, indem ich sie nach /path/to/foo.conf.orig... kopiere. Wenn diese automatisch installiert werden, werden sie erstellt, wenn apt-get eine neue Version installiert und feststellt, dass Sie die Originalkonfigurationsdatei geändert haben.
Quack Quijote
Hmm, je mehr ich darüber nachdenke, desto mehr scheint es , ich erstellt /etc/mysql/my.cnf.origals Backup , die durch eine Neuinstallation nicht überschrieben würde. Es ist jedoch eine gute Idee, es an einem ganz anderen Ort zu platzieren.
Pavium
Ich habe versucht, generisch zu sein. für my.cnf würde ich es nach kopieren /etc/mysql/my.cnf.orig. Erstellen Sie dann natürlich ein Tarball-Backup von /etc. :)
Quack Quixote
0

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

Nikolay Chuprina
quelle
Stellt das tatsächlich fehlende Konfigurationsdateien wieder her?
Poolie
1
Nein, das geht nicht.
chrishiestand