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


37

我偶尔丢失了配置文件“ /etc/mysql/my.cnf”,并希望将其恢复。该文件属于mysql-common某些重要功能所必需的包,因此我不能仅purge && install此包:依赖项也将被卸载(或者,如果我可以暂时忽略它们,它们将无法工作)。

有没有一种方法可以从软件包中还原配置文件而无需ar取消打开软件包文件?

dpkg-reconfigure mysql-common 没有还原它。


我一直刚才解压包文件与7zip的(7z x /path/to/foo.deb7z x data.tar.gz)....
嘎嘎堂吉诃德

就个人而言,我喜欢在安装后立即在系统上设置诸如etckeeper之类的东西。这样,所有更改和配置文件的版本都将被存储。(serverfault.com/questions/13091/advice-on-storing-etc-in-a-vcs
Zoredache

4
孩子们,这就是为什么我们要备份 ...
womble

1
@womble:实际上,情况略有不同:我有一个配置文件,但它是由我修改的。我没有使用conf.d文件夹,而是在软件包维护人员对其进行更新时,升级过程变得非常热衷于显示“配置文件已修改”消息:)原因并不是那么重要,因此,我决定简化我的问题
kolypto

Answers:


39

dpkg -i --force-confmiss mysql-common.deb将重新创建任何丢失的配置文件,例如/etc/mysql/my.cnf您的情况。


8
谢谢!在Ubuntu上,它是sudo dpkg --force-confmiss -i /var/cache/apt/archives/mysql-common*.deb
kolypto

10

在Debian Squeeze中-至少-,我们也可以这样做,之后su- sudo对于Ubuntu-

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

这将照顾的依赖关系mysql-server并重置该批次中所有缺少的conf文件,包括mysql-common。有冲突(剩余)的文件将被提示保留或重置。

不幸的是,aptitude中存在一个错误,并且

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

将无法正常工作。因此,我们必须与

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

这将删除任何原始或已修改的配置文件但自定义文件将保留,并带有屏幕消息。注意,顺便说一句,它dpkg也可以识别--force-confnew--force-confold选择。

mysql-server在屏幕上打印依赖项列表:

aptitude --simulate remove mysql-server

9

以上都不对我有用-也许已经过时-无论如何,我找到了这个解决方案:

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

考虑到aptitude不是默认值,这是要使用的命令。不要忘记sudo :)
nsn

3

您可以在中找到/usr/share/doc/mysql-server-5.0/examples/类似的默认mysql配置文件。除非您启用了一些非常特殊/深奥的配置,否则这可能就是您所需要的。


0

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

我不确定/etc/mysql/my.cnf.orig来自哪里-也就是说,是创建的还是由mysql安装完成的。我记得在一次检查,这完全一样的my.cnf

如果您有这样的事情,则不能, my.cnf您可以将其中一个复制到另一个。

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

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

这将是一个不错的主意,一旦你恢复/etc/mysql/my.cnf做一个副本,以便您可以在将来轻松地恢复。


我通常通过将原始安装配置文件复制到/path/to/foo.conf.orig... 进行备份,如果将它们自动安装,它们是在apt-get安装新版本并检测到您更改了原始配置文件时创建的。
奎克吉x德09年

嗯,我想得越多,似乎创建/etc/mysql/my.cnf.orig的备份就越多,而不会被全新安装覆盖。但是,将其放置在完全不同的位置是个好主意。
pavium

我试图变得普通。对于my.cnf,我会将其复制到/etc/mysql/my.cnf.orig。然后,自然地将备份/etc。:)
嘎嘎吉x德09年


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.