软件包维护者如何防止文件与 Ubuntu 软件包发生冲突,例如尝试覆盖软件包中的“文件”?

软件包维护者如何防止文件与 Ubuntu 软件包发生冲突,例如尝试覆盖软件包中的“文件”?

我开发(或维护)了一个包,并收到了几个类似的错误报告:

dpkg: error processing /var/cache/apt/archives/libjline-java_1.0-1_all.deb (--unpack):
 trying to overwrite '/usr/share/java/jline.jar', which is also in package scala 2.9.2-400
Errors were encountered while processing:
 /var/cache/apt/archives/libjline-java_1.0-1_all.deb

但我还没有找到在有人点击它们之前阻止/找到它们的方法。我怎样才能在发生这种情况之前防止这些文件冲突/碰撞?

答案1

为了防止 Ubuntu 软件包出现这种情况,您可以使用apt-file并针对可以使用 apt-file 找到的文件数据库运行所有软件包:

apt-file search -D your_deb_file.deb

这将要求您已apt-file安装并更新。然后将包名称(可能还有版本)添加到控制文件中相应包条目中的Break或字段。这应该足够了。Conflict

现在,有些人可能想用自己的文件替换 Ubuntu 文件,比如提供较新版本的应用程序,在这种情况下,最好使用debian/与 Ubuntu 软件包相同的文件。这将使您的软件包具有与上游相同的形状,并且可以避免文件冲突。

注意:如果用户喜欢混合来自不同维护者的存储库,那么您无能为力。

相关内容