Linux: ¿cómo restaurar el archivo de configuración usando apt-get / aptitude?

37

Ocasionalmente he perdido mi archivo de configuración "/etc/mysql/my.cnf" y quiero restaurarlo. El archivo pertenece al paquete mysql-commonque se necesita para algunas funciones vitales, por lo que no puedo simplemente purge && install: las dependencias también se desinstalarían (o si puedo ignorarlas temporalmente, no funcionarán).

¿Hay alguna manera de restaurar el archivo de configuración de un paquete sin arquitar el archivo del paquete?

dpkg-reconfigure mysql-common No lo restauró.

Kolypto
fuente
Siempre he extraído los archivos de paquetes con 7zip ( 7z x /path/to/foo.deby después 7z x data.tar.gz) ....
charlatán quijote
Personalmente, me gusta configurar algo como etckeeper en mi sistema justo después de la instalación. De esa manera, todos los cambios y versiones de los archivos de configuración se almacenan. ( serverfault.com/questions/13091/advice-on-storing-etc-in-a-vcs )
Zoredache el
44
Y esto, niños, es por qué tenemos copias de seguridad ...
womble
1
@womble: en realidad, la situación es ligeramente diferente: tengo un archivo de configuración, pero lo modifiqué. No estaba usando conf.dcarpetas, y cuando el mantenedor del paquete lo actualiza, el proceso de actualización se vuelve realmente entusiasta de mostrar mensajes de "archivo modificado de configuración" :) La razón no es tan importante de mencionar, así que decidí simplificar mi pregunta
kolypto

Respuestas:

39

dpkg -i --force-confmiss mysql-common.debrecreará los archivos de configuración que faltan, es decir, /etc/mysql/my.cnfen su caso.

TRS-80
fuente
8
¡Gracias! En Ubuntu, fuesudo dpkg --force-confmiss -i /var/cache/apt/archives/mysql-common*.deb
kolypto
10

En Debian Squeeze, al menos, también podemos hacerlo de esta manera, después su, o sudopara Ubuntu,

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

Esto cuidar de las dependencias de mysql-serverrestableciendo todos los archivos que faltan de conf del lote, incluida mysql-common. Se solicitará que se guarden o restablezcan los archivos en conflicto (restantes).

Desafortunadamente, hay un error en la aptitud , y

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

No funcionará . Entonces tenemos que hacerlo uno por uno con

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

Esto eliminará cualquier archivo de configuración , original o modificado, pero los archivos personalizados se conservarán, con un mensaje en pantalla. Tenga en cuenta, por cierto, que dpkgtambién reconoce --force-confnewy --force-confoldopciones.

Para obtener mysql-serverla lista de dependencias impresa en la pantalla:

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

Nada de lo anterior funcionó para mí, tal vez desactualizado, de todos modos, encontré esta solución:

apt-get -o Dpkg::Options::="--force-confmiss" install --reinstall mysql-common
Dave Hilditch
fuente
Este es el comando a usar, considerando que aptitude no es el predeterminado. No olvides el sudo :)
nsn
3

Puede encontrar archivos de configuración mysql predeterminados en /usr/share/doc/mysql-server-5.0/examples/o similar. Eso puede ser todo lo que necesita a menos que tenga algunas configuraciones realmente especiales / esotéricas habilitadas.

sybreon
fuente
0

En mi /etc/mysql/directorio, tengo un my.cnf.origarchivo que contiene el contenido original de my.cnf.

No estoy seguro de dónde /etc/mysql/my.cnf.origvino, es decir, si lo creé o si la instalación de mysql lo hizo. Recuerdo haber comprobado alguna vez que era exactamente lo mismo quemy.cnf

Si tiene tal cosa, y no my.cnf , puede copiar una a la otra.

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

En cualquier caso, es un archivo de texto simple de 3897 bytes y puede copiar y pegar desde un archivo de configuración genérico de Mysql.

Será una buena idea una vez que se restaure su /etc/mysql/my.cnfpara hacer una copia para que pueda restaurar fácilmente en el futuro.

pavium
fuente
Por lo general, hago una copia de seguridad de los archivos de configuración de instalación original copiándolos a /path/to/foo.conf.orig... si se instalan automáticamente, se crean cuando apt-get está instalando una nueva versión y detecta que ha alterado el archivo de configuración original.
quack quijote
Hmm, cuanto más lo pienso, más parece que creé /etc/mysql/my.cnf.origcomo una copia de seguridad que no sería sobrescrita por una nueva instalación. Pero, ponerlo en un lugar completamente diferente es una buena idea.
Pavium el
Estaba tratando de ser genérico; para my.cnf lo copiaría a /etc/mysql/my.cnf.orig. Luego, naturalmente, haga una copia de seguridad de tarball /etc. :)
quack quijote
0

Necesita reinstalar mysql-common con este comando:apt-get install --reinstall mysql-common

Nikolay Chuprina
fuente
¿Eso realmente restaura los archivos de configuración que faltan?
Poolie
1
No, eso no funciona.
chrishiestand