foo-1.2.3.deb
依赖于perl
和python
,但是,运行命令:dpkg -i ./foo-1.2.3.deb
不会安装这些依赖项。因此,我必须手工
apt-get install perl python
。如何让
dpkg -i
自动为我安装这些依赖项?#1 楼
使用dpkg
之后,运行以下命令可以帮助我安装所需的依赖项:sudo apt-get -f install
总的来说,您的终端应如下所示:
$ sudo dpkg -i package_with_unsatisfied_dependencies.deb
dpkg: dependency problems prevent ...
[additional messages]
$ sudo apt-get -f install
[apt messages]
Setting up [dependency]...
Setting up package_with_unsatisfied_dependencies...
注意有关
Setting up package_with_unsatisfied_dependencies
的行。这样可以修复(并完成)package_with_unsatisfied_dependencies.deb
的安装。评论
我应该再次运行sudo dpkg -i mypackage.deb吗?
–穆罕默德·盖尔巴纳(Muhammad Gelbana)
2013年11月22日13:41
运行sudo apt-get -f之后,安装我的软件包,它的依赖项都已安装。不需要运行sudo dpkg -i my_package.deb,它将再次安装该软件包。
– Gus E
2013年12月13日16:20
以下是在Ubuntu 14.04上的作品:sudo dpkg -i package.deb; sudo apt-get -f安装; sudo dpkg -i package.deb。第一个dpkg -i运行标记依赖关系,apt-get -f install安装必需的依赖关系,第二个dpkg-成功安装软件包。请注意,apt-get install -f是完全不同的命令。
– Mikko Rantalainen
16-4-21在11:19
@ysth不,不要dpkg -i --force;这将强制安装损坏的包装!运行dpkg / without / --force将在软件包数据库中进行必要的输入,以便apt-get -f install可以正确执行操作。
– Brian A. Henning
16年5月10日在15:21
@Lotharyx:我现在无法尝试,但是我不认为没有力的dpkg(由于缺少依赖项而失败)会在软件包数据库中产生一个条目
–ysth
16年5月10日17:00
#2 楼
从apt 1.1开始(可在Xenial(16.04)中使用,拉伸)apt install
还允许本地文件:sudo apt install ./foo-1.2.3.deb
如此简单和整洁。
查看发布公告
评论
这是时候了
–迈克
16年8月4日在18:13
此解决方案无效。所发生的只是一堆错误。
–比利S
16-10-1在14:29
更正了命令,上面的注释指的是以前版本的答案,但缺少必要的./或路径
–詹娜♦
17年9月2日在10:36
最好的答案,现在,即使Debian稳定版也具有apt 1.4.9
– saeedgnu
19年4月22日在14:54
这个功能的存在令我震惊。这绝对应该是公认的答案。
–rajb245
19/09/13在13:25
#3 楼
您可以安装gdebi-core
,这是GDebi软件包安装程序从10.04或更早版本开始的命令行版本。在较新版本的Ubuntu中,软件中心用于安装debs,它没有等效的命令行。要使用gdebi安装deb软件包,只需运行: br />
sudo gdebi my_package_1.0.deb
评论
可能是这里最好的答案之一。
– MarkSkayff
20年8月28日在11:49
#4 楼
Gdebigdebi
安装了一个deb软件包及其依赖项。要运行它,请运行:sudo gdebi package.deb
在Ubuntu的较新版本中,默认情况下未安装它,因此您需要从存储库中安装它。
有关完整选项列表,请参阅
man gdebi
。 。gdebi
是等效于默认情况下在Ubuntu中包含的同名图形工具的命令行。图形工具的命令为gdebi-gtk
,并具有类似的功能:评论
gdebi-gtk不会显示必需的deps(至少我在这里有这个版本,看起来像个bug),但是命令行会显示!如果我们有另一台装有软件包的机器,我们可以根据这样的deps列表在其上使用dpkg-repack :)
–水瓶座力量
18年7月13日在21:37
#5 楼
在使用dpkg安装软件包之后,运行sudo apt-get install -f
可能会解决损坏的依赖关系(至少man apt-get这么说吧...)。病情更新,何时检查。
评论
我应该再次运行sudo dpkg -i mypackage.deb吗?
–穆罕默德·盖尔巴纳(Muhammad Gelbana)
13年11月22日在13:42
apt-get -f install可以运行,但是apt-get install -f不一样。
– 200_success
15年5月13日在0:20
#6 楼
如果需要运行自动解决.deb文件的所有依赖性并使用同一命令安装.deb文件及其缺少的依赖性的命令,则需要使用sudo apt update
更新安装的软件。然后打开终端,使用cd
将目录更改为包含package-name.deb的目录,然后键入:apt install --simulate ./package-name.deb # This command does not require sudo.
其中
package-name.deb
应该替换为位于当前目录中的.deb文件的名称。您正在尝试安装。上面的命令不会安装任何内容,但会显示一条消息,列出默认Ubuntu存储库中不存在的package-name.deb依赖项。您将需要手动下载并安装这些缺少的依赖程序包的.deb文件,以便安装package-name.deb。在安装任何手动下载的依赖软件包之前,请运行
apt install --simulate ./manually-downloaded-package.deb
,以检查这些软件包本身是否具有未满足的依赖关系。如果模拟命令成功完成,请运行以下命令来安装package-name.deb。
sudo apt install ./package-name.deb
如果.deb文件都位于当前目录中,则同一命令中可以有多个.deb文件。
sudo apt install ./package-name-1.deb ./package-name-2.deb
#7 楼
dpkg不具有依赖项支持。有一种解决方法,但是这需要您创建一个本地数据库(因此您已经知道依赖项),并且它被认为已过时(...)。是否必须命令行? (服务器安装吗?)如果这样的话,也请看看
apt-get -f
,但要小心:安装后解决依赖关系可能会导致系统损坏。gdebi(gui前端)曾经能够做到
如何下载.deb。 11.04的一些新功能是处理从网站下载的.deb:它在USC中打开,因此安装程序将解决依赖性。
根据安德鲁的评论进行编辑:
sudo gdebi foo-1.2.3.deb
可以解决问题!
评论
gdebi仍然可以用于此目的。软件中心现在只是默认应用程序。另外,正如Chen Xiao-Long所指出的,gdebi也可以在命令行上使用。
–andrewsomething
2011年5月4日在16:26
凉!那么问题就有了答案,因为看起来gdebi也可以在命令行上使用。
–灵风
2011年5月4日16:50
这应该是公认的答案。
–prosti
18年8月16日在18:56
#8 楼
作为gdebi-gtk
的替代产品,您可以使用Ubuntu软件中心。双击该软件包,然后应该有一个安装按钮。
#9 楼
您可以使用以下内容创建文件dpkg-dep-inst
。#!/bin/bash
DEBIAN_FILE1=
dpkg -i $DEBIAN_FILE1 || apt-get --fix-broken install
我假设您是在主文件夹中创建该文件的。使用
chmod +x dpkg-dep-inst
使其可执行,然后使用/usr/local/bin
将其移至sudo cp dpkg-dep-inst /usr/local/bin
。现在,您可以使用以下方式自动安装具有依赖项的debian软件包:
sudo dpkg-dep-inst foo-1.2.3.deb
评论
使用apt-get --yes --fix-broken安装并自动进行修复。
–卢卡斯
2014年4月4日在18:12
@ysth不,一般而言。
–BuZZ-dEE
2015年12月17日在9:17
#10 楼
我只是遇到了这个问题。但是,调用apt-get install -f
不会安装推荐的依赖项!然后唯一的解决方法是创建一个本地存储库并添加到/etc/apt/sources.list
,即:apt-ftparchive packages . > Packages && gzip < Packages > Packages.gz
sudo echo "deb file://$PWD /" >> /etc/apt/sources.list
sudo apt-get update
#11 楼
实际上,答案是dpkg
软件包管理器无法立即安装依赖项。您找到了man dpkg
,发现了这一点。因此,您需要使用基于apt
的工具apt-get
,aptitude
,dpkg
,...。我要说的是另一半Linux上的
rpm
软件包管理器也是如此。 rmp
并非旨在进行基于依赖项的安装。它可以安装单个软件包,并且要使用yum
,urpmi
和up2date
来安装依赖项,这些都是基于RPM的。如@Rinzwind所述,解决可能最终会导致系统损坏。
评论
从.deb安装软件时,如何自动获取缺少的依赖项的可能重复项?@ pd12:祝您有循环参考! :-D
呵呵,我决定将两者都链接起来,看看国防部会选择哪一个。
令人惊讶的是,在2016年,.deb图形安装仍然无提示地失败,而没有告诉用户有关缺少依赖项的任何信息。
“是因为我将sudo apt install pkg编写到bash脚本中,而没有使用sudo执行该脚本?”这取决于您输入密码还是配置操作系统不要求脚本密码。无论如何,您是否捕获了脚本的输出?