我想制作一个简单的Debian软件包,用于安装一个依赖于Qt4库的简单工具。
在控制文件中,我已经定义了它依赖于Qt4库,但是当我测试该软件包时,它显示依赖项无法满足。
问题:
如何让Debian触发apt来安装所需的依赖关系?
虽然找不到相关文档,但我知道apt-get可以实现这一点。
如果你想避免创建本地 APT 仓库,你可以执行以下操作:
dpkg -i mypackage.deb
apt-get install --fix-missing
如果你想创建本地仓库,你可以使用reprepro。
sudo dpkg -i mypackage.deb
吗? - Muhammad Gelbanaapt-get install --fix-missing
之后,mypackage.deb
已经被成功安装并正常工作。 - HelloWorld101dpkg --unpack *.deb
,这不会出错,并且会将软件包保留在状态中,以便 apt-get install --fix-missing
安装所有内容并配置您的 deb 文件。 - user3710044dpkg
安装它,它将无法正常工作,因为dpkg
不知道在哪里找到其他依赖项。如果您构建自己的存储库,可以通过apt-get
进行安装,但第一次比较耗时(并不难,只是第一次需要一些时间来学习)。gdebi
(您可能需要安装它:apt-get install gdebi-core
)。它是一个检查软件包依赖项的工具,并调用apt-get
获取和安装它们,然后调用dpkg
来安装您的软件包。gdebi your-package.deb
。它将从该机器上配置的apt仓库中获取所有依赖项(如果它们在仓库中可用)。或者我有任何其他不理解的问题吗? - Carlos Campderrós根据@textshell在this answer中的说法:
starting with apt 1.1 (available in Xenial (16.04), stretch)
apt install
also allows local files:
sudo apt install ./foo-1.2.3.deb
So much simpler and cleaner.
See the release announcment
这也会安装依赖项,就像普通的apt install
或apt-get install
一样。
apt
模块并提供一个deb
文件时,这也是有效的。 - jamescdebian/
目录控制文件中指定其依赖项。我相信debian/control
用于此目的的Depends:
指令。Depends: <some dependency>
只会检查依赖项是否已安装,并相应地停止deb包的安装。我正在寻找的解决方案是将这些依赖项作为deb安装的一部分自动安装。您能否看一下这个问题:https://dev59.com/fH7aa4cB1Zd3GeqPqXIf - exAres一种方法是在您的计算机上创建一个本地软件包仓库,并将其添加到 /etc/apt/sources.list 中。然后,您可以使用 apt-get 从本地仓库安装软件包,并自动解决依赖关系。
可能有更简单的方法,但我不知道是什么。
dpkg
是一个低级工具,不考虑依赖关系。Carlos 使用 gdebi 的想法是正确的,因为它在运行时会拉取依赖项,而无需使用apt
,正如 Thomas 指出的那样,你也可以使用apt
。 - NuclearPeon