免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1802 | 回复: 3
打印 上一主题 下一主题

portupgrade中文指南(zt) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-30 11:30 |只看该作者 |倒序浏览
原文出处:
http://bsdroot.dns0755.net/mydoc2/portupgrade-gb2312.txt

  1.      记录一下 portupgrade(1) 的一些东西...
  2.     (大概跟 manual 很像... :P)

  3. 注意注意

  4.     * always pkgdb -F before upgrade
  5.     * always backup /var/db/pkg (好吧,我承认我每次都没做)

  6. 选项

  7.     pkgname_glob pkg_glob(1)

  8.     -a 全部安装的 packages

  9.     -A 每次 install 後要跑的指令

  10.     -b 把旧的 package 备份到 PKG_TMPDIR or TMPDIR (default /var/tmp)

  11.     -B build 前要跑的指令 (如果 fail 的话,那这个 port/package 会被略过)

  12.        要更新 gnome* 前先 cvs update
  13.        portupgrade -B 'cvs update' 'gnome*'

  14.        不知道
  15.        portupgrade -B 'ports_glob -M $(pwd) | (cd
  16.         ../..; xargs cvs up)' slave/port

  17.        通通都更新,除了 interactive 的 ports
  18.        portupgrade -aB 'test ! `make -V IS_INTERACTIVE`'

  19.     -c 在 build 之前 clean (default)

  20.     -C 在 install 之後 clean (default)

  21.     -D 在 fetch/build 之前 distclean

  22.     -f 强迫更新一个要被 downgrade 或相同版本或在 pkgtools.conf 标记为 HOLD_PKGS
  23.        的 package

  24.     -F 只会把 distfiles 抓下来(如果加 -P 则是抓 packages)

  25.     -g 强迫更新 require 的 package 更新失败的 package

  26.     -i interactive 就是会问你要不要的 (implies -v)

  27.     -I 把结果丢到 FILE 去

  28.     -L 把每一个 port build & install 结果丢到 PREFIX 去
  29.        存成 <PREFIX><category>::<portname>

  30.     -m 要 append 给 make(1) 的参数

  31.     -M 要 prepend 给 make(1) 的参数

  32.     -n 看看会干些什麽事情 (implies -v, negates -i, -y)

  33.     -N 安装新的 port/package 而且会先更新所有 require 的 packages
  34.        可以指定 portorigin glob

  35.     -o 指定 ORIGIN

  36.     -O 别做完整的 denendency check(如果跑之前有 pkgdb -F 那可以放心的用)

  37.     -p 在 install/upgrade 後生出 package,如果有指定到 dependent package
  38.        的话(like -r),那些也会生 package

  39.     -P 用 package,会去扫 PKG_PATH,找不到就 pkg_fetch 再不然就用 ports

  40.     -PP 坚持只用 package,不用 ports

  41.     -q 不要读 $PREFIX/etc/pkgtools.conf

  42.     -r 把 depends on given ports 的 packages 也一起更新
  43.        比如说 -r png-* 的话,会把需要 png 的 packages 一起更新

  44.     -R 把 given ports 需要的 packages 也一起更新
  45.        比如说 -R kde3 的话,会把其他 kde3-* 的一起更新

  46.     -s 在需要 root 权限的时候执行 sudo

  47.     -S 取代 sudo(8) 的指令,例如 su root -c %s ''

  48.     -u 不要保留旧的 shared libraries

  49.     -v verbose output

  50.     -w 不要在 build 之前 clean

  51.     -W 不要在 install 之後 clean

  52.     -x 排除 match GLOB 的 packages
  53.        例如 portupgrade -rx XFree86 XFree86 会更新所有 depends on XFree86 的
  54.        packages,却不更新 XFree86 本身

  55.     -y 所有问题通通回答 yes (implies -v, negates -n)

  56. portuprade 流程

  57.     1. 没给 -P 的话,跳到 4。否则 search PKG_PATH 看看有没有新的 packages,
  58.        有找到的话,跳到 5。

  59.     2. 用 pkg_fetch(1) 去抓新的 packages 下来,如果是最新的话跳到 5。
  60.        如果给 -PP 但抓下来的 packages 比安装的新(不一定是最新)的话,
  61.        也跳到 5。

  62.     3. 如果给 -PP 的话,停止作业。

  63.     4. build given package 相对应的 port。

  64.     5. 修 depends on given package 那些 packages 的 dependency。

  65.     6. save given package 的 +REQUIRED_BY。

  66.     7. 把 given package 用 pkg_create(1) 备份下来。

  67.     8. 把 given package 的 registration 档案备份下来。

  68.     9. 强迫 uninstall given package,并保留 share libraries,
  69.        除非有指定 -u。

  70.     10. 安装新的 port or package(看是 cond. 1 or 2 or 3)。

  71.     11. 如果安装失败,
  72.         11.1. 把 7. 备份的档案还原。
  73.         11.2. 把 8. 备份的 registration 档案还原。
  74.         11.3. 把 5. 修过的 dependency 还原。

  75.     12. 把 obsoleted 的 dependencies 移除。

  76.     13. 把 6. 备份的 +REQUIRED_BY 复原。.

  77.     14. 执行 portsclean -L 把重复的 share libraries 砍掉,
  78.         并且保留旧的 share libraries,详情请见 portsclean(1)。

  79. 一些例子

  80.     o. portupgrade glib
  81.        更新 glib

  82.     o. portupgrade XFree86 -m '-DWANT_GGI' Mesa
  83.        传 -DWANT_CGI 给 Mesa。
  84.        当 portupgrade 用在很多 packages 上面时,他会依照 dependency order 处理。

  85.     o. portupgrade -L /var/tmp/log. '*gnome*'
  86.        更新所有 GNOME packages,并 log 在 /var/tmp/log.<category>::<portname>

  87.     o. portupgrade -Rpv sawfish
  88.        更新 sawfish 和所有 sawfish 需要的 packages

  89.     o. portupgrade -ri glib
  90.        更新 glib 和所有需要 glib 的 packages

  91.     o. portupgrade -rfx sdl sdl
  92.        更新/重安装所有需要 sdl 的 packages 但不包含 sdl

  93.     o. portupgrade -f '<2001-09-20'
  94.        更新/重安装所有在 2001/09/20 前安装的 packages

  95.     o. portupgrade -fr png -x '>=png'
  96.        更新/重安装所有在 png 前安装且需要 png 的 packages

  97.     o. portupgrade -aFR
  98.        去 fetch 更新所有 packages 需要用的 distfiles

  99.     o. portupgrade -o print/ghostscript-afpl ghostscript-gnu
  100.        用 print/ghostscript-afpl 换掉 ghostscript-gnu

  101.     o. portupgrade -P glib
  102.        用 package 更新 glib

  103.     o. env PKG_PATH=/mnt/cdrom/packages/All portupgrade -anPP
  104.        用 CDROM 里面的 packages 来进行大量更新
  105.        如果不想让 portupgrade 去 fetch 不在 CDROM 的 packages 的话,
  106.        把 PKG_FETCH 设定为 /bin/false

  107. 小技巧

  108.     o. 在进行 binary uprage 後,请用 pkgdb -F 修一下 dependencies。

  109.     o. 透过网路进行大量更新 portupgrade -aPPR。

  110.     o. 如果怀疑 portupgrade 倒底会干哪些事情的时候,请用 -n 和 -i,
  111.        也可以用 pkg_glob(1) 来看 glob patterns 到底会展开成什麽。

  112.     o. 为了让更新更正确、更有效率,请爱有事没事跑一跑 pkgdb -F,
  113.        每次 CVSup 更新完 ports tree 之後,portsdb -Uu,以确保 INDEX 跟 ports
  114.        tree 同步。

  115.     o. 可以用 portversion(1) 取代 pkg_version(1) 来检查可以 upgrade 的
  116.        packages。portversion(1) 用法跟他一样,而且比较快。
  117.        portversion -c 可以输出给 portupgrade(1) 更新用的 script。

  118.     o. 可以用 pkg_deinstall(1) 取代 pkg_delete(1) 来移除 packages。
  119.        这其实是 pkg_delete(1) 的 wrapper,不过有些更好的特性,
  120.        比如说 recursive deinstall 或者保留 shared library。

  121.     o. 可以用 portsclean(1) 清理不需要的 distfiles、working、
  122.        旧的 shared libraries。

  123.     o. 可以用 portcvsweb(1) 来看看一个 port 的 change。

  124. 环境变数

  125.     这边列出来 default 的值,不多做解释。

  126.     PKG_DBDIR           /var/db/pkg
  127.     PORTSDIR            /usr/ports
  128.     PORTS_INDEX         $PORTSDIR/INDEX
  129.     PORTS_DBDIR         $PORTSDIR
  130.     PKG_TMPDIR
  131.     TMPDIR              /var/tmp
  132.     PACKAGES            $PORTSDIR/packages
  133.     PKG_PATH            $PACKAGES/All
  134.     PKG_SUFX            定义在 bsd.port.mk 或 /etc/make.conf
  135.     PKGTOOLS_CONF       $PREFIX/etc/pkgtools.conf
  136.     PORTUPGRADE         预设 portupgrade 的选项

  137. SEE ALSO
  138.      pkg_add(1), pkg_deinstall(1), pkg_delete(1), pkg_glob(1), pkg_info(1),
  139.      pkg_sort(1), pkg_update(1), pkgdb(1), portcvsweb(1), ports_glob(1),
  140.      portsclean(1), portsdb(1), portversion(1), pkgtools.conf(5), ports(7)

  141. BUGS

  142.     SUSP (^Z) 在 build/install 过程中没有用。

  143.     有时候 database 会烂掉导致 pkgtools segmentation fault,这样子的话,
  144.     用 pkgdb -fu 重新 build database 问题就可以解决。

复制代码

[ 本帖最后由 vcynosure 于 2005-11-30 11:33 编辑 ]

论坛徽章:
1
寅虎
日期:2013-09-29 23:15:15
2 [报告]
发表于 2005-11-30 11:31 |只看该作者
不错.

论坛徽章:
0
3 [报告]
发表于 2006-06-12 10:10 |只看该作者
如何安装portupgrade啊??
我看一些帖子都是在/usr/ports/sysutils/portupgrade下直接make install就可以了
但我没有这个文件夹啊

论坛徽章:
1
寅虎
日期:2013-09-29 23:15:15
4 [报告]
发表于 2006-06-12 10:13 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP