我正计划通过以下方式建立一个新的个人 OpenBSD-current 系统安装最新的 OpenBSD 快照,并且我希望它在对文件进行本地更改方面看起来或多或少类似于我现有的 OpenBSD 当前系统,而/etc
无需实际将/etc
目录复制到新系统(它还包含新系统不应包含的配置)使用,以及其他应该不同的东西)。
将我的旧设置与原始系统进行比较的最简单方法是什么,以便我手动可以检查并设置新机器吗?我想编译一个在安装新的 OpenBSD 系统后需要配置的各个基本系统服务等的列表,就像为 root 设置邮件别名一样,避免意外遗漏一些东西。
答案1
将我的(旧)系统升级到最新快照后,原始/etc
层次结构(以及/root
和下的其他变量文件/var
)的副本可在/var/sysmerge/etc.tgz
.还有一个单独的存档,称为/var/sysmerge/xetc.tgz
保存基本系统的默认 X11 配置。请注意,确实etc.tgz
如此不是包含不打算修改的文件,例如/etc/services
或/etc/daily
,并且它不包含在没有默认配置文件的情况下安装的内容的配置文件(但可能有一个用于本地调整默认值的文件),例如/etc/doas.conf
.
要查看我在旧系统上修改了哪些文件,我可以将这些档案提取到某个目录,然后简单地执行diff
.由于/var/sysmerge
目录受到保护,提取必须以 root 身份完成。
mkdir /tmp/tmpdir
doas tar -xz -f /var/sysmerge/etc.tgz -C /tmp/tmpdir
doas tar -xz -f /var/sysmerge/xetc.tgz -C /tmp/tmpdir
diff
通过首先删除属于不再安装的软件包的旧的未使用的配置文件,可以更容易地查看。这些可以通过使用sysclean
ports 中的工具找到。该工具还可以识别旧的和未使用的库版本,并且在任何系统升级或升级端口之后运行它可能是一个好主意。
diff
为文件生成一个/etc
:
doas diff -ru /tmp/tmpdir/etc /etc
diff
这会生成我可能感兴趣的文件的递归统一。
在我的私人系统上,这足以让我知道当我稍后配置我的新机器时需要设置什么。例如,我忘记了我在/etc/ssh/sshd_config
文件中禁用了 root 登录和密码身份验证,并且我在某个时候设置了一个额外的用户进行测试(!)。
完成后,我删除解压的档案:
doas rm -rf /tmp/tmpdir