问题描述
说,我有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
的行。这个fixes(并完成)安装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
,具有类似的功能:
第四种思路
从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.04功能是处理从网站下载的.deb文件:它在USC中运行,因此依赖性将由安装程序解决。
基于评论安德鲁编辑:sudo gdebi foo-1.2.3.deb
会做的伎俩!
第七种思路
您可以使用以下内容创建一个文件dpkg-dep-inst
。
#!/bin/bash
DEBIAN_FILE1=$1
dpkg -i $DEBIAN_FILE1
apt-get install -f
我假设你在你的home文件夹中创建了这个文件。使用chmod +x dpkg-dep-inst
使其可执行,并使用sudo cp dpkg-dep-inst /usr/local/bin
将其移动到/usr/local/bin
。
现在你可以自动安装带有依赖项的debian软件包:
sudo dpkg-dep-inst foo-1.2.3.deb
第八种思路
作为gdebi-gtk
的替代品,您可以使用Ubuntu软件中心。
双击包装并安装一个安装按钮。