如何安装两个写入相同文件的软件包


14

我有两个软件包,每个软件包创建/ usr / bin / ffprobe。其中一个是来自Deb Multimedia存储库的ffmpeg,另一个是从源代码构建的ffmbc 0.7-rc5。手动滚动是至关重要的,并且我们曾经只是在需要时从源代码进行安装。我只能认为它会破坏ffmpeg文件,并且从来没有任何不良影响。

从理论上讲,我们的ffmbc包覆盖ffmpeg包中的文件应该是可以接受的。缺点是对ffmpeg的更新将覆盖ffmbc二进制文件。有什么简单的方法可以解决这个问题?

Answers:


12

上基于Debian的系统存在DPKG(下面APT)可以具有改道使用命令设置的dpkg-转接

dpkg-divert是用于设置和更新转移列表的实用程序。

文件转移是一种强制dpkg(1)不在文件中安装文件的方法,而是将文件安装到转移位置的一种方法。...系统管理员还可以使用它来覆盖某些软件包的配置文件,或者在安装包含这些文件的软件包的较新版本时,只要dpkg需要保留某些文件(未标记为“ conffiles”)。 。

因此,对于您的情况,您可以使用类似这样的命令来设置转移。(我尚未测试,请检查手册页并确认这似乎正确。)

dpkg-divert --local --divert /usr/bin/ffprobe.ffmpeg --rename /usr/bin/ffprobe

8

我发现的另一个解决方案是更改构建ffmbc软件包的方式。通常,可以传递备用前缀来更改已安装文件的最终路径:

./configure --prefix=/usr/local

对于Debian软件包,它在$ {package} / debian / rules文件中,如下所示:

override_dh_auto_configure:
    ./configure --enable-gpl --prefix=/usr/local

通过将ffmbc文件放入/usr/local,我可以保留ffmpeg文件,/usr并允许每个软件包独立更新。


3
软件包不应安装任何东西,/usr/local因为这违反了政策。它的全部/usr/local目的是将文件保留在包管理下和将手动安装的文件分开。请参阅以下FHS相关讨论:unix.stackexchange.com/questions/30/...
Onlyjob

-1

提供相同文件的软件包应该相互冲突-并不是因为它是一个错误(请考虑报告此类情况)。如果您从源代码构建软件并使用make install(或类似方法)进行安装,请确保/usr/local避免与软件包管理冲突。

请注意,deb-multimedia.org已被弃用,因为它与官方软件包发生冲突而臭名昭著。

如果没有为Debian打包您所需的软件,则可以提交打包请求RFP,但请先检查是否有现有的请求

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.