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
時需要先安裝軟體b
和c
,而安裝b
軟體時需要安裝軟體d
和e
。這時需要先安裝d
和e
,再安裝b
和c
,最後才能安裝a
包。所以通過RPM包安裝軟體,如果軟體有依賴性的話,軟體則是有一定的安裝順序的。如果依賴性非常強的話,會非常的繁瑣。(Linux系統中絕大多數軟體包都會有依賴的軟體包)
(3)注意
注意:這裡多強調一下上邊的依賴性。
依賴性分為:
- 樹形依賴
a
—>b
—>c
a
包依賴b
包,b
包依賴c
包。所以需要先安裝c
包,在安裝b
包,最後在安裝c
包。 - 環形依賴
a
—>b
—>c
—>a
這種環形的依賴關係,按照上邊樹形依賴的解釋,是無法安裝的。但是這種依賴關係解決起來很簡單,就是把a
、b
、c
包同時安裝,就是用一條命令同時安裝三個包就能解決。 - 模組依賴(函式庫依賴)
最煩麻煩就是這種模組依賴關係,我們舉一個例子,嘗試安裝以下檔案:
[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/(很方便)。
如下圖:
點選搜尋之後,會顯示在不同的Linux版本中,安裝哪個包,如下圖:
這是個網站的原理,是通過查詢一個RPM包依賴管理的資料庫,來解決這個問題的。
4、RPM包的兩種安裝方法
- 手動(手工命令安裝):就是通過
rpm
命令手動進行安裝,自己解決包之間的依賴性。 yum
線上安裝:yum
命令會自動連線到Red Hat
的官方伺服器上的包依賴資料庫,不管何種依賴關係,需要的包都會自動的下載到本地,然後在自動進行安裝。
注意:
- 如果是正版的
Red Hat
系列的Linux系統,會收費,但是CentOS
裡的yum
是免費的。- 還有要注意一點Linux系統中,二進位制包、RPM包、預設安裝包都指的是二進位制包。
yum
只是原始碼包和二進位制包的線上安裝方式。
5、總結
軟體既有原始碼包版本,又有RPM包版本,如何選擇?
建議:
- 原始碼包:如果服務是給大量客戶端提供訪問的,建議使用原始碼包,使用原始碼包安裝效率更高(如搭建LAMP環境)。
- RPM包:如果程式是給少量使用者訪問,或者本地使用的,建議RPM包,因為RPM管理方便。