日期:2014-05-16  浏览次数:20731 次

Linux 的套件管理系統


Linux 的套件管理系統 (Linux Package Management System)
一、套件管理系統簡介

1.什麼是套件管理系統
套件管理系統是用來管理電腦上的軟體,如安裝、升級、移除及設定軟體的工具程式組合

2.為什麼需要套件管理系統
土法鍊鋼安裝程式的方法:
* 取得及下載原始程式碼 (source code)
* 將原始程式碼解開
* 編譯程式
* 安裝

舉例來說:

$ wget http://demo.site/demo.tar.gz
$ tar zxvf demo.tar.gz
$ cd demo
$ ./configure
$ make
$ make install

缺點:
* 編譯程式花費時間且並不是每個人都懂得如何去編譯程式
* 即使是下載原始碼回來自行編譯,一樣是有套件相依性的問題需要解決
(如我要自行編譯安裝 gimp 套件,必須先安裝 gtk 套件,而安裝 gtk 套件之前,可能又得先安裝 xorg-x11 等相關套件)
* 自行安裝的套件,如何得知其版本及倒底安裝了哪些檔案?這些安裝的檔案又是安裝在哪個目錄底下?日後又該如何進行升級或移除的動作?

因此,除非有需要必須自行修補程式碼並重新編譯程式,否則,可以盡量利用現成的套件管理系統來安裝別人已經預先編譯好的 Binary 程式,既省時、省事又方便

同時,透過套件管理系統,它除了可以幫我們處理套件相依性的問題外,套件管理系統本身也有資料庫系統,可以記載每個套件的名稱、描述、版本資訊、提供的廠商等相關的資訊,方便使用者日後的查詢及維護

3.套件管理系統的功能
* 可以驗證檔案的正確性 (Verification of file checksums)
* 可以檢查套件的數位簽章 (Checking fo digital signatuures)
* 提供簡單及方便的套件安裝、升級及移除等功能
* 套件相依性問題的處理 (Dependency)
* 套件更新檢查,方便將系統保持在最新、最安全的狀態,包含錯誤修正及安全更新等等 (bug fixes and security updates)
* 套件的群組分類,方便使用者查詢、安裝及維護套件
二、Linux 的套件格式 (Package Format)

1.Binary packages
已經預先編譯好的可執行檔

常見的套件延伸檔名:
* rpm
* deb
* tgz/tbz/tar.gz/tar.bz2

slackware tgz - gzipped tarball
rpm - cpio
deb - ar

2.Source packages
套件的原始程式碼及相關的修補檔

3.Recipe packages
使用一個檔案(如 ebuild or recipe),而在這個檔案裡面包含了該如何去下載、解壓縮、編譯及安裝套件的相關資訊,如 Gentoo Linux 的 Portage 及 Gobo Linux 的 Recipe 等 (FreeBSD 的 port 及 Mac OS X 的 DarwinPorts 也是)

4.Binary 套件格式之間的轉換
* 可以透過 alien 程式來進行轉換
三、套件管理員 (Package Manager)

1.rpm based (Red Hat Package Manager/RPM Package Manager)
* 底層指令 – rpm
* 套件管理系統 – apt4rpm up2date yum urpmi yast pirut synaptic yumex aptitude smart 等等

2.deb based
* 底層指令 – dpkg
* 套件管理系統 – apt dselect tasksel aptitude synaptic adept smart 等等

3.pkgtool for Slackware
* 底層指令 – installpkg removepkg upgradepkg
* 3rd-party 的套件管理系統 – swaret slapt-get slackupdate emerde slackpkg stratdate 等等

4.pacman for Arch Linux
* 底層指令 – pacman
* 套件管理系統 – jacman gtkpacman 等等

5.portage for Gentoo Linux
* emerge ebuild

6.recipe for Gobo Linux
* Compile – PrepareProgram SymlinkProgram CompileProgram

7.Smart Package Manager
* The Smart Package Manager project has the ambitious objective of creating smart and portable algorithms for solving adequately the problem of managing software upgrading and installation.
* 支援 APT APT-RPM YUM URPMI YAST 等各種 Repositories 的格式