◎名称
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/pkg。
PORTSDIR 指定ports tree位置的变数。
预设是/usr/ports。
PORTS_INDEX 指定ports INDEX 位置的变数。
预设是$PORTSDIR/INDEX。
PORTS_DBDIR 指定ports资料库档案位置的变数。
预设是$PORTSDIR。
PKG_TMPDIR 指定portupgrade在备份档案暂存资料夹的变数。
若没有特别指定,则使用/var/tmp。
注意:此资料夹需要有足够的空间。
PACKAGES 指定portupgrade建立packages位置的变数。
预设是$PORTSDIR/packages。
PKG_PATH 指定portupgrade搜寻packages位置的变数。
预设是$PACKAGES/All 。
PKGTOOLS_CONF 指定pkgtools 设定档位置的变数。
预设是$PREFIX/etc/pkgtools.conf 。
PORTUPGRADE 指定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
本文作者: