Linux 如何使Debian软件包安装依赖项?

Linux 如何使Debian软件包安装依赖项?,linux,package,debian,apt,depends,Linux,Package,Debian,Apt,Depends,我想制作一个简单的Debian包来安装一个依赖于Qt4 libs的简单工具 在控制文件中,我定义了它依赖于qt4libs,然而,当我测试包时,它表示无法满足依赖关系 问题: 如何使Debian触发器也易于安装依赖项 找不到文档,但我知道apt get可以做到这一点。一种方法是在您的计算机上创建本地包存储库,并将其添加到/etc/apt/sources.list。然后,您可以使用apt get从本地存储库安装包,并自动解决依赖关系 可能有一种更简单的方法,但我不知道会是什么。如果您通过dpkg安装

我想制作一个简单的Debian包来安装一个依赖于Qt4 libs的简单工具

在控制文件中,我定义了它依赖于qt4libs,然而,当我测试包时,它表示无法满足依赖关系

问题:

如何使Debian触发器也易于安装依赖项


找不到文档,但我知道apt get可以做到这一点。

一种方法是在您的计算机上创建本地包存储库,并将其添加到/etc/apt/sources.list。然后,您可以使用apt get从本地存储库安装包,并自动解决依赖关系


可能有一种更简单的方法,但我不知道会是什么。

如果您通过
dpkg
安装它,它将无法工作,因为
dkpg
不知道在哪里可以找到其他依赖项。如果你建立自己的回购协议,你可以通过apt get来完成,但是第一次这样做有点费时(这并不难,只是第一次“新”的东西,需要一些时间来学习)

另一方面,您可能正在寻找的解决方案是
gdebi
(您可能需要安装它:
apt get install gdebi core
)。它是一种检查软件包依赖关系的工具,调用
apt get
获取并安装软件包,然后调用
dpkg
安装软件包。

如果要创建Debian软件包,请在
Debian/
目录控制文件中指定其依赖关系;我相信
debian/control
需要
依赖于:
指令来实现这一目的


我自己也不太清楚细节,但是有一些说明;特别是,似乎是开始查找的正确位置。

如果您希望避免创建本地APT存储库,可以执行以下操作:

dpkg -i mypackage.deb
apt-get install --fix-missing
如果确实要创建本地存储库,可以使用。

每英寸:

从apt 1.1(Xenial(16.04)中提供)开始,stretch)
apt安装也允许本地文件:

sudo apt install ./foo-1.2.3.deb
更简单更干净


这也将安装依赖项,就像正常的
apt安装
apt get安装

您是否依赖发行版附带的正常Qt4库?您能否发布准确的详细信息,即“依赖”规范和带有错误的apt get调用?我觉得您的包是正确的,但您使用的apt镜像中不存在依赖关系。请发布完整的错误消息。
dpkg
是一个低级工具,不考虑依赖关系。Carlos对于使用gdebi有正确的想法,因为当您运行gdebi时,它会引入依赖项,而不必使用
apt
,正如Thomas所指出的,您也可以使用它。只需将所需的包添加到PreDepends部分和cinst文件中。我懂了。。。事情是这样的。我需要做一个安装程序。例如当你下载Skype时,它以.deb格式出现。它是否带来了它所需要的所有LIB?我应该包括我需要的所有LIB吗?我应该如何依靠apt获取依赖项?打包依赖项的问题是,它们可能会干扰目标系统。您关于当地代表的建议是否适用于分销。想法:我可以在运行.deb时创建本地代表,然后调用apt进行后期安装。。。但这似乎不是一个有效的解决方案……在安装过程中,从apt repo安装gdebi,然后执行
gdebi-your-package.deb
。它将从该机器中配置的apt存储库中获取所有依赖项(如果它们在repo中可用)。或者还有其他我不明白的问题吗?gdebi会将已安装的软件包标记为我要安装的软件包的依赖项吗?您想要的是“gdebi核心”,而不是“gdebi”软件包;但是,命令行实用程序称为“gdebi”.#apt get install-f--fix missing我应该再次运行
sudo dpkg-I mypackage.deb
吗?不。在Debian stretch中至少
mypackage.deb
安装了apt get install--fix missing
。第一行应该是
dpkg--unpack*。deb
这不会出错,并且会将包留在状态
apt get install--fix missing
安装所有内容并配置您的deb文件。您好,我认为
依赖:
将只检查依赖项是否已安装,并相应地停止deb包的安装。我正在寻找的解决方案是作为deb isn安装的一部分自动安装这些依赖项。请看一看这个问题:当使用Ansible
apt
模块并为其提供一个
deb
文件时,这也有效。