2010/08/13

Ubuntu 套件庫

類似 Ubuntu 的作業系統中(其實就是 Debian 系的 GNU/Linux 作業系統),
軟體程式通常是使用 .deb 套件的方式來封裝,
相對於 Red Hat 系的 GNU/Linux 作業系統就是使用 .rpm 套件。

一個 .deb 套件通常包括了一個程式與其所需要的函式庫,可以透過網路或 CD 得到它們。
而 Repositories(套件庫)則是專門儲存各式套件的伺服器,
可以透過類似 Synaptic 的軟體來存取套件庫。
或桌面左上角 Application(應用程式) -> Ubuntu Software Center(Ubuntu 軟體中心)。

Ubuntu 套件庫以四大類區分(*可參考 reference 03):
Main - Ubuntu 官方支援的套件
Restricted - Ubuntu 官方支援,但並非完全開源的套件
Universe - 非 Ubuntu 官方支援,但是由自由社群維護著的套件
Multiverse - 非開源套件

Ubuntu 套件庫清單儲存在:
/etc/apt/source.list

編輯前建議先使用以下指令備份:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

/etc/apt/source.list 的內容是許多類似下列的東西:
# deb cdrom:[Ubuntu 10.04 LTS _Lucid Lynx_ - Release i386 (20100429)]/ lucid main restricted
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to newer versions of the distribution.
deb http://tw.archive.ubuntu.com/ubuntu/ lucid main restricted
deb-src http://tw.archive.ubuntu.com/ubuntu/ lucid main restricted

# 開頭的是註解。
deb 開頭,表示其包括了預先編譯或已編譯完成的套件執行檔,適合使用者。
deb-src 開頭,表示其包括了套件的未編譯原始碼,適合開發者。
在套件庫位址後空一格緊跟著的是 Ubuntu 的版本代號,例如:lucid、hardy。
在版本代號後空一格緊跟著的是套件庫的四大分類名稱,可以填很多個,使用空格分開。

要刪除某些套件庫位址,可以在其位址最前加上 # 號,或將其整列刪除。

要新增某些套件庫位址,可以新增在 /etc/apt/source.list 檔案最末列之後。
例如將以下內容加入 /etc/apt/source.list 將其存檔關閉:
deb http://ppa.launchpad.net/chromium-daily/ppa/ubuntu lucid main 
deb-src http://ppa.launchpad.net/chromium-daily/ppa/ubuntu lucid main

以上例子是加入 PPA 套件庫,所以還必須讓系統記錄該 PPA 套件庫的公開金鑰,
從該 PPA 套件庫的 Launchpad 網頁取得金鑰後,假設是:
4E5E17B5

則執行:
#
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4E5E17B5

然後執行:
sudo apt-get update && sudo apt-get upgrade

若順利執行完成則代表套件庫新增成功。

Ubuntu 9.10 之後,可以使用 add-apt-repository 工具,新增 PPA 套件庫更為簡單。
若無此工具,可以執行以下指令安裝:
sudo apt-get install python-software-properties

使用 add-apt-repository 新增套件庫時,可以執行以下指令:
sudo add-apt-repository ppa:[repository-name]

其中 [repository-name] 從 Launchpad 頁面取得,通常是一個 Launchpad 帳號。
有時候會加一個 /,後面指定該 Launchpad 帳號下的某個套件庫分支(branch),
例如:
ppa:chromium-daily/stable

任何時候修改完 /etc/apt/source.list,請務必執行 sudo apt-get update 檢查。

Reference:
01. https://help.ubuntu.com/community/Repositories
02. https://help.ubuntu.com/community/Repositories/Ubuntu
03. http://www.ubuntu.com/project/about-ubuntu/components
04. https://help.ubuntu.com/community/Repositories/CommandLine