在本教程中,學習如何使用 RPM 和 YUM 工具管理 Linux 系統上的包。學習:html
本教程將幫助您針對 Linux Professional Institute 的初級管理 (LPIC-1) 考試 101 的主題 102 中的目標 102.5 進行應考準備。該目標的權重爲 3。java
在過去,許多 Linux 程序以源代碼形式發行,用戶可將它連同所需的手冊頁、配置文件等一塊兒構建到須要的程序或程序集中。如今,大部分 Linux 發行商都使用預先構建的程序或稱爲包 的程序集,這些包已準備好安裝在該發行版上。在本教程,您將學習可幫助安裝、更新和刪除包的包管理工具。本教程將重點介紹 Red Hat 開發的 Red Hat Package Manager (RPM),以及最初在杜克大學物理系開發的用來管理 Red Hat Linux 系統的 Yellowdog Updater Modified (YUM)。本系列的另外一篇教程 「學習 Linux 101:Debian 包管理」 介紹了 Debian 系統上使用的包管理工具。node
從用戶角度講,基本的包管理功能是經過命令提供的。隨着 Linux 開發人員努力讓 Linux 變得更容易使用,基本工具已獲得了其餘工具的補充,包括 GUI 工具,它們爲用戶隱藏了基本工具的一些複雜性。在本教程和 Debian 包管理 教程中,咱們將重點介紹基本工具,但也會提到其餘一些工具,以便您能進一步瞭解它們。git
要從本系列教程中得到最大收穫,您應該擁有 Linux 的基本知識和一個正常工做的 Linux 系統,您能夠在這個系統上實踐本教程中涵蓋的命令。有時程序的不一樣版本會獲得不一樣的輸出格式,因此您的結果可能並不老是與這裏給出的清單和圖徹底相同。具體地講,我展現的許多輸出都高度依賴於咱們的系統上已安裝的包。您本身的輸出可能很是不一樣,但您應該可以發現一些重要共性。除非另行說明,本教程中的示例使用的是 Fedora 20 系統。算法
RPM、YUM 和 APT(用於 Debian 系統)有許多類似之處。它們都能安裝和刪除包。有關已安裝包的信息保留在數據庫中。全部工具都擁有基本的命令行功能,而其餘一些工具能夠提供對用戶更友好的接口。全部工具都能從互聯網檢索包。shell
安裝 Linux 系統時,一般會安裝大量包。可針對系統的目標用途而自定義這個包集合,好比用做服務器、桌面或開發人員工做站。有時,可能還須要安裝新包來添加新功能,更新已有的包,甚至刪除再也不須要的或已被新包淘汰的包。咱們看看如何執行這些任務,並解決一些相關的難題,好比找到哪一個包可能包含某個特定命令。數據庫
Red Hat 於 1995 年引入了 RPM。RPM 如今是 Linux Standard Base (LSB) 中用於打包的包管理系統。rpm
命令選項分組爲 3 個小組:
本教程將重點介紹前兩組命令選項。在 RPM 的手冊頁中能夠找到其餘功能的信息。
咱們還應注意到,rpm
是用於 RPM 的主要命令的命令名稱,而 .rpm 是用於 RPM 文件的擴展名。因此 「一個 rpm」 或 「xxx rpm」 一般指一個 RPM 文件,而 rpm
一般指該命令。
YUM 向 RPM 系統添加了自動更新和包管理,包括依賴項管理。除了瞭解系統上已安裝的包以外,YUM 與 Debian Advanced Packaging Tool (APT) 很類似,由於它使用了存儲庫,存儲庫是一種包集合,一般可經過鏈接網絡進行訪問。
假設您但願編譯一個 Fortran 程序,一位同事告訴您使用 gfortran
命令。您能夠嘗試使用 gfortran --help
,也能夠嘗試使用 which gfortran
,或者嘗試使用 type gfortran
。可是,若是系統沒法找到 gfortran
,您可能會看到相似 中所示的輸出。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[ian@attic-f21 ~]$
gfortran --help
bash: gfortran: command not found
[ian@attic-f21 ~]$
gfortran --help
bash: gfortran: command not found...
Install package 'gcc-gfortran' to provide command 'gfortran'? [N/y]
[ian@attic-f21 ~]$
which gfortran
/usr/bin/which: no gfortran in (/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:
/home/ian/.local/bin:/home/ian/bin)
[ian@attic-f21 ~]$
type gfortran
bash: type: gfortran: not found
|
若是您沒有從 中的第二個輸出表單中得到有幫助的建議,能夠與您的同事覈對一下,肯定要安裝哪一個包。不然,能夠推測 gfortran
命令在 gfortran 包中。這一般是一種合理的推測,但並不老是對的,至少在本例中是不正確的。咱們稍後會了解如何找到正確的包。假設您知道它實際上在 gcc-gfortran 包中,並且您已下載或獲取了該包的副本,您能夠嘗試使用 rpm
命令和 -i
(表示安裝)選項來安裝它,如 中所示。
1
2
3
|
[root@attic-f21 ~]#
rpm -i gcc-gfortran-4.9.2-6.fc21.x86_64.rpm
error: Failed dependencies:
libquadmath-devel = 4.9.2-6.fc21 is needed by gcc-gfortran-4.9.2-6.fc21.x86_64
|
rpm
命令知道該包有一個依賴項,但不幸的是,它不會幫助您解析該依賴項。您須要獲取一個或多個依賴包,再次嘗試,看看是否有其餘依賴項 — 一直這樣作,直到已知足全部依賴關係。一個便捷的方法是,您能夠向 rpm
命令提供一個要安裝的包列表,若是全部依賴關係都獲得知足,它會按正確的順序安裝全部這些包。因此您至少不須要按正確的順序手動安裝每一個包。
若是您使用過 Debian 的 APT,如今您可能但願擁有相似 apt-get
的命令,該命令會查找您須要的資源(包括依賴項)並進行安裝。對於基於 RPM 的系統,YUM(或 Yellowdog Updater Modified)提供了這樣的功能。 展現瞭如何使用 yum
命令和 install
選項安裝 gcc-gfortran 和所需的必備依賴項。備註:根據您已在系統上安裝的工具,您的依賴項可能不一樣。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
[root@attic-f21 ~]#
yum install gcc-gfortran
Loaded plugins: langpacks
Resolving Dependencies
--> Running transaction check
---> Package gcc-gfortran.x86_64 0:4.9.2-6.fc21 will be installed
--> Processing Dependency: libquadmath-devel = 4.9.2-6.fc21 for package: gcc-gfortran-4.9.2-6.fc21.x86_64
--> Running transaction check
---> Package libquadmath-devel.x86_64 0:4.9.2-6.fc21 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
gcc-gfortran x86_64 4.9.2-6.fc21 updates 7.7 M
Installing for dependencies:
libquadmath-devel x86_64 4.9.2-6.fc21 updates 37 k
Transaction Summary
================================================================================
Install 1 Package (+1 Dependent package)
Total download size: 7.7 M
Installed size: 18 M
Is this ok [y/d/N]:
y
Downloading packages:
(1/2): libquadmath-devel-4.9.2-6.fc21.x86_64.rpm | 37 kB 00:00
(2/2): gcc-gfortran-4.9.2-6.fc21.x86_64.rpm | 7.7 MB 00:04
--------------------------------------------------------------------------------
Total 1.6 MB/s | 7.7 MB 00:04
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction (shutdown inhibited)
Installing : libquadmath-devel-4.9.2-6.fc21.x86_64 1/2
Installing : gcc-gfortran-4.9.2-6.fc21.x86_64 2/2
Verifying : libquadmath-devel-4.9.2-6.fc21.x86_64 1/2
Verifying : gcc-gfortran-4.9.2-6.fc21.x86_64 2/2
Installed:
gcc-gfortran.x86_64 0:4.9.2-6.fc21
Dependency Installed:
libquadmath-devel.x86_64 0:4.9.2-6.fc21
Complete!
|
中的輸出代表,YUM 在名爲 「updates」 的存儲庫中找到了 gcc-gfortran 和 libquadmath-devel 的 x86_64 版本(稍後會更詳細地進行介紹),並肯定了總下載大小。在回覆 「Y」 贊成該事務後,它會下載這兩個包,而後安裝依賴項,最後安裝 gcc-gfortran。您會在本教程後面進一步瞭解依賴項。
備註:在 中,YUM 找到了 gcc-gfortran 包的最新版本,該剛好具備與咱們嘗試在 中安裝的版本相同的級別 (4.9.2-6)。您一般想安裝包的最新版本,但若是須要更早的版本,或者須要 i686 版而不是 x86_64 版,能夠提供附加的限定條件。請參閱 yum
命令的手冊頁中介紹指定包名稱的部分。
在上一節中,您學習瞭如何安裝 RPM 包。不過這些包來自何處?yum
如何知道從何處下載包?可將 /etc/yum.repos.d/ 目錄做爲起點,它一般包含一些存儲庫 文件。這是存放存儲庫信息的默認位置,但也能夠在 YUM 配置文件(一般爲 /etc/yum.conf)中指定其餘位置。 顯示了與咱們從中將 gcc-gfortran 安裝在 Fedora 21 系統上的位置對應的 fedora-updates.repo。
典型的存儲庫文件分爲 3 個部分,一部分用於正常的包,一部分用於調試包,最後一部分用於源包。一般,會在不一樣位置或鏡像 提供一個發行版的包的多個副本。因此存儲庫文件告訴 yum
在何處查找每部分的最新鏡像列表。請注意,發行版的版本級別和機器架構已被參數化,因此 yum
會從 https://mirrors.fedoraproject.org/metalink?repo=updates-released-f21&arch=x86_64 下載針對個人 x86_64 Fedora 21 系統的列表。
除了存儲庫位置以外,存儲庫文件還會告知某個特定存儲庫是否已啓用,是否應使用 GPG 簽名檢查下載的包。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
[ian@attic-f21 ~]$
cat /etc/yum.repos.d/fedora-updates.repo
[updates]
name=Fedora $releasever - $basearch - Updates
failovermethod=priority
#baseurl=http://download.fedoraproject.org/pub/fedora/linux/updates/$releasever/$basearch/
metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-released-f$releasever&arch=$
basearch
enabled=1
metadata_expire=6h
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
skip_if_unavailable=False
[updates-debuginfo]
name=Fedora $releasever - $basearch - Updates - Debug
failovermethod=priority
#baseurl=http://download.fedoraproject.org/pub/fedora/linux/updates/$releasever/$basearch/debug/
metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-released-debug-f$releasever&
arch=$basearch
enabled=0
gpgcheck=1
metadata_expire=6h
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
skip_if_unavailable=False
[updates-source]
name=Fedora $releasever - Updates Source
failovermethod=priority
#baseurl=http://download.fedoraproject.org/pub/fedora/linux/updates/$releasever/SRPMS/
metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-released-source-f$releasever&
arch=$basearch
enabled=0
gpgcheck=1
metadata_expire=6h
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
skip_if_unavailable=False
|
YUM 和 RPM 使用本地數據庫來肯定安裝了哪些包。存儲在本地數據庫中的包的元數據是從啓用的存儲庫檢索而來的。儘管您不多須要擔心本地數據庫,但可使用命令 yum clean
清除本地存儲的信息的各個部分,使用 yum makecache
在本地數據庫中爲啓用的存儲庫建立信息。舉例而言,若是您更改了存儲庫配置,則能夠這麼作。
若是想要刪除包,可以使用 yum
的 remove
選項或 rpm
的 -e
選項。一個使用 rpm -e
刪除 gcc-gfortran 的測試運行如 所示。若是該包能夠刪除,則沒有輸出。
1
2
|
[root@attic-f21 ~]#
rpm -e --test gcc-gfortran
[
|
不一樣於使用 apt-get
對 Debian 包的模擬刪除,RPM 系統不會維護自動添加的包信息,因此沒法輕鬆地肯定還刪除了哪些依賴項。可是,若是您在單個命令上指定刪除多個包,沒有依賴項的包會在有依賴項的包以前刪除。
使用 rpm
刪除包時,在刪除包以前沒有提示,這與安裝包時不一樣。可是,若是您嘗試刪除其餘某個包須要的包,該操做不會執行,您會得到一條如 所示的錯誤消息。
1
2
3
|
[root@attic-f21 ~]#
rpm -e libquadmath-devel
error: Failed dependencies:
libquadmath-devel = 4.9.2-6.fc21 is needed by (installed) gcc-gfortran-4.9.2-6.fc21.x86_64
|
若是使用 yum remove
,在執行事務測試後將提示您。若是嘗試刪除的包是其餘某些已安裝包的依賴包,YUM 會建議刪除這些包和依賴包,如 所示。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
[root@attic-f21 ~]#
yum remove libquadmath-devel
Loaded plugins: langpacks
Resolving Dependencies
--> Running transaction check
---> Package libquadmath-devel.x86_64 0:4.9.2-6.fc21 will be erased
--> Processing Dependency: libquadmath-devel = 4.9.2-6.fc21 for package: gcc-gfortran-4.9.2-6.fc21.x86_64
--> Running transaction check
---> Package gcc-gfortran.x86_64 0:4.9.2-6.fc21 will be erased
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Removing:
libquadmath-devel x86_64 4.9.2-6.fc21 @updates 18 k
Removing for dependencies:
gcc-gfortran x86_64 4.9.2-6.fc21 @updates 18 M
Transaction Summary
================================================================================
Remove 1 Package (+1 Dependent package)
Installed size: 18 M
Is this ok [y/N]:
n
Exiting on user command
Your transaction was saved, rerun it with:
yum load-transaction /tmp/yum_save_tx.2015-07-27.22-01.amzaZh.yumtx
|
如今您已經知道了如何安裝和刪除 RPM,讓咱們看看如何將 RPM 包升級到更高級別。可使用 yum update
更新整個系統,或者能夠指定一個包或一種通配符規範。 展現瞭如何更新全部名稱以 「pop」 開頭的包。注意,這裏使用了省略符號來阻止 "*" 的 shell 擴展。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
[root@attic-f21 ~]# yum update 'pop*'
Loaded plugins: langpacks
Resolving Dependencies
--> Running transaction check
---> Package poppler.x86_64 0:0.26.2-3.fc21 will be updated
---> Package poppler.x86_64 0:0.26.2-9.fc21 will be an update
---> Package poppler-data.noarch 0:0.4.7-1.fc21 will be updated
---> Package poppler-data.noarch 0:0.4.7-2.fc21 will be an update
---> Package poppler-glib.x86_64 0:0.26.2-3.fc21 will be updated
---> Package poppler-glib.x86_64 0:0.26.2-9.fc21 will be an update
---> Package poppler-utils.x86_64 0:0.26.2-3.fc21 will be updated
---> Package poppler-utils.x86_64 0:0.26.2-9.fc21 will be an update
--> Finished Dependency Resolution
Dependencies Resolved
==========================================================================
Package Arch Version Repository Size
==========================================================================
Updating:
poppler x86_64 0.26.2-9.fc21 updates 798 k
poppler-data noarch 0.4.7-2.fc21 updates 2.2 M
poppler-glib x86_64 0.26.2-9.fc21 updates 141 k
poppler-utils x86_64 0.26.2-9.fc21 updates 171 k
Transaction Summary
==========================================================================
Upgrade 4 Packages
Total download size: 3.2 M
Is this ok [y/d/N]: y
Downloading packages:
Delta RPMs reduced 3.1 M of updates to 315 k (89% saved)
(1/4): poppler-data-0.4.7-1.fc21_0.4.7-2.fc21.noarch. | 70 kB 00:00
(2/4): poppler-0.26.2-3.fc21_0.26.2-9.fc21.x86_64.drp | 208 kB 00:00
(3/4): poppler-glib-0.26.2-3.fc21_0.26.2-9.fc21.x86_6 | 36 kB 00:00
(4/4): poppler-utils-0.26.2-9.fc21.x86_64.rpm | 171 kB 00:00
Finishing delta rebuilds of 3 package(s) (3.1 M)
--------------------------------------------------------------------------
Total 142 kB/s | 486 kB 00:03
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction (shutdown inhibited)
Updating : poppler-data-0.4.7-2.fc21.noarch 1/8
Updating : poppler-0.26.2-9.fc21.x86_64 2/8
Updating : poppler-glib-0.26.2-9.fc21.x86_64 3/8
Updating : poppler-utils-0.26.2-9.fc21.x86_64 4/8
Cleanup : poppler-utils-0.26.2-3.fc21.x86_64 5/8
Cleanup : poppler-glib-0.26.2-3.fc21.x86_64 6/8
Cleanup : poppler-0.26.2-3.fc21.x86_64 7/8
Cleanup : poppler-data-0.4.7-1.fc21.noarch 8/8
Verifying : poppler-data-0.4.7-2.fc21.noarch 1/8
Verifying : poppler-glib-0.26.2-9.fc21.x86_64 2/8
Verifying : poppler-0.26.2-9.fc21.x86_64 3/8
Verifying : poppler-utils-0.26.2-9.fc21.x86_64 4/8
Verifying : poppler-data-0.4.7-1.fc21.noarch 5/8
Verifying : poppler-utils-0.26.2-3.fc21.x86_64 6/8
Verifying : poppler-glib-0.26.2-3.fc21.x86_64 7/8
Verifying : poppler-0.26.2-3.fc21.x86_64 8/8
Updated:
poppler.x86_64 0:0.26.2-9.fc21
poppler-data.noarch 0:0.4.7-2.fc21
poppler-glib.x86_64 0:0.26.2-9.fc21
poppler-utils.x86_64 0:0.26.2-9.fc21
Complete!
|
若是知道 RPM 文件位於何處,或者已下載它們,還可使用 rpm
命令更新它們。更新與安裝相似,但使用的是 -U
或 -F
選項,而不是 -i
選項。這兩個選項之間的區別在於,-U
選項將升級一個現有包或者在該包未安裝時安裝它,而 -F
選項僅升級或刷新 一個已安裝的包。出於這個緣由,一般會使用 -U
選項,尤爲是在命令行包含一組 RPM 時。這樣,將安裝未安裝的包,升級已安裝的包。其餘兩個選項 -v
(詳細)和 -h
(哈希標記)一般用於提供進度指標。 展現瞭如何使用 rpm
命令更新 cairo 包和它的 cairo-gobject 依賴項。咱們已將 cairo rpm 下載到根用戶的主目錄,並且須要從一個更新鏡像獲取 cairo-gobject 包。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@attic-f21 ~]#
ls *.rpm
cairo-1.14.2-1.fc21.x86_64.rpm
[root@attic-f21 ~]#
rpm -Uvh *.rpm \
http://download.fedoraproject.org/pub/fedora/linux/updates/21/\
>
x86_64/c/cairo-gobject-1.14.2-1.fc21.x86_64.rpm
Retrieving http://download.fedoraproject.org/pub/fedora/linux/updates/21/x86_64/c/cairo-g
object-1.14.2-1.fc21.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:cairo-1.14.2-1.fc21 ################################# [ 25%]
2:cairo-gobject-1.14.2-1.fc21 ################################# [ 50%]
Cleaning up / removing...
3:cairo-gobject-1.13.1-0.4.git337ab################################# [ 75%]
4:cairo-1.13.1-0.4.git337ab1f.fc21 ################################# [100%]
|
在咱們的示例中,您能夠看到,使用 rpm
命令安裝 rpm 須要包文件的完整名稱(或 URL),好比 gcc-gfortran-4.9.2-6.fc21.x86_64.rpm。另外一方面,使用 yum
安裝或使用任一命令刪除 rpm 僅須要包名稱,好比 gcc-gfortran。與 APT 同樣,RPM 維護着已安裝包的內部數據庫,容許您使用包名稱來處理已安裝的包。在本節中,咱們使用 rpm
命令的 -q
(表示查詢)選項或關聯的 yum
查詢,查看這個數據庫中提供的一些信息。
咱們將從新安裝 gcc-gfortran 包來提供咱們的示例。
這個基本查詢僅循環查詢某個包是否已安裝,若是已安裝,它的版本是什麼。添加 -i
選項,您會得到該包的信息。請注意,您須要擁有根用戶權限才能安裝、升級或刪除包,但非根用戶能夠對 rpm 數據庫執行查詢。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
[ian@attic-f21 ~]$
yum list gcc-gfortran
Loaded plugins: langpacks
Installed Packages
gcc-gfortran.x86_64 4.9.2-6.fc21 @updates
Available Packages
gcc-gfortran.i686 4.9.2-6.fc21 updates
[ian@attic-f21 ~]$
rpm -q gcc-gfortran
gcc-gfortran-4.9.2-6.fc21.x86_64
[ian@attic-f21 ~]$
yum info gcc-gfortran
Loaded plugins: langpacks
Installed Packages
Name : gcc-gfortran
Arch : x86_64
Version : 4.9.2
Release : 6.fc21
Size : 18 M
Repo : installed
From repo : updates
Summary : Fortran support
URL : http://gcc.gnu.org
License : GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and
: LGPLv2+ and BSD
Description : The gcc-gfortran package provides support for compiling Fortran
: programs with the GNU Compiler Collection.
Available Packages
Name : gcc-gfortran
Arch : i686
Version : 4.9.2
Release : 6.fc21
Size : 7.5 M
Repo : updates/21/x86_64
Summary : Fortran support
URL : http://gcc.gnu.org
License : GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and
: LGPLv2+ and BSD
Description : The gcc-gfortran package provides support for compiling Fortran
: programs with the GNU Compiler Collection.
[ian@attic-f21 ~]$ <
strong
>rpm -qi gcc-gfortran</
strong
>
Name : gcc-gfortran
Version : 4.9.2
Release : 6.fc21
Architecture: x86_64
Install Date: Mon 27 Jul 2015 09:36:14 PM EDT
Group : Development/Languages
Size : 19126083
License : GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
Signature : RSA/SHA256, Fri 13 Feb 2015 09:02:15 PM EST, Key ID 89ad4e8795a43f54
Source RPM : gcc-4.9.2-6.fc21.src.rpm
Build Date : Thu 12 Feb 2015 07:40:58 AM EST
Build Host : buildhw-08.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager : Fedora Project
Vendor : Fedora Project
URL : http://gcc.gnu.org
Summary : Fortran support
Description :
The gcc-gfortran package provides support for compiling Fortran
programs with the GNU Compiler Collection.
|
更詳細的清單能夠顯示一些可能與某個 RPM 包關聯的標籤。您會注意到,rpm
和 yum
以稍微不一樣的格式顯示了稍微不一樣的信息。對於本教程,咱們將堅持使用標準命令選項所提供的基本輸出。若是想使用 rpm --queryformat
選項構建自定義查詢輸出,請參閱手冊頁。若是想知道您的 rpm
版本支持的全部標籤,能夠嘗試運行 rpm
--querytags
。
如 所示,yum
將列出已安裝的和可用的包。咱們已安裝 x86_64(64 位)版本,但還有一個 i686(32 位)版本可用。也可使用它列出有更新可用的包和具備其餘特徵的包,好比過期的包或最近添加到存儲庫的包。甚至可使用 yum
搜索包。在 中,能夠看到 texmacs 包未安裝,但能夠從 fedora 存儲庫得到它。若是搜索 「texmacs」,則會看到 4 個說起它的包。很容易明白爲何找到了 TeXmacs* 包。使用 yum info pydot
查明爲何還提到了 pydot 包。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[ian@attic-f21 ~]$
yum list texmacs
Loaded plugins: langpacks
Available Packages
TeXmacs.x86_64 1.0.7.19-4.fc20 fedora
[ian@attic-f21 ~]$
yum search texmacs
Loaded plugins: langpacks
============================= N/S matched: texmacs =============================
TeXmacs-devel.i686 : Development files for TeXmacs
TeXmacs-devel.x86_64 : Development files for TeXmacs
sympy-texmacs.noarch : TeXmacs integration for sympy
texmacs-fedora-fonts.noarch : Fonts for TeXmacs
TeXmacs.x86_64 : Structured WYSIWYG scientific text editor
Name and summary matches only, use "search all" for everything.
|
對於剩餘查詢示例,咱們主要使用 rpm
,由於它擁有更豐富的選項。許多示例還可使用 yum
完成,並且 yum
擁有的一些功能是基本 rpm
選項所沒有的。請參閱手冊頁瞭解更多信息。
您經常想知道包中的內容或一個特定文件來自哪一個包。要列出 gcc-gfortran 包中的文件,可使用 -ql
選項,如 所示。這個包中有許多文件,因此咱們僅顯示了部分輸出。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
[ian@attic-f21 ~]$
rpm -ql gcc-gfortran
/usr/bin/f95
/usr/bin/gfortran
/usr/lib/gcc
/usr/lib/gcc/x86_64-redhat-linux
/usr/lib/gcc/x86_64-redhat-linux/4.9.2
/usr/lib/gcc/x86_64-redhat-linux/4.9.2/32
/usr/lib/gcc/x86_64-redhat-linux/4.9.2/32/libcaf_single.a
/usr/lib/gcc/x86_64-redhat-linux/4.9.2/32/libgfortran.a
/usr/lib/gcc/x86_64-redhat-linux/4.9.2/32/libgfortran.so
/usr/lib/gcc/x86_64-redhat-linux/4.9.2/32/libgfortranbegin.a
/usr/lib/gcc/x86_64-redhat-linux/4.9.2/finclude
/usr/lib/gcc/x86_64-redhat-linux/4.9.2/finclude/omp_lib.f90
/usr/lib/gcc/x86_64-redhat-linux/4.9.2/finclude/omp_lib.h
/usr/lib/gcc/x86_64-redhat-linux/4.9.2/finclude/omp_lib.mod
/usr/lib/gcc/x86_64-redhat-linux/4.9.2/finclude/omp_lib_kinds.mod
/usr/lib/gcc/x86_64-redhat-linux/4.9.2/libcaf_single.a
/usr/lib/gcc/x86_64-redhat-linux/4.9.2/libgfortran.so
/usr/lib/gcc/x86_64-redhat-linux/4.9.2/libgfortran.spec
/usr/lib/gcc/x86_64-redhat-linux/4.9.2/libgfortranbegin.a
/usr/libexec/gcc
/usr/libexec/gcc/x86_64-redhat-linux
/usr/libexec/gcc/x86_64-redhat-linux/4.9.2
/usr/libexec/gcc/x86_64-redhat-linux/4.9.2/f951
/usr/share/doc/gcc-gfortran
/usr/share/doc/gcc-gfortran/ChangeLog-2002.bz2
/usr/share/doc/gcc-gfortran/ChangeLog-2002.libgfortran.bz2
...
usr/share/doc/gcc-gfortran/ChangeLog.bz2
/usr/share/doc/gcc-gfortran/ChangeLog.libgfortran.bz2
/usr/share/doc/gcc-gfortran/ChangeLog.ptr.bz2
/usr/share/info/gfortran.info.gz
/usr/share/man/man1/gfortran.1.gz
|
能夠經過向查詢添加 -c
選項,將列出的文件限制到配置文件。相似地,-d
選項將顯示結果限制到文檔文件。
上述包命令查詢 RPM 數據庫中已安裝的包。若是您僅下載了一個包並想要一樣的信息,能夠在查詢中使用 -p
選項(表示包文件)並指定(用於安裝該包的)包文件 名來得到此信息。 顯示了咱們以前下載的兩個 vim 包的這些信息。咱們僅以根用戶身份運行它,由於這些文件位於根用戶的主目錄中。能夠添加其餘查詢選項,好比添加 -l
來列出文件或添加 -i
來列出信息。
1
2
3
4
5
6
7
8
9
|
[ian@attic-f21 ~]$
# Query vim packages
[ian@attic-f21 ~]$
rpm -qp *.rpm
vim-common-7.4.475-2.fc21.x86_64
vim-enhanced-7.4.475-2.fc21.x86_64
[ian@attic-f21 ~]$
# Query vim configuration files
[ian@attic-f21 ~]$
rpm -qpc *.rpm
/etc/vimrc
/etc/profile.d/vim.csh
/etc/profile.d/vim.sh
|
-a
選項將您的查詢應用到全部已安裝的包。這可能生成大量輸出,因此一般應該將它與一個或多個過濾條件結合使用,好比使用 sort
對清單排序,使用 more
或 less
分頁顯示它,使用 wc
獲取包或文件數量,或者在不肯定名稱的時候,使用 grep
搜索包。 顯示瞭如下查詢:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
[ian@attic-f21 ~]$ <
strong
>rpm -qa | sort | more</
strong
>
aaajohan-comfortaa-fonts-2.004-4.fc21.noarch
aalib-libs-1.4.0-0.26.rc5.fc21.x86_64
abattis-cantarell-fonts-0.0.16-2.fc21.noarch
abrt-2.3.0-8.fc21.x86_64
abrt-addon-ccpp-2.3.0-8.fc21.x86_64
abrt-addon-kerneloops-2.3.0-8.fc21.x86_64
abrt-addon-pstoreoops-2.3.0-8.fc21.x86_64
abrt-addon-python-2.3.0-8.fc21.x86_64
abrt-addon-python3-2.3.0-8.fc21.x86_64
abrt-addon-vmcore-2.3.0-8.fc21.x86_64
abrt-addon-xorg-2.3.0-8.fc21.x86_64
abrt-cli-2.3.0-8.fc21.x86_64
abrt-dbus-2.3.0-8.fc21.x86_64
abrt-desktop-2.3.0-8.fc21.x86_64
abrt-gui-2.3.0-8.fc21.x86_64
abrt-gui-libs-2.3.0-8.fc21.x86_64
abrt-java-connector-1.1.0-2.fc21.x86_64
abrt-libs-2.3.0-8.fc21.x86_64
abrt-plugin-bodhi-2.3.0-8.fc21.x86_64
abrt-python-2.3.0-8.fc21.x86_64
abrt-python3-2.3.0-8.fc21.x86_64
abrt-retrace-client-2.3.0-8.fc21.x86_64
abrt-tui-2.3.0-8.fc21.x86_64
--More--
[[ian@attic-f21 ~]$
rpm -qa | wc -l
1540
[ian@attic-f21 ~]$
rpm -qal | wc -l
179111
[ian@attic-f21 ~]$
rpm -qad | wc -l
47711
[ian@attic-f21 ~]$
rpm -qa | grep -i fortran
gcc-gfortran-4.9.2-6.fc21.x86_64
libgfortran-4.9.2-6.fc21.x86_64
|
使用 rpm -qa
可簡化多個系統的管理。若是您將有序輸出重定向到一個機器上的一個文件,而後在另外一個機器上執行相同操做,可使用 diff
程序查找區別。
因爲您能夠列出全部包和一個包中的全部文件,您如今擁有查找哪一個包擁有一個文件所需的全部信息。可是,rpm
命令提供了 -f
(或 --file
)選項來幫助定位擁有一個已安裝文件的包。假設您想知道咱們以前看到的哪一個 vim 包實際提供了 vim
命令。您須要提供該文件的完整路徑。 展現瞭如何使用 which
命令獲取 vim
命令的完整路徑,以及使用此輸出做爲 rpm -qf
命令的輸入的方便提示。請注意,`which vim
` 中的刻度標記是反向刻度標記。在 Bash shell 中,使用此命令的另外一種方式是使用 $(which vim)
。
1
2
3
4
5
6
|
[ian@attic-f21 ~]$
which vim
/usr/bin/vim
[ian@attic-f21 ~]$
rpm -qf `which vim`
vim-enhanced-7.4.475-2.fc21.x86_64
[ian@attic-f21 ~]$
rpm -qf $(which vim)
vim-enhanced-7.4.475-2.fc21.x86_64
|
您以前已經瞭解到,因爲存在依賴項,咱們擦除 libquadmath-devel 的嘗試失敗了。除了文件以外,RPM 包還能夠包含其餘包可能依賴的任意功能。
正如您看到的,這一般沒有問題。若是須要一次安裝多個包,其中一些包可能會依賴其餘包,可使用 yum
,或者向 rpm -Uvh
命令提供整個包列表,它將分析依賴項並按正確的順序執行安裝。
除了嘗試安裝和擦除包並得到錯誤消息以外,還能夠經過一些方式肯定某個包須要或依賴哪些文件或功能。
rpm
命令提供了詢問已安裝的包或包文件來肯定它們依賴或須要 哪些功能的選項。這是 --requires
選項,能夠將它縮寫爲 -R
。 顯示了 gcc-gfortran 須要的功能。若是想要查詢包文件而不是 RPM 數據庫,能夠添加 -p
選項並使用完整的 RPM 文件名。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
[ian@attic-f21 ~]$
rpm -qR gcc-gfortran
/bin/sh
/bin/sh
/sbin/install-info
/sbin/install-info
gcc = 4.9.2-6.fc21
ld-linux-x86-64.so.2()(64bit)
ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)
libc.so.6()(64bit)
libc.so.6(GLIBC_2.11)(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libdl.so.2()(64bit)
libdl.so.2(GLIBC_2.2.5)(64bit)
libgfortran = 4.9.2-6.fc21
libgfortran.so.3()(64bit)
libgmp.so.10()(64bit)
libm.so.6()(64bit)
libmpc.so.3()(64bit)
libmpfr.so.4()(64bit)
libquadmath = 4.9.2-6.fc21
libquadmath-devel = 4.9.2-6.fc21
libz.so.1()(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1
rtld(GNU_HASH)
|
將功能與提供它們的包匹配可能有點困難。yum
命令和 deplist
選項可在這裏派上用場。若是您提供了一個未限定版本的包名稱,可能會得到一個包含其餘已知版本的清單。 展現瞭如何獲取已安裝的 gcc-gfortran 版本的依賴項列表。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|