Linux RPM包依賴性(含解決方案)

2020-07-16 10:04:47
RPM 軟體包(包含 SRPM 包)的依賴性主要體現在 RPM 包安裝與解除安裝的過程中。

例如,如果採用最基礎的方式(基礎伺服器方式)安裝 Linux 系統,則 gcc 這個軟體是沒有安裝的,需要自己手工安裝。當你使用 rpm 命令安裝 gcc 軟體的 RPM 包,就會發生依賴性錯誤,錯誤提示資訊如下所示:

[[email protected] ~]# rpm -ivh /mnt/cdrom/Packages/ gcc-4.4.6-4.el6.i686.rpm
error: Failed dependencies: <―依賴性錯誤
cloog-ppi >= 0.15 is needed by gcc-4.4.6-4.el6.i686
cpp = 4.4.6-4.el6 is needed by gcc-4.4.6-4.el6.i686
glibc-devel >= 2.2.90-12 is needed by gcc-4.4.6-4.el6.i686

報錯資訊提示我們,如果要安裝 gcc,需要先安裝 cloog-ppl、cpp 和 glibc-devel 三個軟體,這體現的就是 RPM 包的依賴性。

除此之外,報錯資訊中還會明確給出各個依賴軟體的版本要求:
  • ">=":表示版本要大於或等於所顯示版本;
  • "<=":表示版本要小於或等於所顯示版本;
  • "=":表示版本要等於所顯示版本;

Linux 系統中,RPM 包之間的依賴關係大致可分為以下 3 種:
  1. 樹形依賴(A-B-C-D):要想安裝軟體 A,必須先安裝 B,而安裝 B 需要先安裝 C…….解決此型別依賴的方法是從後往前安裝,即先安裝 D,再安裝 C,然後安裝 B,最後安裝軟體 A。
  2. 環形依賴(A-B-C-D-A):各個軟體安裝的依賴關係構成“環狀”。解決此型別依賴的方法是用一條命令同時安裝所有軟體包,即使用 rpm -ivh 軟體包A 軟體包B ...
  3. 模型依賴:軟體包的安裝需要借助其他軟體包的某些檔案(比如庫檔案),解決模組依賴最直接的方式是通過 http://www.rpmfind.net 網站找到包含此檔案的軟體包,安裝即可。

以上 3 種 RPM 包的依賴關係,給出的解決方案都是手動安裝,比較麻煩。在後續的章節中,我們將系統學習使用 yum 命令查詢、安裝、升級和解除安裝軟體包的方法。

yum,全稱"Yellow dog Updater,Modified",CentOS 系統上的軟體包管理器,它能夠自動下載 RPM 包並安裝,更重要的是,它可以自動處理軟體包之間的依賴性關係,一次性安裝所有依賴的軟體包,無需一個個安裝。