我正在尝试使用 mozjpeg 作为 jpeg-turbo 的替代库。我完全能够获取源代码并根据需要对其进行编译,甚至可以从中创建一个 deb 文件,我可以使用它来安装包(例如apt-get install ./mozjpeg_3.2_amd64.deb
)。
为了清楚起见,请注意这两个包应该提供完全相同的接口,因此在功能上是等效的。因此,mozjpeg 应该满足对 jpeg-turbo 的依赖。
好的,继续,当我继续安装依赖包(例如 ghostscript 开发头文件libgs-dev
)时,我遇到了错误,因为它们声明了对libjpeg62-turbo-dev
:
dpkg: error processing archive /tmp/apt-dpkg-install-HuzNRO/0-libjpeg62-turbo-dev_1%3a1.5.1-2_amd64.deb (--unpack):
trying to overwrite '/usr/include/jerror.h', which is also in package mozjpeg 3.2-20170219
现在,在这一点上出现冲突当然是合乎逻辑的。有没有办法防止这种情况?我可以告诉依赖系统 mozjpeg 满足对 jpeg-turbo 的依赖,以便任何依赖 jpeg-turbo 的包都将使用替换安装吗?
提前致谢。
依赖关系由包维护者在包本身中编码为对特定包名称和/或版本的依赖。据我所知,您作为最终用户没有任何方法可以从例如 apt-get 配置文件中操作此类依赖项。
当多个包提供相同的功能时,可以创建对特定功能的依赖关系,而不是依赖于特定的包名称,
virtual-package
但通常需要与其他包维护者协调。对于您自己的环境,您可以在没有任何此类协调的情况下尝试:
手册中有许多警告,但是当您为 mozjpeg 构建包时,您可以使用该
Provides: jpeg-turbo
选项使其成为虚拟包,一旦安装,它将满足需要 jpeg-turbo 的包的依赖要求。