『學了就忘』Linux軟體包管理 — 40、Linux系統軟體包介紹

繁華似錦Fighting發表於2021-11-15

1、Linux系統軟體包分類

Linux系統下的軟體包只有原始碼包二進位制包,就這兩種包。

Tips:

  • Windows系統中的軟體和Linux系統的軟體是不通用的。
  • Windows系統中的軟體是經過編譯後的.exe檔案和.msi

2、原始碼包說明

(1)什麼是原始碼包

以前我們一直在說,Linux系統飛速發展的一個根本原因就是開源。所謂的原始碼包,就是直接給你一個開放的源程式。也就是說作者寫的時候是什麼樣,寫完就直接給你,這就是原始碼包。

Linux系統中最早的程式都是這樣的原始碼包。

(2)原始碼包的優點

  • 開源,如果有足夠的能力,可以修改原始碼(有利於學習,有利於推廣)。
  • 可以自由選擇所需的功能。
  • 軟體是編譯安裝(編譯:把abcd翻譯成0101的過程),所以更加適合自己的系統,更加穩定也效率更高(之前有一個大概的估算,如果使用原始碼包安裝軟體,要比使用同版本同樣效能的二進位制包,軟體的效能要高5個百分點)。
  • 解除安裝方便(直接把安裝目錄刪除就可以了,基本上沒有殘餘檔案)。

(3)原始碼包的缺點

  • 安裝過程步驟較多,尤其安裝較大的軟體集合時(如LAMP環境搭建),容易出現拼寫錯誤。
  • 編譯過程時間較長,安裝比二進位制安裝時間長。
  • 因為是編譯安裝,編譯安裝過程容易報錯,一旦報錯新手很難解決。

3、二進位制包說明

類似於Windows系統的.exe檔案。二進位制包安裝較原始碼包安裝更為方便,但是二進位制包就不在是開源的了,因為二進位制包中是已經編譯好的檔案。

二進位制包分類:

  • DPKG包:是由Debian Linux所開發出來的包管理機制。通過DPKG包,Debian Linux就可以進行軟體包管理。主要應用在Debian和Unbuntu中。(也經常叫deb包)
  • RPM包:是由Red Hat公司所開發的包管理系統。功能強大,安裝、升級、查詢和解除安裝都非常簡單和方便。目前很多Linux都在使用這種包管理方式,包括Fedora、CentoS、SuSE等。我們將要學習RPM包管理系統。

提示:

  • DPKG包和RPM包,這兩種包系統是不通用的。這也是兩個系統最大的區別。
  • 但是Red Hat中的安裝過程和Debian中軟體的安裝是一一對應的。如果以後用到Debian系統,查閱一下與之對應的命令即可。

4、RPM包的優缺點

(1)RPM包的優點:

  • 包管理系統操作簡單,只通過幾個命令就可以實現包的安裝、升級、查詢和解除安裝。(編輯過程基本不會報錯了,因為廠商已經提前編譯好了)
  • 安裝速度比原始碼包安裝快的多。

(2)RPM包的缺點:

  • 經過編譯,不再可以看到原始碼。
  • 功能選擇不如原始碼包靈活。
  • 依賴性。有時我們會發現需要安裝軟體包a時需要先安裝軟體bc,而安裝b軟體時需要安裝軟體de。這時需要先安裝de,再安裝bc,最後才能安裝a包。所以通過RPM包安裝軟體,如果軟體有依賴性的話,軟體則是有一定的安裝順序的。如果依賴性非常強的話,會非常的繁瑣。(Linux系統中絕大多數軟體包都會有依賴的軟體包)

(3)注意

注意:這裡多強調一下上邊的依賴性。

依賴性分為:

  • 樹形依賴 a —> b —> c
    a包依賴b包,b包依賴c包。所以需要先安裝c包,在安裝b包,最後在安裝c包。
  • 環形依賴a —> b —> c —> a
    這種環形的依賴關係,按照上邊樹形依賴的解釋,是無法安裝的。但是這種依賴關係解決起來很簡單,就是把abc包同時安裝,就是用一條命令同時安裝三個包就能解決。
  • 模組依賴(函式庫依賴)
    最煩麻煩就是這種模組依賴關係,我們舉一個例子,嘗試安裝以下檔案:
[root@localhost Packages]# rpm -ivh mysql-connector-odbc-5.2.5-7.e17.x86_64.rpm
錯誤:依賴檢測失敗:
libodbc.so.2()(64bit)被mysql-connector-odbc-5.2.5-7.e17.x86_64需要
libodbcinst.so.2()(64bit)被mysql-connector-odbc-5.2.5-7.el7.x86_64需要

# 注意:
libodbc.so.2是一個檔案的名字,並不是一個包名,你要把這個檔案所在的包安裝上,這個檔案就存在了。

發現報錯,需要安裝libodbc.so.2函式庫檔案,這時會發現在光碟中根本找不到這個檔案。那是因為這個函式庫沒有單獨成包,是包含在某一個軟體包中的。而如果要知道該檔案在哪個軟體包中,需要查詢網站http://www.rpmfind.net/(很方便)。

如下圖:

image

點選搜尋之後,會顯示在不同的Linux版本中,安裝哪個包,如下圖:

image

這是個網站的原理,是通過查詢一個RPM包依賴管理的資料庫,來解決這個問題的。

4、RPM包的兩種安裝方法

  • 手動(手工命令安裝):就是通過rpm命令手動進行安裝,自己解決包之間的依賴性。
  • yum線上安裝:yum命令會自動連線到Red Hat的官方伺服器上的包依賴資料庫,不管何種依賴關係,需要的包都會自動的下載到本地,然後在自動進行安裝。

注意:

  • 如果是正版的Red Hat系列的Linux系統,會收費,但是CentOS裡的yum是免費的。
  • 還有要注意一點Linux系統中,二進位制包、RPM包、預設安裝包都指的是二進位制包。yum只是原始碼包和二進位制包的線上安裝方式。

5、總結

軟體既有原始碼包版本,又有RPM包版本,如何選擇?

建議:

  • 原始碼包:如果服務是給大量客戶端提供訪問的,建議使用原始碼包,使用原始碼包安裝效率更高(如搭建LAMP環境)。
  • RPM包:如果程式是給少量使用者訪問,或者本地使用的,建議RPM包,因為RPM管理方便。

相關文章