电脑技术学习

FreeBSD Portgrade软件更新

dn001
◎名稱
 portupgrade - 提供經由port或是packages來升級/安裝新的軟體

◎安裝
 路徑:/usr/ports/sysutils/portupgrade#make install
      /usr/ports/sysutils/portupgrade#make clean

◎語法
 portupgrade [-habcCDfFginNOpPPqrRsuvwWy] [-A command] [-B command]
             [-l file] [-L prefix] [-S command] [-x pkgname_glob]
             [[-o origin] [-m make_args] [-M make_env] pkgname_glob ...]

◎描述
  portupgrade被用來作為經由port或packages升級/安裝的工具。 
  而portinstall相當於portupgrade -N◎警告
     o 請詳讀使用者手冊並且了解你在做什麼。

     o 請不要忘掉在升級前執行pkgdb -F。
       
     o 請記得portupgrade不會自己尋找程式的相關性,
       必要時別忘了使用 -f-r-R 參數。

     o 當portupgrade在執行中,請勿中斷之。否則您將會有一個不完全的資料庫。
       (雖然即使這樣做是100%的安全)

     o 請不要懶惰,務必備份先前的資料及設定檔案包含/var/db/pkg。
	 
◎參數
     pkgname_glob  定義一個pkgname,可以包含萬用符號。
                   詳情請參考 pkg_glob(1)。
                   
     -h      (--help)
             顯示求助選單。
                   
     -a      (--all)
             表示所有已經安裝的軟體。
             相當於pkgname_glob中的 '*' 。

     -A CMD  (--afterinstall CMD)
             在每一個安裝完成後,以root身分執行某一命令。
     
     -b      (--backup-packages)
             保留舊有版本的備份。
             這些資料會暫時存放在PKG_TMPDIR 及 TMPDIR所定義的位置。
                            
     -B CMD  (--beforebuild CMD)
     	     與-A CMD 相反,在安裝每一個程式前,先執行該命令。
             若該命令執行失敗,則安裝會停止。

     -c      (--clean)
             在每一次安裝前,先執行make clean。(預設值)

     -C      (--cleanup)
             在每一次安裝後執行make clean。(預設值)

     -D      (--distclean)
             在每次fetch或是build之前執行 make distclean。

     -f      (--force)
             強制執行,即使是降級或是同一版本也強制安裝。
             
     -F      (--fetch-only)
             只取得檔案或是packages但不做升級動作。
             這個參數對於一次取得多數檔案很有用。
             
     -g      (--go-on)
             繼續執行動作,即使某些相關的packages升級失敗。
             預設的狀態中,若某package或是port升級失敗,其相關連性會被skipped。

     -i      (--interactive)
             打開互動模式,portupgrade在進行重要步驟前會徵得您的同意?
             
     -l FILE   (--log-results FILE)
               將更新升級結果以FILE為檔名儲存?

     -L PREFIX  (--log-prefix PREFIX)
                將每一個port的建立、安裝記錄存為一個檔案,
                而PREFIX則是存放的位置?
             
     -m      (--make-args)
             在每次make前加上額外的參數(arguments)
     	     
     -M      (--make-env)
             在每次make後加上額外的參數(arguments)?

     -n      (--noexecute)
             不實際執行安裝或升級動作?
             只是顯示會有何改變?

     -N      (--new)
             當指定的package是尚未安裝的情況下,安裝該程式?
             且其所需求的關連程式也會一併被安裝升級?

     -o ORIGIN     (--origin ORIGIN)
                   定義某port再某package之後升級?
     	    
     -O      (--omit-check)
             忽略依存性的檢查?
             預設的狀況下,會自動檢查程式間的依存性,
             當然地,這個動作會花去額外的時間?
             但,若您先前已經執行過pkgdb -F 命令,
             您可以採用此參數忽略之?

     -p      (--package)
     	     為該安裝/升級的port,建立package?
     	     
     -P      (--use-packages)
             再採用port方式升級前,先採用packages的方式?

     -PP     (--use-packages-only)
             不管任何情況,只採用packages方式升級?
             
     -q      (--no-config)
             使portupgrade不去讀取設定檔$PREFIX/etc/pkgtools.conf?

     -r      (--recursive)
             依據指定的程式(packages)來升級與其相依存的程式?

     -R      (--upward-recursive)
             依據指定的程式(packages)來升級其所依存的程式?
             
     -s      (--sudo)
             在必要的情況下,以sudo狀態執行命令?
             
     -S CMD  (--sudo-command CMD)
             加上sudo的命令
             
     -u      (--uninstall-shlibs)
             不保留舊有的共享函式庫?
             在預設的情況下是保留以策安全?

     -v      (--verbose)
             開啟 verbose 輸出?
             
     -w      (--noclean)
             在每一次編譯前,不要執行make clean?

     -W      (--nocleanup)
             在每一次的編譯後不要執行make clean?

     -x GLOB (--exclude GLOB)
             將符合樣式的packages排除在昇級更新之外? 
             ex:昇級所有與XFree86相依存的程式,除了XFree86之外?
                portupgrade -rx XFree86 XFree86

     -y     (--yes)
             任何回答都回應yes?

◎環境變數
     PKG_DBDIR      指定安裝packages資料庫的變數。
                    預設是/var/db/pkgPORTSDIR       指定ports tree位置的變數。
                    預設是/usr/portsPORTS_INDEX    指定ports INDEX 位置的變數。
                    預設是$PORTSDIR/INDEXPORTS_DBDIR    指定ports資料庫檔案位置的變數。
                    預設是$PORTSDIRPKG_TMPDIR     指定portupgrade在備份檔案暫存資料夾的變數。
                    若沒有特別指定,則使用/var/tmp。
                    注意:此資料夾需要有足夠的空間。

     PACKAGES       指定portupgrade建立packages位置的變數。
                    預設是$PORTSDIR/packagesPKG_PATH       指定portupgrade搜尋packages位置的變數。
                    預設是$PACKAGES/AllPKGTOOLS_CONF  指定pkgtools 設定檔位置的變數。
                    預設是$PREFIX/etc/pkgtools.confPORTUPGRADE    指定portupgrade預設執行參數的變數。
     
◎檔案
     /var/tmp    預設的暫存檔位置。
     
     /var/db/pkg 預設的程式資料庫的安裝位置。

     /usr/ports  預設的ports tree及ports的資料庫檔案位置。

     $PREFIX/etc/pkgtools.conf  預設的pkgtool的設定黨位置。

◎作者
     Akinori MUSHA <knu@iDaemons.org>

◎程式的BUGS
     在安裝或更新的過程之中 SUSP (^Z) 無法產生效用。 
     
◎參考資料
     portupgrade

标签: