Ports & Package 管理工具

系統裝完第一件事要完成以下的事情
1、安裝ports
2、安裝source code
可以透過csup來裝,也可以使用sysinstall如果要用sysinstall來裝的話則叫出sysinstall
Custom -> Distributions -> Custom -> src [X], ports [X] 選好後離開到Distrubitutions那層選Commit之後選擇ftp安裝,之後在/usr下面就會有src和ports目錄了,裡面是整個系統的source code,和ports tree。

另一個方法是使用csup來裝,首先先確定一下使用whereis csup來看看是否存在系統之中,正常來說會顯示csup: /usr/bin/csup (freebsd 7.0)在6.2以後都內件了,之後輸入以下指令
#csup -L 2 -h cvsup.tw.freebsd.org /usr/share/examples/cvsup/ports-supfile
#csup -L 2 -h cvsup.tw.freebsd.org /usr/share/examples/cvsup/stable-supfile
(-L 2 表示輸出cvsup的詳細資訊而-h 表示從那個host來更新,最後面的檔案表示要更新的項目)

3、安裝portupgrade tools
portupgrade 是套件管理不可缺少的工具,它含有更強功能的管理工具可以取代本來內件的陽春管理工具。
#cd /usr/ports/ports-mgmt/portupgrade
#make install clean (出現設定的選單,用預設就可以了)
裝完之後會多出幾個工具
/usr/local/sbin/pkg_deinstall //加強功能的移除套件
/usr/local/sbin/pkg_fetch //下載套件,但不安裝
/usr/local/sbin/pkg_glob //查詢已安裝套件的資料
/usr/local/sbin/pkg_sort //以相依關系排序,而不是以字母排序
/usr/local/sbin/pkg_which
/usr/local/sbin/pkgdb //套件的資料庫維護
/usr/local/sbin/pkgdu //計算套件的大小
/usr/local/sbin/portcvsweb
/usr/local/sbin/portinstall
/usr/local/sbin/ports_glob //查詢未安裝套件的資料
/usr/local/sbin/portsclean //清理ports tree
/usr/local/sbin/portsdb //ports index資料庫維護
/usr/local/sbin/portupgrade //套件升級
/usr/local/sbin/portversion //已安裝套件和ports tree中套件版本比較
內件的工具有(常用的)
/usr/sbin/pkg_add //透過package來安裝套件
/usr/sbin/pkg_delete //移除套件
/usr/sbin/pkg_info //顯示套件資訊
/usr/sbin/pkg_version //已安裝套件和ports tree中套件版本比較

※ports tree, package, 套件
在freebsd系統上安裝軟體有三種方法從ports、直接下載package或是自己編,而裝好之後就稱為套件了,不論是從ports上裝或是package直接安裝,裝完都是一樣的,都稱為套件,管理方式也是一樣的,而port的集合就是ports,而以樹狀目錄放在/usr/ports裡面我們就稱為ports tree。
port -- 由ports tree中來安裝
package -- 由二元可執行檔來安裝
套件 -- port和package裝完都叫套件

※可由portupgrade tools來取代的工具有
pkg_info =====> pkg_tree (若有安裝的話)
pkg_delete ===> pkg_deinstall
pkg_version ==> portversion

※工具詳細介紹
1、pkg_add (由二元可執行檔直接安裝)
pkg_add -r package_name 由遠端下載後安裝
pkg_add -v 安裝時顯示詳細資訊
ex: pkg_add -rv vim-lite

2、pkg_deinstall (移除已安裝的套件)
pkg_deinstall -a 移除全部套件
pkg_deinstall -i 互動詢問模式
pkg_deinstall -n 看看做什麼事而不是真的執行
pkg_deinstall -v 顯示詳細資訊
pkg_deinstall -d 移除套件中的空白資料夾
pkg_deinstall -r 相依於此套件的套件全砍 (向上相依)
pkg_deinstall -R 此套件所需要的套件全砍 (向下相依)
ex: pkg_deinstall -rRvi portupgrade

3、pkg_info (顯示套件相關資訊)
pkg_info 列出所有已經安裝的套件
pkg_info -L 列出已安裝套件檔案列表
pkg_info -b 詳細資訊
pkg_info -p 安裝路徑
pkg_info -D 安裝的訊息
pkg_info -r 顯示此套件相依的套件
pkg_info -R 顯示需要於此套件的套件
ex: pkg_info -L portupgrade-2.4.6,2
ex: pkg_info -rR portupgrade-2.4.6,2
ex: pkg_info -b portupgrade-2.4.6,2

4、pkg_tree (顯示套件相依圖型介面)(建議安裝)
pkg_tree -v 顯示完整相依資訊
pkg_tree -t 只顯示相依樹最上層的套件
pkg_tree -b 只顯示相依樹最下層的套件
pkg_tree -tq 顯示最上層套件,具不顯示細部資訊
ex: pkg_tree -tv
ex: pkg_tree -tq
ex: pkg_tree -v portupgrade

5、pkg_fetch (下載套件,但不安裝)
pkg_fetch -f 不論是否已安裝此套件,強制下載
pkg_fetch -R 此套件所需要的套件一併下載
pkg_fetch -v 顯示下載資訊
※下載的package放在/usr/ports/packages/All下面
ex: pkg_fetch -Rfv portupgrade

6、pkgdu (計算套件的大小)
pkgdu -k 以K來顯示套件大小
pkgdu -m 以M來顯示套件大小
pkgdu -q 只顯示所有安裝套件的總大小
pkgdu -t 顯示所有安裝套件各個大小和總大小
pkgdu -r 顯示相依於此套件的套件大小
pkgdu -R 顯示此套件所需要的套件大小
ex: pkgdu -tm
ex: pkgdu -tk
ex: pkgdu -qm
ex: pkgdu -Rt portupgrade

7、pkgdb (維護套件資料庫)
pkgdb -F 檢查修正資料庫相依性問題
pkgdb -u 更新資料庫
※一次要升級很多套件前後最好做一次
ex: pkgdb -Fu

8、pkg_glob (查詢已安裝套件的資料)
pkg_glob -a 列出全部安裝的套件
pkg_glob -r 列出需要於此套件的套件
pkg_glob -R 列出此套件所相依的套件
※可由pkg_tree來取代
ex: pkg_glob -rR portupgrade

9、portsdb (Ports INDEX資料庫維護)
portsdb -F 從網上取得ports的INDEX檔下來
portsdb -u 更新ports的INDEX資料庫
※可由make fetchindex取代-F
ex: portsdb -Fu

10、ports_glob (查詢Ports INDEX資料庫資料)
ports_glob -r 列出相依於此套件的套件
ports_glob -R 列出此套件所需要的套件
ex: ports_glob -Rr portupgrade
※請注意這ports_glob, pkg_glob兩者的差異,一個是查詢目前已經安裝的所有套件,另一個是查詢整個Ports tree未安裝的所有套件。

11、portversion (檢查套件版本)
portversion -v 列出套件版本詳細比較資料
portversion -F 顯示套件版本
portversion -r 列出相依於此套件的套件版本比較
portversion -R 列出此套件所需求的套件版本比較
ex: portversion -Fv
ex: portversion -FRrv portupgrade

12、portsclean (清理整個Ports tree)
portsclean -C 清理所有port中的工作目錄
portsclean -D 清理所有ports tree中不被參考到的distfile
portsclean -DD 清除所有已裝的port都不再使用的distfile
portsclean -L 清理系統中用不到的shared library
ex: portsclean -CDL

13、portupgrade (升級已經安裝的套件)
portupgrade -a 升級所有套件
portupgrade -n 只顯示將要做什麼,但不真的執行
portupgrade -i 互動模式
portupgrade -m 要append給make的參數
portupgrade -M 要prepend給make的參數
portupgrade -P 用package會去掃PKG_PATH找不到就pkg_fetch再不然就用ports來裝
portupgrade -PP 堅持只用package來裝,不用ports裝
portupgrade -p 做出package,若有指定-r的話,那些被需求套件也會生package
portupgrade -r 相依於此套件的套件全部升級
portupgrade -R 此套件所需要的套件全部升級
portupgrade -v 顯示升級詳細資訊
portupgrade -u 不要保留舊的shared libraries
portupgrade -y 所有問都回答yes
ex: portupgrade -an (看看那些需要升級)
ex: portupgrade -urR portupgrade
ex: portupgrade -urRa (由ports升級所有套件)
ex: portupgrade -urRPPa (由package升級所有套件)

0 意見: