我正在研究如何将一些软件作为 Debian 软件包提供。我打算充当第三方供应商,并放弃通过赞助商将源代码添加到 Debian。用户必须将适当的条目添加到他们的sources.list
.
根据 Debian 文档Debian 存储库 | 使用第三方:
密钥更新应由名为 的 Debian 软件包分发
deriv-archive-keyring
。此软件包必须在上述位置以二进制形式分发密钥……并且还可以包括/etc/apt/sources.list.d/deriv.sources
或/etc/apt/sources.list.d/deriv.list
文件和/etc/apt/preferences.d/deriv.pref
文件
在我看来,如果使用两个不同的第三方包,则会发生名称冲突,并且一个第三方包将覆盖另一个第三方包。例如,如果用户已经添加了一个第三方 repo,那么我的deriv-archive-keyring
将覆盖较早的deriv-archive-keyring
。
Debian 如何避免一个包覆盖另一个包?
答案1
事实上,如果有两个不相关的软件包具有相同的名称,则会发生冲突,较新安装的软件包将取代前者(尽管多架构等特殊设置与此情况无关)。它可以毫无问题地执行此操作,因为它为每个已安装的软件包保留了属于已安装软件包的所有文件的列表。
deriv
尽管词汇中包含“应该”等,但您不应该过于字面化。该术语是您选择的实际衍生名称的占位符,您应该在提到它的地方用您的实际衍生名称替换它。
只要看一下官方的 Debian 存储库,它已经包含了一些 archive-keyring 包(包括它自己),以便在从一些已知的衍生或附加发行版中提取包时缓解“初始信任”问题(应该始终这样做小心):
# apt-cache search '^.*-archive-keyring$'
debian-archive-keyring - GnuPG archive keys of the Debian archive
debian-ports-archive-keyring - GnuPG archive keys of the debian-ports archive
emdebian-archive-keyring - GnuPG archive keys for the emdebian repository
leap-archive-keyring - OpenPGP archive key for the leap.se software repositories
neurodebian-archive-keyring - neuroscience-oriented distribution - GnuPG archive keys
pkg-mozilla-archive-keyring - GnuPG archive keys for the Debian Mozilla team package repository
ubuntu-archive-keyring - GnuPG keys of the Ubuntu archive - transition package
ubuntu-keyring - GnuPG keys of the Ubuntu archive
对于提供的软件包本身,除非您愿意接受后果,否则您应该避免与现有软件包发生冲突。例如:提供相同软件包名称的较新版本时:处理发送到错误位置的错误报告等。最好选择备用软件包名称。
对于软件包提供的命令,使用以下工具更容易处理update-alternatives
您的某些软件包可能必须使用或者提供在安装期间或安装后使用的方法。