首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从编译源替换多个Debian包

从编译源替换多个Debian包
EN

Unix & Linux用户
提问于 2013-04-29 16:34:46
回答 1查看 1.9K关注 0票数 4

我不得不从它的源代码库下载并安装一个库的版本。问题是来自Kubuntu包管理器的其他软件包需要安装这个库。现在我正在和ffmpeg一起工作,但是我以前必须这样做(例如OpenCV),我正在寻找未来最好的方法.

所以我想要做的是创建一个debian包,我可以用dpkg来安装这个包。从那以后,我对deb文件进行了解压缩,以修改它,试图使它正常工作。

问题是,ffmpeg在包管理器中被分成多个包,如果没有必要的话,我不想编写5/6包来替换每个包。我已经确保它与所有这些包所需的所有内容一起正确编译。

我一直在尝试使用"Requires“和”seem“,但它似乎不能正常工作。之后,当我尝试安装VLC时,它要求安装包管理器中的所有VLC。我还确保版本号晚于包管理器中的版本号。

下面是我的deb控制文件中所写的内容。据我所见,这都是在μ子包管理器中确认的。

代码语言:javascript
运行
复制
Package: ffmpeg
Priority: extra
Section: checkinstall
Installed-Size: 172216
Maintainer: root@skund
Architecture: amd64
Version: 8:1.2.1-git-2
Provides: ffmpeg,libav-tools,libpostproc52,libavdevice53,libavutil51,libavformat53,libavcodec53,libswscale2
Replaces: ffmpeg,libav-tools,libpostproc52,libavdevice53,libavutil51,libavformat53,libavcodec53,libswscale2
Description: Package created with checkinstall 1.6.2

在这里,它安装在包管理器中:

有人想办法让这件事发挥作用吗?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2013-04-29 19:12:27

首先,Provides:不适用于指定版本的依赖项。来自Debian策略手册,“虚拟软件包-提供”

如果关系字段附带了版本号,那么只有真正的包才会被认为是...。换句话说,如果指定了版本号,这是一个忽略所有提供的包名的请求,并且只考虑真正的包。

库的依赖关系几乎总是版本化的。所以这是行不通的。

相反,你可以:

  • 下载Debian (apt-get source PACKAGE)并为最新的ffmpeg更新它(实际上,您甚至可以向Debian跟踪器发送所需的修补程序)。当然,您需要更新库的子文件(我打赌ABI已经改变了),并且可能需要重新构建许多依赖于ffmpeg的东西。如果API发生变化,其中一些可能需要进行源更改。
  • 或者,简单的方法是:将其安装到/usr/local中。您可以为此构建一个.deb,并给它一个不同的包名(例如,local-ffmpeg)。然后,您可以在Debian提供的ffmpeg旁边安装它,而不必担心上面的所有内容。您还可以使用stow将其安装在/usr/local中。
票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/74073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档