这是来自https://help.ubuntu.com/community/LiveCDCustomizationFromScratch。
我应该在 chroot 环境中执行此操作,
dpkg-divert --local --rename --add /sbin/initctl
它是否告诉操作系统“从现在开始,当您安装软件包时,无论软件包是什么(--local),如果该软件包尝试安装 /sbin/initctl,则将其安装(--add)到 /sbin/initctl.distrib(--rename)”?我试图理解手册,但无法完全理解。
如果某个文件通过 dpkg-divert 命令被软件包转移到另一个文件(例如,将 xfile 转移到 xfile.distrib),那么当使用该软件包时,是否会使用 xfile.distrib 而不是原始 xfile?
我试过了cat /var/lib/dpkg/diversions
,它给了我这个列表。
/usr/share/dict/words
/usr/share/dict/words.pre-dictionaries-common
dictionaries-common
/usr/share/man/man1/sh.1.gz
/usr/share/man/man1/sh.distrib.1.gz
dash
/usr/share/man/man1/dh_gstscancodecs.1.gz
...
该文件包含文件列表而不是包名称,我无法理解。例如,第一行是什么/usr/share/dic/words
意思?
请有人确认我的理解是否正确以及列表的含义。
答案1
它是否告诉操作系统“从现在开始,当您安装软件包时,无论软件包是什么(--local),如果该软件包尝试安装 /sbin/initctl,则将其安装(--add)到 /sbin/initctl.distrib(--rename)”
--rename
告诉它立即移动任何现有文件- 我会把它放在
--add
“告诉操作系统”旁边
是不是如果某个文件通过这个 dpkg-divert 命令被某个包转换为另一个文件(比如,将 xfile 转换为 xfile.distrib),那么当使用该包时,会使用 xfile.distrib 而不是原始的 xfile?
不。设置转移的人必须提供一些东西来代替这个xfile
(在这种情况下,就是你)。在该页面中,他们做了:
ln -s /bin/true /sbin/initctl
该diversions
文件由三行组组成:
- 要转移的文件
- 转移地点
- 设置转移的包裹
因此对于以下三行:
/usr/share/dict/words
/usr/share/dict/words.pre-dictionaries-common
dictionaries-common
dpkg
会将 的安装/usr/share/dict/words
从 以外的软件包dictionaries-common
(例如wamerican
)转移到/usr/share/dict/words.pre-dictionaries-common
。如果您安装wamerican
,则可以看到以下效果:
# dpkg -S /usr/share/dict/words
diversion by dictionaries-common from: /usr/share/dict/words
diversion by dictionaries-common to: /usr/share/dict/words.pre-dictionaries-common
wamerican: /usr/share/dict/words
该指南有点过时:initctl
Upstart 已不再使用。您甚至无法再安装它。服务管理使用 systemd 完成,现在您可以使用它systemctl
。