如何让`dpkg -i`为我安装依赖项?
说,我有foo-1.2.3.deb
,它依赖于perl
和python
,但运行命令:
dpkg -i ./foo-1.2.3.deb
不会安装这些依赖项。 所以我必须手动apt-get install perl python
。
如何让dpkg -i
自动为我安装这些依赖项?
使用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
的安装。
您可以安装gdebi-core
,它是10.04及更早版本的GDebi软件包安装程序的命令行版本。 在较新版本的Ubuntu中,软件中心用于安装debs,它没有等效的命令行。
要使用gdebi安装deb软件包,只需运行:
sudo gdebi my_package_1.0.deb
Gdebi
gdebi
安装deb包及其依赖项。 要使用它运行:
sudo gdebi package.deb
在较新版本的Ubuntu中,默认情况下不会安装,因此您需要从存储库安装它。
有关选项的完整列表,请参阅man gdebi
。
gdebi
是命令行,相当于默认情况下在Ubuntu中包含的同名图形工具。 图形工具的命令是gdebi-gtk
,具有类似的function:
从apt 1.1开始(在Xenial(16.04)中提供,拉伸) apt install
也允许本地文件:
sudo apt install ./foo-1.2.3.deb
更简单,更清洁。
请参阅发布公告
赛跑
sudo apt-get install -f
用dpkg安装软件包后可以解决破坏的依赖关系(至少man apt-get如此……)。 我会检查时不适当的更新。
dpkg没有依赖支持。 有一种解决方法,但这需要你创建一个本地数据库(因此你已经知道了依赖关系),它被认为是过时的(…)。
它必须是命令行吗? (服务器安装?)如果是这样也看看apt-get -f
但要小心:在安装后解决依赖关系可能会导致系统崩溃。
gdebi (gui frontend)曾经能够做到这一点但被USC取代。
你是怎么下载.deb的? 一些新的11.04function是从网站下载的.deb的处理:它在USC中打开,因此安装程序将解决依赖关系。
根据安德鲁的评论编辑: sudo gdebi foo-1.2.3.deb
就可以了!
作为gdebi-gtk
的替代品,您可以使用Ubuntu软件中心。
双击包,应该有一个安装按钮。
您可以使用以下内容创建文件dpkg-dep-inst
。
#!/bin/bash DEBIAN_FILE1=$1 dpkg -i $DEBIAN_FILE1 || apt-get --fix-broken install
我假设您在主文件夹中创建了该文件。 使用chmod +x dpkg-dep-inst
使其可执行,并使用sudo cp 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 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
实际上答案是dpkg
包管理器无法安装开箱即用的依赖项。 你man dpkg
,发现了。 因此,您需要使用基于dpkg
apt
, apt-get
, aptitude
等工具。
我会说同样的情况是针对另一个Linux半球上的rpm
包管理器。 rmp
并不意味着要进行基于依赖的安装。 它可以安装单个软件包,并且为了安装你使用yum
, urpmi
, up2date
的依赖项,这些都是基于RPM的。
如上所述,使用dpkg
直接安装软件包存在轻微的危险,因为后续的依赖性解析可能会因为@Rinzwind概述而导致系统损坏。
- 有没有办法看到每个包装的“处理触发器”究竟是什么?
- 如何修复“*:无法配置i386,因为*:amd64的版本不同”?
- dpkg:错误:dpkg状态数据库被另一个进程锁定
- 安装后脚本始终失败时如何强制删除
- update-rc.d:error:insserv拒绝了脚本头dpkg:erreur de traitement du paquet util-linux( – configure):
- 试图覆盖’/ usr / sbin / validlocale’,这也是包libc-bin 2.19-0ubuntu6.3
- 如何修复“无法打开锁定文件”,因为“权限被拒绝”?
- 安装Skype后断开依赖关系
- 如何恢复已删除的“dpkg”目录?