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

Xiè*_*léi 459 dpkg

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

dpkg -i ./foo-1.2.3.deb
Run Code Online (Sandbox Code Playgroud)

不会安装这些依赖项。所以我必须apt-get install perl python用手。

如何dpkg -i自动为我安装这些依赖项?

Ari*_*dom 582

使用后dpkg,运行以下命令帮助我安装所需的依赖项:

sudo apt-get -f install
Run Code Online (Sandbox Code Playgroud)

总之,你的终端应该是这样的:

$ 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...
Run Code Online (Sandbox Code Playgroud)

请注意关于的行Setting up package_with_unsatisfied_dependencies。这修复(并完成)了package_with_unsatisfied_dependencies.deb.

  • 运行“sudo apt-get -f install”后,我的包及其依赖项都已安装。运行 `sudo dpkg -i my_package.deb` 是不必要的,只会再次安装包。 (36认同)
  • 我应该再次运行 `sudo dpkg -i mypackage.deb` 吗? (13认同)
  • 以下适用于 Ubuntu 14.04:`sudo dpkg -i package.deb; sudo apt-get -f 安装;须藤 dpkg -i package.deb`。第一个 `dpkg -i` 运行标记依赖项,`apt-get -f install` 安装所需的依赖项,第二个 `dpkg -i` 成功安装包。请注意,`apt-get install -f` 是完全不同的命令。 (6认同)
  • @ysth不,不要做`dpkg -i --force`;这将强制安装损坏的软件包!运行 `dpkg` /without/ `--force` 将在软件包数据库中进行必要的输入,以便 `apt-get -f install` 能够执行正确的操作。 (2认同)

小智 167

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

sudo apt install ./foo-1.2.3.deb
Run Code Online (Sandbox Code Playgroud)

如此简单和干净。

发布公告

  • 是时候提供了 (8认同)
  • 这个功能的存在让我大吃一惊。这绝对应该是公认的答案。 (7认同)
  • 对于未满足的依赖项,请使用 apt 指示的“--fix-broken” (7认同)
  • 更正了命令,上面的评论引用了先前版本的答案,该版本缺少必要的“./”或路径 (5认同)
  • 最佳答案,现在即使 Debian 稳定版也有 apt 1.4.9 (3认同)

And*_*son 115

您可以安装gdebi-core,这是 10.04 及更早版本的 GDebi 软件包安装程序的命令行版本。在较新版本的 Ubuntu 中,软件中心用于安装 debs,它没有等效的命令行。

要使用 gdebi 安装 deb 包,只需运行:

sudo gdebi my_package_1.0.deb
Run Code Online (Sandbox Code Playgroud)


dv3*_*0ea 41

格德比

gdebi安装 deb 包及其依赖项。要使用它运行:

sudo gdebi package.deb
Run Code Online (Sandbox Code Playgroud)

在较新版本的 Ubuntu 中,默认情况下不会安装它,因此您需要从存储库安装它。

查看man gdebi完整的选项列表。

gdebi是相当于 Ubuntu 中默认包含的同名图形工具的命令行。图形工具的命令gdebi-gtk具有类似的功能:

gdebi-gtk


Den*_*rko 21

跑步

sudo apt-get install -f
Run Code Online (Sandbox Code Playgroud)

使用 dpkg 安装软件包后可能会解决损坏的依赖关系(至少 man apt-get 这样说......)。我检查时会更新。

  • `apt-get -f install` 有效,但 `apt-get install -f` 不一样。 (3认同)

kar*_*rel 14

如果您需要运行自动解析 .deb 文件的所有依赖项并使用相同命令安装 .deb 文件及其缺少的依赖项的命令,则需要使用 .deb 文件更新已安装的软件sudo apt update。然后打开终端,将目录更改cd为包含 package-name.deb 的目录,然后键入:

apt install --simulate ./ package-name.deb # 这个命令不需要sudo。

wherepackage-name.deb应替换为位于您尝试安装的当前目录中的 .deb 文件的名称。

上面的命令不会安装任何东西,但它会打印一条消息,列出默认 Ubuntu 存储库中不存在的 package-name.deb 的所有依赖项。您需要手动下载并安装这些缺少的依赖包的 .deb 文件才能安装 package-name.deb。在安装任何这些手动下载的依赖包之前运行,以检查这些包本身是否有任何未满足的依赖项。apt install --simulate ./manually-downloaded-package.deb

如果模拟命令成功完成,请运行以下命令安装 package-name.deb。

sudo apt install ./包名.deb

如果 .deb 文件都位于当前目录中,则同一命令中可以有多个 .deb 文件。

apt install --simulate ./package-name.deb # This command does not require sudo.


Rin*_*ind 11

dpkg 没有依赖支持。有一种方法可以解决它,但这需要您创建一个本地数据库(因此您已经知道依赖项)并且它被认为是过时的(...)。

它必须是命令行吗?(服务器安装?)如果是这样也看看apt-get -f,但要小心:解决依赖安装后可以有你结束了一个破碎的系统。

gdebi(gui 前端)曾经能够做到这一点,但被 USC 取代。

你是如何下载 .deb 的。11.04 的一些新功能是处理从网站下载的 .deb:它在 USC 中打开,因此安装程序将解决依赖关系。

根据安德鲁的评论编辑: sudo gdebi foo-1.2.3.deb 会做的伎俩!