如何在基于Ubuntu / Debian的Linux发行版中检查软件包的依赖关系

时间:2020-01-09 10:44:42  来源:igfitidea点击:

在Ubuntu / Debian中,通过命令行安装应用程序非常容易。我们需要做的就是使用apt install package_name。

但是,如何知道软件包的依赖性?

Ubuntu中的软件包依赖关系是什么?

如果我们还不了解,有时在Linux中安装软件包时,它需要其他软件包才能正常运行。这些额外的程序包称为依赖项。如果系统上未安装这些依赖软件包,则通常会与该软件包一起自动安装。

例如,用于转换视频格式的GUI工具HandBrake需要FFmpeg,GStreamer。因此对于HandBrake,FFmpeg和GStreamer是依赖项。

如果系统上未安装这些软件包,则在Ubuntu上安装HandBrake时将自动安装它们。

检查基于Ubuntu和Debian发行版中软件包的依赖关系

正如在Linux中经常发生的那样,有多种方法可以达到相同的结果。让我们看看查看包依赖的各种方法。

使用apt show检查依赖项

我们可以使用apt show命令显示软件包的详细信息。此信息的一部分是依赖关系,我们可以在Depends开头的行中看到它。

例如,这是ubuntu-restricted-extras软件包的显示内容。

theitroad@localhost:~$ apt show ubuntu-restricted-extras 
Package: ubuntu-restricted-extras
Version: 67
Priority: optional
Section: multiverse/metapackages
Origin: Ubuntu
Maintainer: Ubuntu Developers <theitroad@localhost>
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:&#47;&#47;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软件包管理器通过自动安装所有依赖项(大部分时间)来为我们处理此问题。

使用apt-cache仅获取依赖项信息

apt显示太多信息。如果要在脚本中获取依赖项,则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

输出可能会很大,因为它将打印反向依赖关系树。

theitroad@localhost:~$ 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)