Linux軟體包管理概述

九派Linux發表於2020-08-14

我們知道計算器如果沒有安裝任何作業系統,它就是一堆沒用的電子器件;安裝了作業系統,但是沒有安裝應用軟體,那也是花瓶一隻。因此我們要學會把這隻“花瓶”變成能夠為我們使用的機器,就必須要學會軟體的安裝。在Windows系統中,安裝軟體很簡單,絕大部分情況執行安裝包,然後幾步”next”就能完成軟體的安裝,但是在Linux系統中,軟體包的安裝和管理遠比Winodws的要複雜得多。

Linux下的軟體包有兩種,分別是原始碼包和二進位制包。

Linux原始碼包

原始碼包到底是什麼呢?原始碼包就是一大堆原始碼程式,是由軟體工程師使用特定的格式和語法所書寫的程式碼,是人寫的計算機語言的指令。我們都知道,計算機只能識別機器語言,也就是二進位制語言,所以原始碼包的安裝,就需要一箇中間角色把程式碼語言”abcdedg”翻譯成二進位制語,這個中間角色我們稱它為“編譯器”。“編譯”指的是從原始碼到直接被計算機(或虛擬機器)執行的目的碼的翻譯過程,編譯器的功能就是把原始碼翻譯為二進位制程式碼,讓計算機識別並執行。

由於原始碼包的安裝需要把原始碼編譯為二進位制程式碼,因此安裝時間較長。比如,我們在windows系統下安裝一個幾十兆的軟體,可能幾分鐘就按照完成了,因為它不需要經過編譯過程所以安裝很快。但是在Linux系統中如果我們以原始碼包的安裝方式安裝一個壓縮包僅有二三十兆的軟體,可能也需要花費十幾分鍾到幾時分鐘不等。而且在安裝過程中,如果遇到了什麼錯誤,對於初學者來說都很難弄解決,安裝難以繼續下去。因此為了解決使用原始碼包安裝方式的這些問題,Linux 軟體包的安裝出現了使用二進位制包的安裝方式。

Linux二進位制包

何為二進位制包?二進位制包也就是原始碼包經過成功編譯之後產生的包。由於二進位制包在釋出之前就已經完成了編譯的工作,因此使用者安裝軟體的速度較快,且安裝過程報錯機率大大減小。二進位制包是 Linux 下的預設安裝軟體包,所以有時我們也把二進位制包稱作預設安裝軟體包。

目前主要有以下 2 大主流的二進位制包管理系統:

  • RPM 包管理系統:功能強大,安裝、升級、査詢和解除安裝非常簡單方便,因此很多 Linux 發行版都預設使用此機制作為軟體安裝的管理方式,例如 Fedora、CentOS、SuSE 等。
  • DPKG 包管理系統:由 Debian Linux 所開發的包管理機制,透過 DPKG 包,Debian Linux 就可以進行軟體包管理,主要應用在 Debian 和 Ubuntu 中。

因為我用的CentOS系統,因此後面講解就是以RPM二進位制包為主。

原始碼包 PK 二進位制包

原始碼包一般包含多個檔案的集合,出於發行的需要,一般會把原始碼包打包壓縮之後釋出,Linux 中最常用的打包壓縮格式為“tar.gz”,因此原始碼包又被稱為Tarball。而且原始碼包需要我們自己去軟體的官方站點下載,原始碼包的結構一般如下:

  • 原始碼相關檔案
  • 配置和檢測程式,如config等
  • 軟體安裝說明和軟體說明,如README

原始碼包優點:

  • 開源,如果有足夠的能力,可以修改原始碼
  • 可以自由選擇所需的功能
  • 軟體是編譯安裝,所以更加適合自己的系統,更加穩定、效率更高
  • 解除安裝方便

原始碼包缺點:

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

在前面已經講過,二進位制包是在軟體釋出的時候已經進行過編譯的軟體包,所以安裝速度比原始碼包快得多。但是因為已經進行通譯,大家也就不能在看到軟體的原始碼了。目前兩大主流的二進位制包系統是 DPKG 包和 RPM 包。

RPM包的優點如下:

  • 包管理系統簡單,只透過幾個命令就可以實現包的安裝、升級、査詢和解除安裝
  • 安裝速度比原始碼包安裝快得多

RPM包的缺點如下:

  • 經過編譯,不能在看到原始碼
  • 功能選擇不如原始碼包靈活
  • 依賴性強。比如在安裝軟體包 a 時需要先安裝 b 和 c,而在安裝 b 時需要先安裝 d 和 e。這就需要先安裝 d 和 e,再安裝 b 和 c,最後才能安裝 a
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章