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


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.


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

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

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.


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.


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


¿Eso realmente restaura los archivos de configuración que faltan?
Poolie

1
No, eso no funciona.
chrishiestand

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.