![]() |
| 新浪首頁 > 科技時代 > FreeBSD使用大全連載 > FreeBSD連載(28):Packages Collection |
![]() |
Packages CollectionFreeBSD中提供了上G字節大小的預編譯并打好包的二進制應用軟件包,這些軟件包能夠立即安裝使用。在軟 件包中不但記錄了二進制軟件的內容,還包括這些軟件的安裝位置、軟件包的描述信息,以及軟件包之間的依賴關系,這種管 理軟件的機制稱為Packages Collection。通常安裝介質提供的這些Packages位于安裝介質中的 packages目錄下,使用安裝程序sysinstall就能夠很容易的安裝和卸載這些安裝好的軟件包。(由于空間 的限制,安裝光盤上并不能包括所有的軟件包,可以從Internet上下載,在Walnet Creek發布的FreeBSD 光盤中的第三張也包括了大量預編譯好的軟件包)。 在FreeBSD下,每個預編譯的軟件包是使用tar和gzip進行打包壓縮后的文件,其文件名中的前面為這 個Package的名字(包括版本號),并使用tgz后綴,例如navigator瀏覽器的Package文件為netscape-navigator-4.07.tgz。。 使用root權限執行sysinstall,然后選擇Configure菜單項中的Packages選項,系 統將按不同的應用軟件的類別,顯示出相應的菜單選項,每個選項對應一類應用軟件,其中All項中包括所有可用的應用軟 件。
這些軟件也被放置到安裝介質中的packages目錄下對應的不同存儲子目錄中,子目錄和菜單選項是一一對應的。
如果進入了一個種類的子菜單,那么就可以看到,已經安裝的軟件有一個 “X” 標記,可使用空格鍵反選擇這個 已安裝的軟件,系統將立即卸載這個軟件。或者選擇一個未安裝軟件,然而此時并沒有立即進行這個軟件的安裝,而是要等到 全部選擇了所有想要安裝的軟件包之后,再回到上級菜單,選擇 “Install” 按鈕才開始進行安裝。
各個軟件包之間并不是孤立的,而是在相互之間存在一定的依賴關系。例如,所有的X Window應用軟件都在 X Window下運行,那么如果沒有安裝X Window服務器軟件,也不能正確安裝這些應用軟件。此外,Pack ages中也并不全是應用軟件,它也包括各種函數庫及其他種類的支持文件,那么有的應用軟件包就依賴于這些庫文件和支 持文件。 由于存在各種相互依賴關系,必然對軟件包的安裝和卸載發生影響。當安裝一個軟件包時,FreeBSD將會首先 安裝這個軟件包依賴的其他軟件包,然后才能安裝這個軟件包本身。如果沒有安裝它所依賴的軟件包,則就不能正常安裝這個 軟件包本身。同時,當刪除一個軟件包時,必須預先刪除依賴這個軟件包的所有其他軟件包,否則就不能正常完成刪除任務。 FreeBSD對這個依賴關系限制比較嚴格,即使是同一個軟件,但版本不同,依賴于這個軟件另一個版本的其他軟件包也 不能正確安裝,必須保証版本的一致性。 使用Packages Collection來安裝和管理應用軟件,可以維持軟件安裝文件結構的一致性,因為 Packages Collection安裝的軟件其文件目錄結構符合FreeBSD的習慣,清晰明了。此外軟件包之 間的依賴關系對于同時維護多種軟件也很有效,因此最好不要繞過Packages Collection手工安裝軟件。 當需要重新定制軟件的時候,可以通過Ports Collection來完成,它在編譯好軟件之后,可以使用軟件包的 方式安裝和維護軟件。 每個軟件包的安裝信息被放置在/var/db/pkg目錄下維護,這個目錄下的每個子目錄都對應于一個安裝過 的軟件包,如果某個子目錄被破壞,那么相應的軟件包的信息就不復存在了。
雖然使用sysinstall來管理軟件比較直觀,但是這需要一個標准的安裝介質,適合大量安裝軟件包時使用 。而在不使用安裝介質的時候,僅僅需要添加某個獨立的軟件包或進行維護時,sysinstall就不適合了。FreeBSD 提供了十分簡單的几個管理命令來完成這個任務。 pkg_add 安裝一個Package,其參數為要安裝Package的文件名或獲得這個文件的URL 。當使用URL來指定Package的位置時,pkg_add首先使用fetch程序下載該軟件包,然后進行安裝。 通常可以使用 “-v” 參數,使pkg_add顯示出進行的操作過程。 pkg_delete 刪除一個軟件包,其參數為軟件包的名字,由于此時軟件包已經被安裝到系統中了 ,因此名字中不必使用tgz后綴。同樣也可以使用 “-v” 參數。 pkg_info 獲取一個軟件包的安裝信息和簡短描述,參數為軟件包名字時,將參看當前已安裝的軟件 包中是否存在它,當使用的參數為帶tgz后綴的文件名時,將查看當前目錄中是否存在這個軟件包文件。或者可以使用 -a參數列出當前安裝的所有軟件包的信息:
但在實際應用的過程中,值得注意的問題常常發生在升級軟件包時。由于同一軟件的不同版本通常使用同樣的文件名 ,因此在安裝一個版本時將覆蓋掉另一個版本的文件,但是同時新版本的Packages并不會自動刪除老版本Packages 的安裝信息。因此如果再一次卸載舊版本時就會將新版本中具有同樣文件名的文件刪除掉。解決問題的方法是先卸載老 版本,再安裝版本的Packages。一旦出現問題,可以再次將新版本Packages重新安裝一次即可。 未完,待續。。。 |
|||||
| 新浪首頁 > 科技時代 > FreeBSD使用大全連載 > FreeBSD連載(28):Packages Collection | ||||||
Copyright(C) 1999 SINA.com, Stone Rich Sight. All Rights Reserved
版權所有 四通利方 新浪網