FreeBSD portupgrade升级你的FreeBSD软件
http://tech.techweb.com.cn/thread-186485-1-1.html
如果想如何能够将FreeBSD已经安装过的软件进行升级,那么你可以用一下portupgrade软件,有点像程序开发,操作系统,服务器,×××,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛!z#p1L6L$f,f s,s'S4k6o
apt-get upgrade呵呵
-U+Q+U-a,o   我仅仅需要做的就是:
(g8`;D%e(R!m.I1vTechWeb-技术社区   1.cvsup一下我的ports treeTechWeb-技术社区8u1V4l$X8C5d-J
   2.portupgrade -arRP"a8`"H7o0Q&h

3M$U;w7}7TTechWeb-技术社区以下内容不是我翻译的,我是在网络上找的。地址为:http://www.pc8080.com/3/115384.html
!y!f5h!I7r程序开发,操作系统,服务器,×××,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛它的参数有:"H#];O-j,T5T5]
pkgname_glob pkg_glob(1)
;Z,i Z&w#P#y0m,F-C;n k!T:R7r8c9s4@
   -a 全部安装的 packages*S(~&p0Y/m7m

%s8l7Q8U!F6H4KTechWeb-技术社区   -A 每次 install 後要跑的指令)g*[2w'D*]0O(P5e1v&J

"[!R$I)j/[*c6d @;^tech.techweb.com.cn   -b 把旧的 package 备份到 PKG_TMPDIR or TMPDIR (default /var/tmp)$b)A,{4J6B8U

&\4B,X"g P Z   -B build 前要跑的指令 (如果 fail 的话,那这个 port/package 会被略过)
"E:J3I:F:r5p/o#].v5rtech.techweb.com.cn
'H'M6k4K'I+w 要更新 gnome* 前先 cvs updatetech.techweb.com.cn.M'R0b5l:P8{9W;^8]
portupgrade -B 'cvs update' 'gnome*''\4~#b&X.S:`

6C2Z(D(L3V*z"\#[/D+^;V!v程序开发,操作系统,服务器,×××,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛 不知道
'y%b8D'H-l(\8B$Stech.techweb.com.cn portupgrade -B 'ports_glob -M $(pwd) | (cd
+b2V!p9g/}'w%e4D g'U ../..; xargs cvs up)' slave/port
%}/r3O9p:Z!e8q
(H:a8Z$I7M,S 通通都更新,除了 interactive 的 ports
m5\ c y8@程序开发,操作系统,服务器,×××,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛 portupgrade -aB 'test ! `make -V IS_INTERACTIVE`'
*C2~!O1o/D-Mtech.techweb.com.cn程序开发,操作系统,服务器,×××,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛'~8}#g3n$B*j J.e
   -c 在 build 之前 clean (default)程序开发,操作系统,服务器,×××,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛6z%o.^1P U#H-M

7h%}-{8P$f#E:X   -C 在 install 之後 clean (default)
"h7t-M4v/t'B'[tech.techweb.com.cn%k$w)P6f7r"Y
   -D 在 fetch/build 之前 distclean程序开发,操作系统,服务器,×××,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛7z&C&D-i3z4f4N'u$G7Q

'P8V5h"{%?3Y%T!k5c2u   -f 强迫更新一个要被 downgrade 或相同版本或在 pkgtools.conf 标记为 HOLD_PKGS)_1u2P1v _!},S$f.M!s
的 package
8e$N&w4_0t6Y'}$\tech.techweb.com.cn
/P:v(B `0s;E3LTechWeb-技术社区   -F 只会把 distfiles 抓下来(如果加 -P 则是抓 packages)
,F#\2k._,K;?8O3GTechWeb-技术社区&E"}.X1x2w$v+F$F a:k
   -g 强迫更新 require 的 package 更新失败的 package
-i6N#k.n1M)l(]TechWeb-技术社区tech.techweb.com.cn1U;C4}%n7E%H4J5r7V,z
   -i interactive 就是会问你要不要的 (implies -v)tech.techweb.com.cn7~3y1D0\(T1{ P3E4w

%Q9L/t-W'b9p8C+@1S8W   -I 把结果丢到 FILE 去1G1P1w4K3C
9J'H(r'Q#t*[$h4X%Y'X
   -L 把每一个 port build & install 结果丢到 PREFIX 去
%T+p!|&f%?/v,X%K程序开发,操作系统,服务器,×××,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛 存成 <PREFIX><category>::<portname>程序开发,操作系统,服务器,×××,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛$i'B O p"I)w e
7i"I'd N/a:{8b;I-K
   -m 要 append 给 make(1) 的参数
%X L/|2d*c0J9J
0P$E!A/[9A:x*U/J'l   -M 要 prepend 给 make(1) 的参数6L7l;S+C9M;r

9I8T4u7c6a9}$H   -n 看看会干些什麽事情 (implies -v, negates -i, -y)
's.i9e.q+U&R"hTechWeb-技术社区:~,d/A*J*w&J {8u
   -N 安装新的 port/package 而且会先更新所有 require 的 packages;h*l*W"Y(J6b/e+r
可以指定 portorigin glob程序开发,操作系统,服务器,×××,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛0P h+B#X&b#o.u

0e%w(c+{-S4jtech.techweb.com.cn   -o 指定 ORIGIN)e'l/N"D!j+p9S
.@7m-t:E.]2r*M;e4[
   -O 别做完整的 denendency check(如果跑之前有 pkgdb -F 那可以放心的用)3a.H*c.}%K7? L-w'J%B q

"Z.O"D y2h;o,P!T!f8k!M   -p 在 install/upgrade 後生出 package,如果有指定到 dependent package T(K3B$I'g#w$R
的话(like -r),那些也会生 packagetech.techweb.com.cn!W+~'m"O']._%V2F
程序开发,操作系统,服务器,×××,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛*h(`7@-q)O8r0e6G"T#~
   -P 用 package,会去扫 PKG_PATH,找不到就 pkg_fetch 再不然就用 ports
"f4w/k${8^3R5m8i5~TechWeb-技术社区(~'Y+g-D9b-Y"]3M,a:L1Q
   -PP 坚持只用 package,不用 ports#]#L"^'Q)B:y0C0j:P
-C-a*M*S+N
   -q 不要读 $PREFIX/etc/pkgtools.conf
"[!M/y ^2L5]!x$b)e2|6otech.techweb.com.cn
4L:H1G2v&t+I'I:B   -r 把 depends on given ports 的 packages 也一起更新
1O#]%?.V x8J"r0M%stech.techweb.com.cn 比如说 -r png-* 的话,会把需要 png 的 packages 一起更新0^#\*y1n+B K2n
.~5C)c `5p+B
   -R 把 given ports 需要的 packages 也一起更新
;K't;d;V&Q/^(s 比如说 -R kde3 的话,会把其他 kde3-* 的一起更新tech.techweb.com.cn#m.X&N;p.E)s
TechWeb-技术社区,q6l:R4u6E.C9D0I
   -s 在需要 root 权限的时候执行 sudo
/x9]&~0I)~-Q-l*d-\5^ E3R:g(T3t$c)o-N$~
   -S 取代 sudo(8) 的指令,例如 su root -c %s ''8G$?'B&u2Y-N:_/_
5R(T*l.b/}+`3n"i)i9} @
   -u 不要保留旧的 shared libraries2E2Z/H$p9e(O:f3k(n#{7p8t-x3A
程序开发,操作系统,服务器,×××,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛&T1p$H-[%G%G!M6g.F;d Q
   -v verbose output!s6u*`5k,a1y-~

)t%l"a6E2~2c.e2z3qTechWeb-技术社区   -w 不要在 build 之前 clean
,Y;z:v3m0RTechWeb-技术社区TechWeb-技术社区3i6y*W+G!P0p1K-c-A-l
   -W 不要在 install 之後 clean
!A:q$@,t1T8ZTechWeb-技术社区TechWeb-技术社区)N;O(s3i)?9w9g#P*m
   -x 排除 match GLOB 的 packages程序开发,操作系统,服务器,×××,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛&t*n"g*V%Q
例如 portupgrade -rx XFree86 XFree86 会更新所有 depends on XFree86 的
"\%f:A;T#N8x/Q7B9S/P$k:y packages,却不更新 XFree86 本身
&B'j6H:~7|5n程序开发,操作系统,服务器,×××,Linux,Unix,BSD,PHP,Apach,asp,下载,源码,黑客,安全,技术社区,技术论坛
8H"b1^-m*C1f F-F8V   -y 所有问题通通回答 yes (implies -v, negates -n)


Step1.安裝(主要用於post已安裝的軟體更新上)
#cd /usr/ports/sysutils/portupgrade    //切換至安裝路徑
#make install clean                       //安裝並清除安裝過程中不必要的檔案

Step2.升級注意事項
#pkg_version -v | grep '<'             //列出目前的套件及可更新的版本

要用portupgrade時最好先把舊的套件備份起來,以便新的版本有問題時可再解回
#pkg_create -b   要備的套件(ex.openwebmail 2.40)    //備份所指定之套件會產生再目前的目錄
#pkg_add -v 要還原的套件(ex.openwebmail 2.40.tgz) //升級後無法使用把升級後的版本移除再利用此行還原原本的套件

Step3.升級套件
#portupgrade 要升級的套件名稱(ex.openwebmail 2.40)

補充
#portsdb -Uu    //更新完port tree 後執行此指令來及時更新您的 port INDEX 資料庫(確保 INDEX 跟 ports tree 同步)
#pkgdb -F       //修復程式間的關連性即更新 /var/db/pkg/pkgdb.db(升級前、後都要執行)
#portsclean -CDLP //清除不需要的distfiles、working、舊的 shared libraries

http://www.cnkeyboard.com/1/viewspace-685
  • 收藏
  • 评论
  • 举报