Linux: come ripristinare il file di configurazione usando apt-get / aptitude?


37

Di tanto in tanto ho perso il mio file di configurazione "/etc/mysql/my.cnf" e voglio ripristinarlo. Il file appartiene al pacchetto mysql-commonnecessario per alcune funzionalità vitali, quindi non posso proprio purge && installfarlo: le dipendenze verrebbero anche disinstallate (o se posso ignorarle temporaneamente, non funzioneranno).

C'è un modo per ripristinare il file di configurazione da un pacchetto senza ardecomprimere il file del pacchetto?

dpkg-reconfigure mysql-common non l'ha ripristinato.


ho sempre appena estratto i file del pacchetto con 7zip ( 7z x /path/to/foo.deb, quindi 7z x data.tar.gz) ....
Quack Quixote

Personalmente, mi piace configurare qualcosa come etckeeper sul mio sistema subito dopo l'installazione. In questo modo tutte le modifiche e le versioni dei file di configurazione vengono archiviate. ( serverfault.com/questions/13091/advice-on-storing-etc-in-a-vcs )
Zoredache

4
E questo, ragazzi, è il motivo per cui abbiamo dei backup ...
womble

1
@womble: in realtà, la situazione è leggermente diversa: ho un file di configurazione, ma è stato modificato da me. Non stavo usando le conf.dcartelle e quando il manutentore del pacchetto lo aggiorna, il processo di aggiornamento diventa davvero appassionato di visualizzare messaggi "file di configurazione modificati" :) Il motivo non è così importante da menzionare, quindi ho deciso di semplificare la mia domanda
kolypto

Risposte:


39

dpkg -i --force-confmiss mysql-common.debricrea i file di configurazione mancanti, ad esempio /etc/mysql/my.cnfnel tuo caso.


8
Grazie! Su Ubuntu erasudo dpkg --force-confmiss -i /var/cache/apt/archives/mysql-common*.deb
kolypto il

10

In Debian Squeeze - almeno -, possiamo anche farlo in questo modo, dopo su- o sudoper Ubuntu -

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

Questo si occuperà delle dipendenze mysql-servere resetterà tutti i file conf mancanti del lotto, incluso mysql-common. I file (rimanenti) in conflitto verranno richiesti per essere conservati o ripristinati.

Sfortunatamente, c'è un bug in aptitude e

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

non funzionerà . Quindi dobbiamo farlo uno per uno con

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

Ciò rimuoverà qualsiasi file di configurazione , originale o modificato, ma i file personalizzati verranno conservati, con un messaggio sullo schermo. Nota, a proposito, che dpkgriconosce anche --force-confnewe le --force-confoldopzioni.

Per ottenere la mysql-serverstampa dell'elenco delle dipendenze sullo schermo:

aptitude --simulate remove mysql-server

9

Nessuno dei precedenti ha funzionato per me - forse obsoleto - comunque, ho trovato questa soluzione:

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

Questo è il comando da usare, considerando che aptitude non è predefinito. Non dimenticare il sudo :)
nsn

3

È possibile trovare file di configurazione mysql predefiniti /usr/share/doc/mysql-server-5.0/examples/o simili. Potrebbe essere tutto ciò di cui hai bisogno a meno che tu non abbia abilitato alcune configurazioni davvero speciali / esoteriche.


0

Nella mia /etc/mysql/directory, ho un my.cnf.origfile che contiene il contenuto originale di my.cnf.

Non sono sicuro da dove /etc/mysql/my.cnf.origprovenga, cioè se l' ho creato o l'installazione di MySQL lo ha fatto. Ricordo di aver verificato una volta che era esattamente lo stesso dimy.cnf

Se hai una cosa del genere e no my.cnf , puoi copiarla l'una nell'altra.

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

In ogni caso, è un semplice file di testo di 3897 byte e puoi copiare e incollare da un file di configurazione Mysql generico.

Sarà una buona idea una volta ripristinato il tuo /etc/mysql/my.cnfper fare una copia in modo da poterlo ripristinare facilmente in futuro.


Di solito eseguo un backup dei file di configurazione dell'installazione originale copiandoli in /path/to/foo.conf.orig... se questi vengono installati automaticamente, vengono creati quando apt-get sta installando una nuova versione e rileva che hai modificato il file di configurazione originale.
Quack Quixote

Hmm, più ci penso, più sembra che abbia creato /etc/mysql/my.cnf.origun backup che non verrebbe sovrascritto da una nuova installazione. Ma metterlo in un posto completamente diverso è una buona idea.
padiglione

Stavo cercando di essere generico; per my.cnf lo copierei /etc/mysql/my.cnf.orig. Quindi, naturalmente, esegui un backup tarball di /etc. :)
Quack Quixote


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.