gdebi vs dpkg:gdebi 如何自动获取缺失的依赖项?我可以将 gdebi 用于 .deb 软件包的所有其他安装吗?

use*_*879 17 apt dpkg ppa deb gdebi

最近我碰巧将我的 Ubuntu 重新安装到 Lubuntu 15.04。所以我正在寻找 Skype 安装并得到了这个很好的教程

真的很酷。它从这里下载了skype deb的官方包

由于我还没有gdebi安装,我使用安装sudo su -c apt-get install gdebi

然后skype-ubuntu-precise_4.3.0.37-1_i386.deb使用 gdebi 命令安装sudo su -c gdebi skype-ubuntu*4*.deb

哇,gdebi 为我做了一切,如果不使用传统的 Apt PPA 手动链接添加,这可能会破坏我的系统更新/软件安装,这是一件多么轻松的事情..

但是如果我尝试使用安装它 dpkg -i

dpkg -i skype-ubuntu-precise_4.3.0.37-1_i386.deb
Selecting previously unselected package skype.
(Reading database ... 86449 files and directories currently installed.)
Preparing to unpack skype-ubuntu-precise_4.3.0.37-1_i386.deb ...
Unpacking skype (4.3.0.37-1) ...
dpkg: dependency problems prevent configuration of skype:
 skype depends on libc6 (>= 2.3.6-6~).
 skype depends on libc6 (>= 2.7).
 skype depends on libgcc1 (>= 1:4.1.1).
 skype depends on libqt4-dbus (>= 4:4.5.3).
 skype depends on libqt4-network (>= 4:4.8.0).
 skype depends on libqt4-xml (>= 4:4.5.3).
 skype depends on libqtcore4 (>= 4:4.7.0~beta1).
 skype depends on libqtgui4 (>= 4:4.8.0).
 skype depends on libqtwebkit4 (>= 2.2~2011week36).
 skype depends on libstdc++6 (>= 4.2.1).
 skype depends on libx11-6.
 skype depends on libxext6.
 skype depends on libxss1.
 skype depends on libxv1.
 skype depends on libssl1.0.0.
 skype depends on libpulse0.
 skype depends on libasound2-plugins.

dpkg: error processing package skype (--install):
 dependency problems - leaving unconfigured
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for mime-support (3.55ubuntu1.1) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu2) ...
Processing triggers for dbus (1.8.8-1ubuntu2.1) ...
Errors were encountered while processing:
 skype
Run Code Online (Sandbox Code Playgroud)

这么多的依赖问题。哦,我刚刚用谷歌搜索了 GDebi 和维基百科

GDebi 是一个 APT 工具,可以在命令行和 GUI 中使用。 [44] GDebi 可以像 dpkg 命令一样通过命令行安装本地 .deb 文件,但可以访问存储库以解决依赖关系

我的奇迹是

(1) gdebi 如何在不使用配置文件中手动添加的 Apt PPA 链接的情况下安装 .deb Packages with Dependencies?

(2) 我可以使用相同的 gdebi 命令 ( sudo su -c gdebi my.deb) 来安装所有其他 .deb 包而不添加 Apt PPA 还是我必须像这样更改格式:sudo su -c my*n*.deb其中 n 是软件版本等?

请用通俗的语言解释,以便我能理解。

Anw*_*war 13

实际上gdebi只是一个前端的dpkg附加功能,它可以检查存储库中的依赖包并可以通过一次操作安装它们,而dpkg -i需要手动进行两次操作(后来是apt-get -f install)。

问题 1:

1) gdebi 如何做到这一点?在不使用配置文件中手动添加的 Apt PPA 链接的情况下安装具有依赖项的 .deb 包?

作为dpkg前端,它可以使用dpkg. 由于每个.deb包文件都包含(前提是它们没有损坏)有关该 deb 文件的元数据(如包名称、维护者、依赖项等),因此可以轻松检查此文件的依赖项。

例如,您可以使用以下命令检查 .deb 文件的元数据 dpkg --info package-name.deb

然后它使用这些信息构建依赖关系映射并将本地可用的 .deb 文件标记为已下载.deb从 Internet下载其他文件。

请注意,那些需要的额外包必须在系统中配置的至少一个存储库中可用(具有适当的版本)。

然后它继续像正常的 apt 安装一样。不同之处在于它不会重新下载主 .deb 文件

问题2:

(2) 我可以使用相同的 gdebi 命令 ( sudo su -c gdebi my.deb) 安装所有其他 deb 包而不添加 PPA 吗?还是我必须更改格式sudo su -c myn.deb,其中 n 是软件版本等?

PPA 的存在是有原因的。主要原因是他们提供最新版本的包。这些更高版本的包通常也依赖于更高版本的子包,这些子包通常也由 PPA 提供,而不是来自标准的 Ubuntu 存储库。

示例场景:

假设,一个包命名为母亲封装具有的最高版本2.0的标准Ubuntu软件仓库,而这个母亲包取决于包名为儿童安全包装的版本2.还假设,一些PPA提供母亲包的版本,3.0这就需要对child-package3.0,它们都可以通过该 PPA 存储库获得。

问题是,如果您现在从存储库页面下载mother-package-3.0.deb并尝试使用 安装它gdebi,您将(或gdebi)失败。

因为,查看mother-package-3.0.deb文件,gdebi知道这个mother-package需要version或更高版本的child-package3.0,但它只知道version的位置2.0。它不知道从哪里获取版本3.0儿童安全包装的。这是意料之中的,因为你没有告诉系统你从哪里得到这个最新的Mother-package。换句话说,您没有将存储库列表配置为包含该 PPA。

所以,这个问题的明显答案是它取决于如果可以在已经配置的存储库中找到必要的依赖项,则安装将成功。但如果没有,那么它将无法安装这个更高版本的软件包。这就是为什么您仍然需要 PPA,这是无需手动执行所有这些操作的最简单方法。

第二个问题的第二部分对我来说没有意义


Moi*_*was 5

我在几个应用程序中遇到了同样的问题,Skype 就是其中之一,这些应用程序依赖于需要手动安装的外部包或库文件。

要解决我使用的问题:

sudo dpkg -i skype.deb
Run Code Online (Sandbox Code Playgroud)

然后在被提示输入您在输出中所拥有的外部库之后,我输入了:

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

这下载了所需的软件包并自行安装了Skype。