如何在基于 Ubuntu 或 Debian 的 Linux 發(fā)行版中查看一個(gè)軟件包的依賴(lài)
在 Ubuntu 或 Debian 中通過(guò)命令行來(lái)安裝應(yīng)用是一件很簡(jiǎn)單的事,你只需要執(zhí)行 apt install package_name
就可以了。
但如果你想在安裝一個(gè)軟件包之前或之后知曉這個(gè)軟件包的依賴(lài),那該怎么辦呢?
在本教程中,我將向你展示多種方法來(lái)在 Ubuntu 或其他使用 APT 包管理器 的 Debian 系 Linux 發(fā)行版中查看一個(gè)軟件包的依賴(lài)。
什么是 Ubuntu 中的包依賴(lài)?
當(dāng)你在 Linux 中安裝一個(gè)軟件包,有時(shí)這個(gè)軟件包還需要其他的軟件包來(lái)使它工作正常。這些額外的軟件包就叫作這個(gè)包的依賴(lài)。假如這些軟件包之前沒(méi)有在系統(tǒng)中被安裝,那么這些依賴(lài)在安裝這個(gè)軟件包的同時(shí)會(huì)被自動(dòng)安裝上。
舉個(gè)例子,用來(lái)轉(zhuǎn)換視頻格式的 GUI 工具 HandBrake 需要 FFmpeg、GStreamer 軟件包。所以對(duì)于 HandBrake 來(lái)說(shuō), FFmpeg 和 GStreamer 就是它的包依賴(lài)。
假如在你的系統(tǒng)上這些軟件包沒(méi)有被安裝,則當(dāng)你 在 Ubuntu 上安裝 HandBrake 時(shí),就會(huì)自動(dòng)安裝上它們。
在 Ubuntu 和基于 Debian 的發(fā)行版中查看一個(gè)軟件包的依賴(lài)
正如在 Linux 上經(jīng)常發(fā)生的那樣,有多種方法來(lái)達(dá)到相同的目標(biāo)。下面讓我們一起瞧瞧查看一個(gè)軟件包依賴(lài)的多種方法。
使用 apt show 來(lái)查看依賴(lài)
你可以使用 apt show 命令 來(lái)展示一個(gè)包的詳細(xì)信息。其中依賴(lài)信息就是其中一部分,你可以在以 “Depends” 打頭的那些行中看到它們。
例如,下面展示的是使用 apt show
展示 ubuntu-restricted-extras 這個(gè)包的詳細(xì)信息:
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
如你所見(jiàn),ubuntu-restricted-extras
包依賴(lài)于 ubuntu-restricted-addons
這個(gè)軟件包。
但你得小心的是依賴(lài)包還可能依賴(lài)于其他包,這樣一直循環(huán)往復(fù)直到盡頭。但幸好 APT 包管理器可以為你處理這些復(fù)雜的依賴(lài)關(guān)系,自動(dòng)地安裝所有的依賴(lài)(大多數(shù)情況下)。
什么是推薦包?
你注意到了上面結(jié)果輸出中以 “Recommends” 開(kāi)頭的那些行了嗎?
推薦包不是軟件包的直接依賴(lài),但它們可以開(kāi)啟軟件包的一些額外功能。
正如你上面看到的那樣,
ubuntu-restricted-extras
包有ttf-mscorefonts-installer
這個(gè)推薦包,用來(lái)在 Ubuntu 上安裝 Microsoft 的字體。這些推薦包也會(huì)默認(rèn)被一同安裝上,假如你想顯式地禁止這些推薦包的安裝,你可以像下面這樣使用
–-no-install-recommends
選項(xiàng)。
sudo apt install --no-install-recommends package_name
使用 apt-cache 來(lái)直接獲取依賴(lài)信息
上面通過(guò) apt show
的方式會(huì)獲取到大量信息,假如你想在腳本中獲取到依賴(lài)信息,那么 apt-cache
命令將會(huì)給你一個(gè)更好且更簡(jiǎn)潔的輸出結(jié)果。
apt-cache depends package_name
下面的輸出看起來(lái)更加干凈,不是嗎?
使用 dpkg 來(lái)查看一個(gè) DEB 文件的依賴(lài)
apt
和 apt-cache
都作用于軟件倉(cāng)庫(kù)中的軟件包,但假如你下載了一個(gè) DEB 文件,那么這兩個(gè)命令就不起作用了。
在這種情形下,你可以使用 dpkg
命令的 -I
或 --info
選項(xiàng)。
dpkg -I path_to_deb_file
依賴(lài)信息就可以在以 “Depends” 開(kāi)頭的那些行中找到。
使用 apt-rdepends 來(lái)查看依賴(lài)及依賴(lài)的依賴(lài)
假如你想查看更多關(guān)于依賴(lài)的信息,那么你可以使用 apt-rdepends
工具。這個(gè)工具可以創(chuàng)建完整的依賴(lài)樹(shù)。這樣你就可以得到一個(gè)軟件包的依賴(lài)以及這些依賴(lài)的依賴(lài)。
它不是一個(gè)常規(guī)的 apt
命令,所以你需要從 universe 軟件倉(cāng)庫(kù)中安裝上它:
sudo apt install apt-rdepends
這個(gè)命令的輸出通常很多,取決于依賴(lài)樹(shù)的大小。
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
工具的功能非常多樣,它還可以用來(lái)計(jì)算反向依賴(lài)。這意味著你可以查看某個(gè)特定的包被哪些軟件包依賴(lài)。
apt-rdepends -r package_name
輸出可能會(huì)非常多,因?yàn)樗鼘⒋蛴〕龇聪蛞蕾?lài)樹(shù)。
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)
我希望這個(gè)快速的教程可以幫助你提高一點(diǎn)兒你的命令行知識(shí)。為了知曉更多類(lèi)似小知識(shí)點(diǎn),請(qǐng)保持關(guān)注。