如何获取默认的Samba配置文件(基于Debian的系统)?


Answers:


8

编辑

serverfault问题上发现了这一点。如果dpkg-reconfigure foo无法使用,请使用以下命令:

  1. 删除或重命名损坏的配置文件。

    sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.broken
    
  2. 向要求更换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,或者可以使用发行版存储库中相同版本的全新副本。


该标志仅dpkg本来需要许可的情况下才强制覆盖配置文件。它并没有让奇迹般地重新从包装原始配置文件。
Teddy

我相信你是对的。好的,所以您确实想要--force-confmiss代替。在这种特殊情况下,例如samba,我认为--force-confnew会执行覆盖,但是您说对了,它取决于软件包配置脚本的详细信息。
魁北克吉x德09年

7

简短的答案:/usr/share/samba/smb.conf是smb.conf文件的原始版本。

当遇到任何包装的这种情况时,我要做的是以下操作之一:

  1. 从编辑器中检查原始版本的备份文件。我使用Emacs(通常会保留foo~文件),并且设置了数字版本控制选项,因此原始版本始终为foo.~1~。但是也许您是通过其他方式完成的,或者使用了其他编辑器。考虑检查编辑器的配置以启用此功能(如果尚未启用);这是一个好习惯。

  2. 重新配置包dpkg-reconfigure PACKAGENAME。有时这可以解决问题。以我的经验,它很少起作用。这取决于软件包如何创建其配置文件。

  3. 清除并重新安装软件包apt-get purge packagename后跟apt-get install packagename)。这应该一直有效。

    在极端情况下,清除后必须手动寻找并删除配置文件,然后重新安装软件包,但这很少见。但是,这将消除该软件包的任何其他数据和/或配置文件,这并不总是可以接受的。

  4. 下载包的源代码apt-get source foo),然后查看原始配置文件是否作为该文件存在。但是,可能配置文件不是预先存在的,而是在安装时由软件包的安装后脚本创建的。

  5. 检查包的postinst脚本/var/lib/dpkg/info/foo.postinst),以了解在何处创建配置文件以及如何执行配置文件。然后尝试手动重复该过程。这是一项工作,并不总是那么容易。


这应该更高。对我来说,这只是sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf将原始的conf文件覆盖掉的一种情况。
edzillion 2015年

2

dpkg-reconfigure <package> 默认情况下不会修改已更改的conf文件。

如果您仍然在apt缓存中保留包,则可能是最简单的方法

dpgk -i --force-confask /var/cache/apt/archives/<package file name>

软件包文件名通常类似于<package name>_<version>.deb(仅使用制表符补全)。这将与apt升级过程相同,并且在找到更改后的conf文件时询问您要做什么。只要N在每个提示下输入即可。dpkg将.dpkg-dist在文件名末尾安装conf文件的软件包版本。然后,您可以使用vimdiff或其他合并工具比较差异,并修改读取的conf文件。


虽然没有包装/var/cache/apt/archives/……
endolith

1

您可以提取deb并获取原始文件:

ar p packagename.deb data.tar.gz | tar zx

使用dpkg-source更容易,并且使用apt-get source PACKAGE容易。
Teddy

1
@Teddy:仅在源包中包含默认配置文件的情况下。许多软件包会安装大量特定于供应商的配置文件;在一些自动生成的配置文件packagename.postinst脚本。
quack quixote 09年


1

您可以smb.conf像这样恢复原始配置文件:

# cp /usr/share/samba/smb.conf /etc/samba/smb.conf
# dpkg-reconfigure samba-common

基本上,这就是原始软件包安装过程的作用(在Debian Squeeze上)。

这将覆盖您当前的内容smb.conf,因此,如果您不想丢失它,请先进行备份。


1
感谢您提供包含此文件的软件包的名称。“ sudo aptitude purge samba-common; sudo aptitude install samba”是我的选择,但是Totor的答案看起来是最不恐怖和最Debian的选择。
Martin Dorey


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.