叢集手冊/軟體
本節的主題是安裝和維護不在Ubuntu預設儲存庫中的軟體。將介紹將軟體安裝、更新和整合到環境中的不同方法。
在 GNU/Linux 系統上安裝軟體通常包括三個步驟。第一步是下載包含應用程式原始碼的存檔。解壓該存檔後,需要編譯程式碼。像Automake[1]這樣的工具可以幫助使用者掃描環境並確保滿足軟體的所有依賴項。理論上,軟體應該在完成三個簡單的步驟後安裝並可以使用。
./configure./make./make install
幾乎每個此類存檔中提供的README檔案都建議這樣做。然而,大多數情況下,此過程都會失敗,使用者必須手動解決問題。如果所有問題都已解決,則應編譯程式碼(./make)並安裝(./make install)(第二步和第三步)。除了Automake,還有其他專案,比如CMake[2]和WAF[3],試圖使這個過程不再那麼麻煩。將軟體安裝並整合到現有環境中,這樣的過程可能需要相當長的時間。如果軟體在某一時刻需要更新,則不能保證更新所需的時間少於初始安裝。
這個問題的根源在於,不同發行版的 GNU/Linux 在安裝後提供的軟體集合通常差別很大。這意味著,如果有 5 個不同的發行版,並且您想確保您的軟體在每個發行版上都能執行,您必須確保您的軟體與以下內容相容。
- 您的軟體依賴的每個庫的 5 個不同版本。
- 5 個不同的初始化系統(負責執行守護程序)。
- 5 個不同的軟體安裝位置約定。
像Automake、CMake 和WAF這樣的工具解決了這個問題,但與此同時,巨大的多樣性也是它們不是 100% 解決方案且經常失敗的原因。
與其試圖提供一個可以在所有 GNU/Linux 發行版上執行的單個存檔,不如為每個發行版重新打包軟體更為常見。Debian的儲存庫包含數千個軟體包,這些軟體包僅為Debian的一個版本打包。這使得安裝和更新變得輕而易舉,但也給建立這些軟體包的人帶來了巨大的工作量。由於Ubuntu基於Debian,因此大多數這些軟體包也適用於Ubuntu。這些軟體包是預先編譯的,會自動安裝到正確的位置,併為使用的初始化系統提供初始化指令碼。它們的安裝由像apt或aptitude這樣的軟體包管理器完成,該管理器還會管理未來的更新。只有兩個小問題。
- 軟體是針對發行版的特定版本打包的。例如,Ubuntu 12.04或Debian Squeeze。安裝後,通常只提供安全更新。
- 當然,並非所有軟體都經過打包,也並非所有軟體都可以在預設儲存庫中找到。
這意味著,如果您使用的是最新的Ubuntu長期支援版本,您使用的軟體大多數都已經超過一年的時間,並且在此期間,只收到了安全更新。造成這種情況的原因是穩定性。更新並不總是能使一切都變得更好,有時會破壞東西。如果軟體A依賴於軟體B,它可能與B的未來版本不相容。但有時您確實需要軟體更新(例如,為了獲得對新硬體的支援),或者您只想安裝預設儲存庫中沒有的軟體。
出於這個原因,Ubuntu提供了一項名為個人軟體包檔案 (PPA) 的服務。它允許開發者(或打包人員)建立針對Ubuntu特定版本和特定體系結構的軟體包。這些軟體包通常依賴於該版本預設儲存庫中提供的軟體,但也可以依賴於其他 PPA 中提供的更新軟體(不常見)。對於使用者來說,這意味著他們接收的軟體易於安裝,應該沒有依賴性問題,並且會頻繁更新,無需額外操作。顯然,與傳統的自編譯和安裝相比,這是安裝軟體的首選方法。
可以手動新增 PPA,但使用 add-apt-repository 命令更簡單。該命令由 python-software-properties 軟體包提供。
- 清單 2.1
- 為
add-apt-repository命令安裝python-software-properties。
- 為
sudo apt-get install python-software-properties 使用 ppa: 字首和 PPA 名稱來使用 add-apt-repository 命令。需要注意的是,透過安裝此類軟體,您信任建立這些軟體包的打包人員。建議確保軟體包不會損害您的系統。打包人員會使用他們的私鑰對軟體包進行簽名,還會提供一個公鑰。add-apt-repository 使用該公鑰來確保軟體包自打包人員建立它們以來沒有被修改/篡改。這增加了安全性,但如前所述,它無法保護您免受打包人員可能已包含在軟體中的惡意軟體的侵害。
- 清單 2.2
- 新增 ppa 儲存庫。
sudo add-apt-repository ppa:<ppa name> 新增儲存庫後,您必須呼叫 apt-get update 來更新軟體包資料庫。如果您跳過此步驟,則 PPA 中的軟體將不可用於安裝。
- 清單 2.3
- 更新軟體包資料庫。
sudo apt-get update 現在可以使用 apt-get insatll 安裝軟體。呼叫 apt-get upgrade 時,它也會收到更新。從 PPA 更新軟體不需要額外的步驟。
- 清單 2.4
- 安裝所需的軟體包。
sudo apt-get install <packages>