我最近安装了 Samba,但文件弄乱了/etc/samba/smb.conf
。如何恢复原始配置?
答案1
简短回答:/usr/share/samba/smb.conf
是 smb.conf 文件的原始版本。
当任何包裹遇到这种情况时,我会采取以下措施之一:
检查原始版本的备份文件从编辑器中。我使用 Emacs,它通常会保留
foo~
文件,并且我已设置数字版本控制选项,因此原始版本始终为foo.~1~
。但也许您以其他方式执行了此操作,或使用了其他编辑器。如果尚未启用此功能,请考虑检查编辑器的配置以启用此功能;这是一个好习惯。重新配置包使用
dpkg-reconfigure PACKAGENAME
。有时这种方法很管用。根据我的经验,这种方法很少奏效;这取决于包如何创建其配置文件。清除并重新安装包(
apt-get purge packagename
后面跟apt-get install packagename
)。这应该总是有效的。
在极端情况下,您必须在清除后手动查找并删除配置文件,然后再重新安装包,但这种情况很少见。但是,这将消除包的任何其他数据和/或配置文件,这并不总是可接受的。下载软件包的源代码(
apt-get source foo
)并查看原始配置文件是否存在。但是,配置文件可能事先不存在,而是由软件包的安装后脚本在安装时创建的。检查包的 postinst 脚本(
/var/lib/dpkg/info/foo.postinst
)找出它在哪里创建配置文件以及它是如何创建的。然后尝试手动重复该过程。这需要一点工作,而且并不总是那么容易。
答案2
已编辑:
发现这个一个 serverfault 问题。如果dpkg-reconfigure foo
不起作用,请使用这个:
删除或者重命名损坏的配置文件。
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.broken
向 请求替换品
dpkg
。sudo dpkg -i --force-confmiss /path/to/samba-common.deb
这告诉dpkg
您使用 .deb 中的配置文件替换缺失的配置文件。您可能会在 中找到原始软件包 .deb /var/cache/apt/archives
,或者您可以使用发行版存储库中相同版本的最新副本。
dpkg -i --force-confnew foo.deb
这告诉dpkg
您使用 .deb 中的配置文件覆盖现有配置文件。您可能会在 中找到原始软件包 .deb /var/cache/apt/archives
,或者您可以使用发行版存储库中相同版本的最新副本。
答案3
smb.conf
您可以像这样恢复原始配置文件:
# cp /usr/share/samba/smb.conf /etc/samba/smb.conf
# dpkg-reconfigure samba-common
这基本上就是原始包安装过程所做的(在 Debian Squeeze 上)。
这将覆盖您当前的文件smb.conf
,因此,如果您不想丢失它,请先进行备份。
答案4
dpkg-reconfigure <package>
默认情况下不会修改已改变的conf文件。
如果你的 apt 缓存中仍有该包,那么最简单的方法可能是运行
dpgk -i --force-confask /var/cache/apt/archives/<package file name>
软件包文件名通常类似于<package name>_<version>.deb
(只需使用制表符完成)。这将运行与 apt-upgrade 相同的过程,并在发现更改的 conf 文件时询问您要做什么。只需在每个提示符下输入。dpkg 将安装文件名末尾N
带有 的 conf 文件的软件包版本。然后,您可以使用或其他合并工具来比较差异,并修改读取的 conf 文件。.dpkg-dist
vimdiff