Linux: como restaurar o arquivo de configuração usando o apt-get / aptitude?

37

Ocasionalmente, perdi meu arquivo de configuração "/etc/mysql/my.cnf" e quero restaurá-lo. O arquivo pertence ao pacote mysql-commonque é necessário para algumas funcionalidades vitais, por isso não posso purge && install: as dependências também serão desinstaladas (ou, se eu puder ignorá-las temporariamente, elas não funcionarão).

Existe uma maneira de restaurar o arquivo de configuração de um pacote sem arremover o arquivo do pacote?

dpkg-reconfigure mysql-common não o restaurou.

Kolypto
fonte
eu sempre acabou de extrair os arquivos do pacote com 7zip ( 7z x /path/to/foo.debe depois 7z x data.tar.gz) ....
quack quixote
Pessoalmente, gosto de configurar algo como o etckeeper no meu sistema logo após a instalação. Dessa forma, todas as alterações e versões dos arquivos de configuração são armazenadas. ( serverfault.com/questions/13091/advice-on-storing-etc-in-a-vcs )
Zoredache
4
E isso, crianças, é por isso que temos backups ...
womble
11
@ womble: na verdade, a situação é um pouco diferente: eu tenho um arquivo de configuração, mas é modificado por mim. Eu não estava usando conf.dpastas e, quando o mantenedor do pacote atualiza, o processo de atualização se torna realmente interessado em exibir mensagens "arquivo de configuração modificado" :) O motivo não é tão importante mencionar, então decidi simplificar minha pergunta
kolypto

Respostas:

39

dpkg -i --force-confmiss mysql-common.debirá recriar quaisquer arquivos de configuração ausentes, ou seja, /etc/mysql/my.cnfno seu caso.

TRS-80
fonte
8
Obrigado! No Ubuntu, foisudo dpkg --force-confmiss -i /var/cache/apt/archives/mysql-common*.deb
kolypto
10

No Debian Squeeze - pelo menos -, também podemos fazer desta maneira, depois su- ou sudopara o Ubuntu -

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

Isso cuidará das dependências mysql-servere redefinirá todos os arquivos conf ausentes do lote, inclusive mysql-common. Arquivos conflitantes (restantes) serão solicitados a serem mantidos ou redefinidos.

Infelizmente, há um erro no aptitude , e

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

não vai funcionar . Então temos que fazer um por um com

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

Isso removerá qualquer arquivo de configuração , original ou modificado, mas os arquivos personalizados serão preservados, com uma mensagem na tela. Observe, a propósito, que dpkgtambém reconhece --force-confnewe --force-confoldopções.

Para obter mysql-servera lista de dependências, imprima na tela:

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

Nenhuma das opções acima funcionou para mim - talvez desatualizada - de qualquer maneira, encontrei esta solução:

apt-get -o Dpkg::Options::="--force-confmiss" install --reinstall mysql-common
Dave Hilditch
fonte
Este é o comando a ser usado, considerando que o aptitude não é o padrão. Não se esqueça do sudo :)
nsn
3

Você pode encontrar os arquivos de configuração padrão do mysql /usr/share/doc/mysql-server-5.0/examples/ou similares. Isso pode ser tudo o que você precisa, a menos que tenha algumas configurações realmente especiais / esotéricas ativadas.

sybreon
fonte
0

No meu /etc/mysql/diretório, tenho um my.cnf.origarquivo que contém o conteúdo original de my.cnf.

Não tenho certeza de onde /etc/mysql/my.cnf.origveio - isto é, se eu o criei ou a instalação do mysql o fez. Lembro-me de verificar ao mesmo tempo que era exatamente o mesmo quemy.cnf

Se você tem uma coisa dessas e não, my.cnf pode copiar uma para a outra.

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

De qualquer forma, é um arquivo de texto simples de 3897 bytes e você pode copiar e colar de um arquivo de configuração genérico do Mysql.

Será uma boa idéia depois de restaurar o seu /etc/mysql/my.cnfpara fazer uma cópia, para que você possa restaurá-lo facilmente no futuro.

pavium
fonte
Normalmente faço um backup dos arquivos de configuração da instalação original copiando-os para /path/to/foo.conf.orig... se eles forem instalados automaticamente, eles serão criados quando o apt-get estiver instalando uma nova versão e detectará que você alterou o arquivo de configuração original.
quack quixote
Hmm, quanto mais eu penso sobre isso, mais parece que eu criei /etc/mysql/my.cnf.origcomo um backup que não seria substituído por uma nova instalação. Mas colocá-lo em um lugar completamente diferente é uma boa ideia.
pavium 9/11/09
Eu estava tentando ser genérico; para my.cnf eu copiava para /etc/mysql/my.cnf.orig. Então, naturalmente, faça um backup tarball de /etc. :)
quack quixote
0

Você precisa reinstalar o mysql-common com este comando:apt-get install --reinstall mysql-common

Nikolay Chuprina
fonte
Isso realmente restaura os arquivos de configuração ausentes?
Pool #
11
Não, isso não funciona.
precisa saber é o seguinte