我正在尝试使用 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 的软件包都将使用替换安装吗?
提前致谢。
答案1
依赖项由软件包维护者在软件包本身中编码为对特定软件包名称和/或版本的依赖项。据我所知,作为最终用户,您无法通过 apt-get 配置文件等方式操纵此类依赖项。
可以通过以下方式创建特定功能的依赖关系,而不是依赖于特定的包名称:virtual-package
当多个包提供相同的功能时,但通常需要与其他包维护者协调。
不过,对于您自己的环境,您可以尝试不进行任何此类协调:
手册中有许多警告,但是当你为 mozjpeg 构建包时,你可以使用Provides: jpeg-turbo
选项使其成为虚拟包,一旦安装,就可以满足需要 jpeg-turbo 的包的依赖要求。