Linux:如何使用apt-get / aptitude恢复configuration文件?

我偶尔会丢失我的configuration文件“/etc/mysql/my.cnf”,并想恢复它。 该文件属于包mysql-common ,这是一些重要function所需要的,所以我不能只是purge && install它:依赖关系也将被卸载(或者如果我可以暂时忽略它们,它们将不会工作)。

有没有办法从软件包中恢复configuration文件而不用取出软件包文件?

dpkg-reconfigure mysql-common没有恢复它。

dpkg -i --force-confmiss mysql-common.deb会重新创build任何缺less的configuration文件,例如dpkg -i --force-confmiss mysql-common.deb

在Debian Squeeze中 – 至less,我们也可以这样做, susudo之后 –

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

这将关心mysql-server的依赖关系,并重置所有丢失的lot文件,包括mysql-common 。 冲突(剩余)文件将被提示保留或重置。

不幸的是, 在能力上有一个缺陷

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

将无法工作 。 所以我们必须一个接一个地做

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

这将删除任何configuration文件 ,原始或修改, 但自定义文件将被保留在屏幕上的消息。 请注意,顺便说一下,该dpkg还可以识别--force-confnew--force-confold选项。

在屏幕上打印mysql-server dependencies的列表:

 aptitude --simulate remove mysql-server 

以上都没有为我工作 – 也许过时 – 无论如何,我发现这个解决scheme:

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

你可以在/usr/share/doc/mysql-server-5.0/examples/或类似的地方find默认的mysqlconfiguration文件。 这可能是你需要的一切,除非你有一些真正的特殊/深奥的configuration启用。

在我的/etc/mysql/目录中,我有一个my.cnf.orig文件,其中包含my.cnf的原始内容。

我不知道/etc/mysql/my.cnf.orig是从哪里来的 – 也就是说, 创build了它还是安装了mysql。 我记得一次检查和my.cnf完全一样

如果你有这样的事情, 没有 my.cnf你可以复制到另一个。

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

无论如何,这是一个3897字节的简单文本文件,您可以从通用的Mysqlconfiguration文件复制和粘贴。

一旦你恢复你的/etc/mysql/my.cnf来创build一个副本,这将是一个好主意所以你可以在以后轻松地恢复它。

你需要用这个命令重新安装mysql-common: apt-get install --reinstall mysql-common

如果包的configuration文件是用ucf 来pipe理的话 ,其他一些解决scheme将ucf

在这种情况下,您可以使用:

 UCF_FORCE_CONFFMISS=1 apt-get --reinstall install [pkgname]