如何在基於 Ubuntu 或 Debian 的 Linux 發行版中查看一個軟體包的依賴
在 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 <ubuntu-devel-discuss@lists.ubuntu.com>
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)
我希望這個快速的教程可以幫助你提高一點兒你的命令行知識。為了知曉更多類似小知識點,請保持關注。
via: https://itsfoss.com/check-dependencies-package-ubuntu/
作者:Abhishek Prakash 選題:lujun9972 譯者:FSSlc 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive