跳轉至內容

叢集手冊/軟體

來自華夏公益教科書

本節的主題是安裝和維護不在Ubuntu預設儲存庫中的軟體。將介紹將軟體安裝、更新和整合到環境中的不同方法。

在 GNU/Linux 系統上安裝軟體通常包括三個步驟。第一步是下載包含應用程式原始碼的存檔。解壓該存檔後,需要編譯程式碼。像Automake[1]這樣的工具可以幫助使用者掃描環境並確保滿足軟體的所有依賴項。理論上,軟體應該在完成三個簡單的步驟後安裝並可以使用。

  1. ./configure
  2. ./make
  3. ./make install

幾乎每個此類存檔中提供的README檔案都建議這樣做。然而,大多數情況下,此過程都會失敗,使用者必須手動解決問題。如果所有問題都已解決,則應編譯程式碼(./make)並安裝(./make install)(第二步和第三步)。除了Automake,還有其他專案,比如CMake[2]WAF[3],試圖使這個過程不再那麼麻煩。將軟體安裝並整合到現有環境中,這樣的過程可能需要相當長的時間。如果軟體在某一時刻需要更新,則不能保證更新所需的時間少於初始安裝。

這個問題的根源在於,不同發行版的 GNU/Linux 在安裝後提供的軟體集合通常差別很大。這意味著,如果有 5 個不同的發行版,並且您想確保您的軟體在每個發行版上都能執行,您必須確保您的軟體與以下內容相容。

  1. 您的軟體依賴的每個庫的 5 個不同版本。
  2. 5 個不同的初始化系統(負責執行守護程序)。
  3. 5 個不同的軟體安裝位置約定。

AutomakeCMakeWAF這樣的工具解決了這個問題,但與此同時,巨大的多樣性也是它們不是 100% 解決方案且經常失敗的原因。

發行版軟體包

[編輯 | 編輯原始碼]

與其試圖提供一個可以在所有 GNU/Linux 發行版上執行的單個存檔,不如為每個發行版重新打包軟體更為常見。Debian的儲存庫包含數千個軟體包,這些軟體包僅為Debian的一個版本打包。這使得安裝和更新變得輕而易舉,但也給建立這些軟體包的人帶來了巨大的工作量。由於Ubuntu基於Debian,因此大多數這些軟體包也適用於Ubuntu。這些軟體包是預先編譯的,會自動安裝到正確的位置,併為使用的初始化系統提供初始化指令碼。它們的安裝由像aptaptitude這樣的軟體包管理器完成,該管理器還會管理未來的更新。只有兩個小問題。

  1. 軟體是針對發行版的特定版本打包的。例如,Ubuntu 12.04Debian Squeeze。安裝後,通常只提供安全更新。
  2. 當然,並非所有軟體都經過打包,也並非所有軟體都可以在預設儲存庫中找到。

這意味著,如果您使用的是最新的Ubuntu長期支援版本,您使用的軟體大多數都已經超過一年的時間,並且在此期間,只收到了安全更新。造成這種情況的原因是穩定性。更新並不總是能使一切都變得更好,有時會破壞東西。如果軟體A依賴於軟體B,它可能與B的未來版本不相容。但有時您確實需要軟體更新(例如,為了獲得對新硬體的支援),或者您只想安裝預設儲存庫中沒有的軟體。

個人軟體包檔案

[編輯 | 編輯原始碼]

出於這個原因,Ubuntu提供了一項名為個人軟體包檔案 (PPA) 的服務。它允許開發者(或打包人員)建立針對Ubuntu特定版本和特定體系結構的軟體包。這些軟體包通常依賴於該版本預設儲存庫中提供的軟體,但也可以依賴於其他 PPA 中提供的更新軟體(不常見)。對於使用者來說,這意味著他們接收的軟體易於安裝,應該沒有依賴性問題,並且會頻繁更新,無需額外操作。顯然,與傳統的自編譯和安裝相比,這是安裝軟體的首選方法。

如何使用 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>

參考文獻

[編輯 | 編輯原始碼]
  1. http://www.gnu.org/software/automake/
  2. http://www.cmake.org/
  3. https://code.google.com/p/waf/
華夏公益教科書