在 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 这个包的详细信息:

abhishek@itsfoss:~$ apt show ubuntu-restricted-extras

Package: ubuntu-restricted-extras

Version: 67

Priority: optional

Section: multiverse/metapackages

Origin: Ubuntu

Maintainer: Ubuntu Developers

Bugs: https://bugs.launchpad.net/ubuntu/+filebug

Installed-Size: 14.3 kB

Depends: ubuntu-restricted-addons

Recommends: libavcodec-extra, ttf-mscorefonts-installer, unrar

Download-Size: 3,200 B

APT-Manual-Installed: yes

APT-Sources: http://us.archive.ubuntu.com/ubuntu focal/multiverse amd64 Packages

Description: Commonly used media codecs and fonts for Ubuntu

This collection of packages includes:

- MP3 and other audio codec software to play various audio formats

(GStreamer plugins)

- software to install the Microsoft Web fonts

- the Adobe Flash plugin

- LAME, software to create compressed audio files.

.

This software does not include libdvdcss2, and will not let you play

encrypted DVDs. For more information, see

https://help.ubuntu.com/community/RestrictedFormats/PlayingDVDs

.

These software packages are from the Multiverse channel, restricted by

copyright or legal issues in some countries. For more information, see

http://www.ubuntu.com/ubuntu/licensing

如你所见,ubuntu-restricted-extras 包依赖于 ubuntu-restricted-addons 这个软件包。

但你得小心的是依赖包还可能依赖于其他包,这样一直循环往复直到尽头。但幸好 APT 包管理器可以为你处理这些复杂的依赖关系,自动地安装所有的依赖(大多数情况下)。

什么是推荐包?

你注意到了上面结果输出中以 “Recommends” 开头的那些行了吗?

推荐包不是软件包的直接依赖,但它们可以开启软件包的一些额外功能。

正如你上面看到的那样, ubuntu-restricted-extras 包有 ttf-mscorefonts-installer 这个推荐包,用来在 Ubuntu 上安装 Microsoft 的字体。

这些推荐包也会默认被一同安装上,假如你想显式地禁止这些推荐包的安装,你可以像下面这样使用 –-no-install-recommends 选项。

sudo apt install --no-install-recommends package_name

使用 apt-cache 来直接获取依赖信息

上面通过 apt show 的方式会获取到大量信息,假如你想在脚本中获取到依赖信息,那么 apt-cache 命令将会给你一个更好且更简洁的输出结果。

apt-cache depends package_name

下面的输出看起来更加干净,不是吗?

使用 dpkg 来查看一个 DEB 文件的依赖

apt 和 apt-cache 都作用于软件仓库中的软件包,但假如你下载了一个 DEB 文件,那么这两个命令就不起作用了。

在这种情形下,你可以使用 dpkg 命令的 -I 或 --info 选项。

dpkg -I path_to_deb_file

依赖信息就可以在以 “Depends” 开头的那些行中找到。

使用 apt-rdepends 来查看依赖及依赖的依赖

假如你想查看更多关于依赖的信息,那么你可以使用 apt-rdepends 工具。这个工具可以创建完整的依赖树。这样你就可以得到一个软件包的依赖以及这些依赖的依赖。

它不是一个常规的 apt 命令,所以你需要从 universe 软件仓库中安装上它:

sudo apt install apt-rdepends

这个命令的输出通常很多,取决于依赖树的大小。

Reading package lists... Done

Building dependency tree

Reading state information... Done

shutter

Depends: procps

Depends: xdg-utils

imagemagick

Depends: imagemagick-6.q16 (>= 8:6.9.2.10+dfsg-2~)

imagemagick-6.q16

Depends: hicolor-icon-theme

Depends: libc6 (>= 2.4)

Depends: libmagickcore-6.q16-6 (>= 8:6.9.10.2)

Depends: libmagickwand-6.q16-6 (>= 8:6.9.10.2)

hicolor-icon-theme

libc6

Depends: libcrypt1 (>= 1:4.4.10-10ubuntu4)

Depends: libgcc-s1

libcrypt1

Depends: libc6 (>= 2.25)

apt-rdepends 工具的功能非常多样,它还可以用来计算反向依赖。这意味着你可以查看某个特定的包被哪些软件包依赖。

apt-rdepends -r package_name

输出可能会非常多,因为它将打印出反向依赖树。

abhishek@itsfoss:~$ apt-rdepends -r ffmpeg

Reading package lists... Done

Building dependency tree

Reading state information... Done

ffmpeg

Reverse Depends: ardour-video-timeline (>= 1:5.12.0-3ubuntu4)

Reverse Depends: deepin-screen-recorder (5.0.0-1build2)

Reverse Depends: devede (4.15.0-2)

Reverse Depends: dvd-slideshow (0.8.6.1-1)

Reverse Depends: green-recorder (>= 3.2.3)

我希望这个快速的教程可以帮助你提高一点儿你的命令行知识。为了知晓更多类似小知识点,请保持关注。

本文由 LCTT 原创编译,Linux中国 荣誉推出

debian php-fpn_如何在基于 Ubuntu 或 Debian 的 Linux 发行版中查看一个软件包的依赖...相关推荐

  1. 查看依赖树_如何在基于 Ubuntu 或 Debian 的 Linux 发行版中查看一个软件包的依赖...

    但如果你想在安装一个软件包之前或之后知晓这个软件包的依赖,那该怎么办呢? 来源:https://linux.cn/article-12987-1.html 作者:Abhishek Prakash 译者 ...

  2. linux 重启命令_如何在 Ubuntu 和其他 Linux 发行版中启动、停止和重启服务 | Linux 中国...

    服务是必不可少的后台进程,它通常随系统启动,并在关机时关闭.-- Sergiu 服务是必不可少的后台进程,它通常随系统启动,并在关机时关闭.如果你是系统管理员,那么你会定期处理服务.如果你是普通桌面用 ...

  3. 如何在 Ubuntu 和其他 Linux 发行版中启动、停止和重启服务

    服务是必不可少的后台进程,它通常随系统启动,并在关机时关闭.如果你是系统管理员,那么你会定期处理服务.如果你是普通桌面用户,你可能会遇到需要重启服务的情况,例如安装 Barrier 来用于在计算机之间 ...

  4. linux如何创建ppt文件,如何在 Ubuntu 和其他 Linux 发行版中创建照片幻灯片

    创建照片幻灯片只需点击几下.以下是如何在 Ubuntu 18.04 和其他 Linux 发行版中制作照片幻灯片. 想象一下,你的朋友和亲戚正在拜访你,并请你展示最近的活动/旅行照片. 你将照片保存在计 ...

  5. linux如何创建ppt文件,桌面应用|如何在 Ubuntu 和其他 Linux 发行版中创建照片幻灯片...

    创建照片幻灯片只需点击几下.以下是如何在 Ubuntu 18.04 和其他 Linux 发行版中制作照片幻灯片. 想象一下,你的朋友和亲戚正在拜访你,并请你展示最近的活动/旅行照片. 你将照片保存在计 ...

  6. 红旗Linux的特点和应用范围,以红旗Linux和Ubuntu为例评点Linux发行版的优点

    以红旗Linux和Ubuntu为例,从六个方面简单评点下Linux发行版的优点. 第一 安装是否方便 包括系统安装和软件安装现在Linux基本上系统安装都能在图形界面下进行了. 软件安装要看软件包的管 ...

  7. Linux发行版:CentOS、Ubuntu、RedHat、Android、Tizen、MeeGo

    Linux,最早由Linus Benedict Torvalds在1991年开始编写.在这之前,Richard Stallman创建了Free Software Foundation(FSF)组织以及 ...

  8. Linux发行版 CentOS Ubuntu RedHat Android Tizen MeeGo

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Linu ...

  9. 【转帖】Linux发行版:CentOS、Ubuntu、RedHat、Android、Tizen、MeeGo

    Linux发行版:CentOS.Ubuntu.RedHat.Android.Tizen.MeeGo作者: 阳光岛主 原文在 这儿 Linux,最早由Linus BenedictTorvalds在199 ...

最新文章

  1. UNL(Ubiquitous Navigation Lab)
  2. 工作经验到底是个什么东东?工作经验从哪里来?
  3. [当人工智能遇上安全] 6.基于机器学习的入侵检测和攻击识别——以KDD CUP99数据集为例
  4. 演练 制作爱奇异视频播放列表 0929
  5. SYN攻击原理以及检测防范技术
  6. 老码农的Java干货资源
  7. 从未来所思考到的事情
  8. HDU 5970 CCPC2016合肥 求等差数列整除整数下取整求和
  9. Ubuntu Quickbuild 安装配置
  10. ubuntu如何更改IP地址
  11. VSCode项目启动与调试配置
  12. 一文读懂NFT(非同质化通证)
  13. 2022备赛蓝桥杯给大家的建议与提醒和资料,值得认真看一下,多拿几十分
  14. 使用Spring实现AOP的三种方式
  15. 一起零基础学Python
  16. windows下sass开发环境的搭建
  17. 给笔记本添加第二块显示屏
  18. 基础实验7-2.1 魔法优惠券 (贪心)
  19. 推出全新的交互式导航和社交导航 iGibson 挑战
  20. 【Matlab绘图进阶第5弹】Matlab绘制三维散点图

热门文章

  1. Flutter 的生命周期,略知一二
  2. C#WPF 项目开发(一)(火车订票系统)
  3. 中兴XGSPON进telnet方法
  4. enum 1.0 java 枚举类
  5. python核密度图_用Python绘制二维核密度估计
  6. Arcgis制图之填充图框制作
  7. 制作出与众不同的报表
  8. SQL注入-联合查询注入
  9. 珊瑚海 - 一站式跨端动态化布局框架原理
  10. 使用private修饰内部类