利用 package 來安裝軟體套件,您有選單模式或是命令列模式的選擇。兩者間的不同點如下所述︰
選單模式需要取得軟體庫的索引檔,而這個檔案通常是有點容量的,所以如果您的網際連線頻寬不足時,將會有點時間性的浪費,但是它有個好處,就是會依據您所選取的 package,來自行加選額外所需的套件,也就是不用擔心套件相依性的問題。
您可以透過 /stand/sysinstall 指令來進入選單模式。

而命令列模式的好處在於只需取得要安裝的軟體套件包裝檔案即可,無需額外下載所有套件的索引檔,但是您需要同時取得與要安裝軟體俱有相依性的套件包裝檔,這對於該軟體套件不熟悉者是較不親善的安裝方式。

Packages 提供了些指令供您做安裝、維護、刪除工作︰

指令 簡介
pkg_add 安裝 package 套件
pkg_create 建立 package 包裝檔
pkg_check 檢測 package 包裝檔的加密簽章 (cryptographic signature)
pkg_delete 刪除以 package 或 ports 安裝的軟體套件
pkg_info 查詢軟體套件的資訊
pkg_sign 為 package 包裝檔插入加密簽章 (cryptographic signature)
pkg_update 升級套件的版本
pkg_version 比對已安裝的套件版本與 ports-tree 中的版本差異

我們將先針對較常用的幾個指令為您做介紹,其餘的只好請您先向好男人 (man) 查詢了。

在介紹 pkg_add 指令之前,有件事您必需先瞭解到,在使用 pkg_add 來安裝 packages 時,同時還潛伏著來源信任的問題。
因為 pkg_add 在解開 packages 包裝檔時,便會執行其中的安裝描述,如果今天您所取得的包裝檔是來路不明的,那您將有可能會被植入木馬程式或執行到惡意損毀分割區資料指令,如︰rm -rf /
因此,如果您無法確認包裝檔來源的可靠性時,請您務必於安裝時多加個 -M 的參數,來檢查包裝檔的安裝描述,以確定此包裝檔是對系統安全無害的。

一般來說 pkg_add 的運作流程就是

  • 檢查系統是否已安裝過此版本的軟體套件,如果沒有則繼續下一步安裝動作;如果有則停止安裝。
  • 解開 .tgz 包裝檔。
  • 檢查套件的相依性,如果需要其他額外的套件且系統尚未安裝時,則找尋看看是否能找到此需求的套件,如果有則安裝;如果沒有則終止安裝的工作,並顯示錯誤訊息。
  • 如果一切無誤且安裝好軟體套件之後,將會在套件資料庫中加入此套件的資訊,然後完成這個安裝套件的工作。

pkg_add 的指令格式如下︰
pkg_add [-vInfrRMS] [-t template] [-p prefix] pkg-name [pkg-name ...]

如果套件的包裝檔是在本地主機中,通常我們都只使用 pkg_add /path/pkg-anme.tgz 指令來安裝所要安裝的套件。如果套件包裝檔是在遠端伺服器中,我們會使用如 pkg_add url:/path/pkg-name.tgz 指令來安裝。
不過這些都是在得知包裝檔的正確檔名的情況之下的使用方式,如果您並不確認包裝檔的正確檔名,您可以在 shell 設定檔中加入下面這行的設定︰

#Use csh or tcsh shell
setenv PACKAGEROOT ftp://ftp4.tw.freebsd.org

#Use sh or bash shell
export PACKAGEROOT=ftp://ftp4.tw.freebsd.org

然後利用如 pkg_add -r mplayer 指令透過遠端伺服器來取得相關對映系統版本中所提供該軟體套件最新版本的包裝檔後安裝。

 

刪除己安裝好的套件,基本上來說就是將那些檔案給刪除,並將軟體套件資料庫中的登錄給移除。

pkg_delete 指令格式如下︰
pkg_delete [-dDfGinrvx] [-p prefix] pkg-name ...
pkg_delete -a [flags]

嗯,參數也是滿多的,不過通常是用不到的,您只需確定要刪除套件的登錄名稱 (使用 pkg_info 列表查知),然後下達 pkg_delete pkg-name 即可,如︰
pkg_delete zh-xcin-2.5.3.p2_2
如此即可將該套件移除並清除套件資料庫中的登錄資料。不過如果該套件是屬於某些套件的必需相依套件時,您可能會無法完整刪除,甚至不能刪除該套件,此時您應該先查清該套件與其他哪些套件俱有不可分的相依性關聯,然後由那些套件開始依序刪除;不然您就只能放棄刪除該套件的念頭了。

另外 pkg_delete 提供了一個不太可能會用到,但是卻又相當方便的功能,那就是管他三七二十一,我就是要將全部的套件給刪了 ^_^
此時您只需下達 pkg_delete -a 指令即可,保證您可以將所安裝的套件清除的乾乾淨淨。因此在此奉勸您可千萬要三思喲,並且在按下 Enter 之前要確認一下有無手誤喲,不然........

 

這個指令沒啥安不安全的問題了 ^_^
它可讓您查看已安裝的套件資訊,以便瞭解到底您裝了哪些軟體套件。

pkg_info 指令格式如下︰
pkg_info [-cdDfgGiIkLmopqrRsvVx] [-e package] [-l prefix] [-t template]
             [-W filename] [pkg-name ...]
pkg_info -a [flags]

大部份這個指令都是用來查看某個套件是否已安裝了,或是當要刪除某個套件時,查詢該套件的完整登錄名稱。當您執行 pkg_info 指令時,您便可以看到以《名稱》《套件簡介》的格式所顯示出所有已安裝的套件簡介資訊。

如果您覺得某個套件的簡介資訊還不足,您可以下達 pkg_info pkg-name 指令,如︰pkg_info xine-0.9.13 您便能夠看到有關 xine 這套件較詳細的介紹了。

或者您會想要查看全部套件的詳細介紹,您可以使用 pkg_info -a 指令,不過因為這時會顯示的資料想必一定都會超過螢幕所能顯示的範圍,因此您會需要利用管線的功能透過分頁指令 (more) 來分頁顯示,指令為 pkg_info -a | more

 

這個指令感覺上似乎沒啥實用性,因為它最主要的就是比對已安裝好的套件與現行 ports-tree 中的版本差異性。您可以在每次更新 ports-tree 之後,執行這個指令 pkg_version | more 來查看是否有更新的套件版本可用,然後決定是否要更新。
如果您安裝的套件相當多,那您在下達指令之後,會需要等上一些時間,可不要以為當機或這個指令沒反應喲。至於比對後的結果會以《套件名稱》《比對符號》格式來顯示,底下是各符號所代表的意思︰

符號 代表意義
= 表示該套件版本與本地 ports-tree 中的版本相同
> 表示該套件版本比本地 ports-tree 中的版本較新 (該更新 ports-tree 了)
< 表示該套件版本比本地 ports-tree 中的版本較舊 (視需求決定是否更新版本)
? 表示該套件在本地 ports-tree 中找不到對映的 port 資料
* 表示該套件在系統中同時安裝了不同的版本

原文取自 http://www.study-area.org/2freebsd/admin/08-1.htm 
著作權 歸原著作者所有.


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Frank 的頭像
    Frank

    經驗交流分享與備忘

    Frank 發表在 痞客邦 留言(0) 人氣()