当前位置: 首页>>技术问答>>正文


如何让`dpkg -i`为我安装依赖关系?

,

问题描述

说,我有foo-1.2.3.deb取决于perlpython,但是,运行命令:

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,具有类似的功能:

dpkg,ubuntu

第四种思路

从apt 1.1开始(在Xenial(16.04)中可用),apt install还允许本地文件:

sudo apt install ./foo-1.2.3.deb

更简单,更清洁。

参见release announcment

第五种思路

赛跑

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软件中心。

双击包装并安装一个安装按钮。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/139.html,未经允许,请勿转载。