在 Ubuntu 或 Debian 中通过命令行来安装应用是一件很简单的事,你只需要执行 apt install package_name
就可以了。
但如果你想在安装一个软件包之前或之后知晓这个软件包的依赖,那该怎么办呢?
在本教程中,我将向你展示多种方法来在 Ubuntu 或其他使用 APT 包管理器 的 Debian 系 Linux 发行版中查看一个软件包的依赖。
什么是 Ubuntu 中的包依赖?
当你在 Linux 中安装一个软件包,有时这个软件包还需要其他的软件包来使它工作正常。这些额外的软件包就叫作这个包的依赖。假如这些软件包之前没有在系统中被安装,那么这些依赖在安装这个软件包的同时会被自动安装上。
举个例子,用来转换视频格式的 GUI 工具 HandBrake 需要 FFmpeg、GStreamer 软件包。所以对于 HandBrake 来说, FFmpeg 和 GStreamer 就是它的包依赖。
假如在你的系统上这些软件包没有被安装,则当你 在 Ubuntu 上安装 HandBrake 时,就会自动安装上它们。
在 Ubuntu 和基于 Debian 的发行版中查看一个软件包的依赖
正如在 Linux 上经常发生的那样,有多种方法来达到相同的目标。下面让我们一起瞧瞧查看一个软件包依赖的多种方法。
使用 apt show 来查看依赖
你可以使用 apt show 命令 来展示一个包的详细信息。其中依赖信息就是其中一部分,你可以在以 “Depends” 打头的那些行中看到它们。
例如,下面展示的是使用 apt show
展示 ubuntu-restricted-extras 这个包的详细信息:
1 | abhishek@itsfoss:~$ apt show ubuntu-restricted-extras |
如你所见,ubuntu-restricted-extras
包依赖于 ubuntu-restricted-addons
这个软件包。
但你得小心的是依赖包还可能依赖于其他包,这样一直循环往复直到尽头。但幸好 APT 包管理器可以为你处理这些复杂的依赖关系,自动地安装所有的依赖(大多数情况下)。
什么是推荐包?
你注意到了上面结果输出中以 “Recommends” 开头的那些行了吗?
推荐包不是软件包的直接依赖,但它们可以开启软件包的一些额外功能。
正如你上面看到的那样,
ubuntu-restricted-extras
包有ttf-mscorefonts-installer
这个推荐包,用来在 Ubuntu 上安装 Microsoft 的字体。这些推荐包也会默认被一同安装上,假如你想显式地禁止这些推荐包的安装,你可以像下面这样使用
–-no-install-recommends
选项。
1
2 sudo apt install --no-install-recommends package_name
使用 apt-cache 来直接获取依赖信息
上面通过 apt show
的方式会获取到大量信息,假如你想在脚本中获取到依赖信息,那么 apt-cache
命令将会给你一个更好且更简洁的输出结果。
1 | apt-cache depends package_name |
下面的输出看起来更加干净,不是吗?
使用 dpkg 来查看一个 DEB 文件的依赖
apt
和 apt-cache
都作用于软件仓库中的软件包,但假如你下载了一个 DEB 文件,那么这两个命令就不起作用了。
在这种情形下,你可以使用 dpkg
命令的 -I
或 --info
选项。
1 | dpkg -I path_to_deb_file |
依赖信息就可以在以 “Depends” 开头的那些行中找到。
使用 apt-rdepends 来查看依赖及依赖的依赖
假如你想查看更多关于依赖的信息,那么你可以使用 apt-rdepends
工具。这个工具可以创建完整的依赖树。这样你就可以得到一个软件包的依赖以及这些依赖的依赖。
它不是一个常规的 apt
命令,所以你需要从 universe 软件仓库中安装上它:
1 | sudo apt install apt-rdepends |
这个命令的输出通常很多,取决于依赖树的大小。
1 | Reading package lists... Done |
apt-rdepends
工具的功能非常多样,它还可以用来计算反向依赖。这意味着你可以查看某个特定的包被哪些软件包依赖。
1 | apt-rdepends -r package_name |
输出可能会非常多,因为它将打印出反向依赖树。
1 | abhishek@itsfoss:~$ apt-rdepends -r ffmpeg |
我希望这个快速的教程可以帮助你提高一点儿你的命令行知识。为了知晓更多类似小知识点,请保持关注。
via: https://itsfoss.com/check-dependencies-package-ubuntu/
作者:Abhishek Prakash 选题:lujun9972 译者:FSSlc 校对:wxy