[3.4
-> 3.5] | [3.5 ->
3.6] | [3.6 ->
3.7] | [3.7 ->
3.8] | [3.8 ->
3.9] | [3.9 ->
4.0] |
[4.0 ->
4.1] | [4.1 ->
4.2] | [4.2 ->
4.3] | [4.3 ->
4.4] | [FAQ Index]
强烈建议您在尝试操作前通篇阅读并完全理解此文档的内容。 如果您在很重要或远程的主机上执行此操作, 推荐您先在本地同样的系统上测试并校验成功后再尝试在重要或远程主机上进行操作。
升级是一种将你的OpenBSD系统提升为最新版本的方便途径。 然而, 升级的结果并非就是删除原系统-安装新系统。 在升级过程中某些旧的库文件不会被删除, 因为一些旧的应用程序可能会需要这些旧的库文件, 升级时这些旧的应用程序未必一定就会被升级。如果你确实想删除这些旧文件, 也许你最好的方式是全新安装一个新版本。
目录:
列出支持的介质类型, 你现在应该使用:ifconfig interface scan
ifconfig interface media
i810(4) 驱动完全被 intel(4) 驱动取代, 所以你的 xorg.conf(5) 文件应该进行相应地更新。
一些现有的xserver模块和驱动已经被弃用。请确保 X -configure 不去配置这些废弃的模块, 在您升级前我们将指导您删除 /usr/X11R6/lib/modules/ 中的这些内容。
谁应该改用sysmerge(8):
正在运行改动很大的系统的用户或者最初安装的不是上一个发行版的用户(例如, 两个发行版之间的一个快照版), 那些将系统升级为快照版的用户或者过去没有认真升级系统的用户将发现使用sysmerge大大优于使用补丁, 因为它不是按照开发人员的猜测而是根据你系统的实际情况来升级它。它可以使用户在升级过程中进行更多的参与和控制。
谁不希望使用sysmerge(8):
有大量机器需要升级的用户以及那些版本仍停留在上一个发行版或稳定版的用户可能会感觉使用补丁文件系统升级速度会更快。
注意尽管 sysmerge 可以处理 /etc, /dev, /root和/var 的所有变化, 我们仍然强烈地推荐您在将升级交给sysmerge前手动做一些步骤, 因为这样可以节约时间和降低用户误操作的风险。 特别强调一下, 我们强烈建议您不要使用 sysmerge 来升级你的 user 和 group 帐号, 因为这极有可能因误操作删除你所有的用户基本设置, 还可能将root密码设置为空, 导致无法远程登录进行修复。
如果你安装了X, 请在升级前务必执行下列步骤:
然后, 在按照下面描述的 最终步骤 完成升级过程。rm -rf /usr/X11R6/lib/modules/*
从内核启动的一个简单方法是将4.5版本的 bsd.rd 文件放到你的启动驱动器上, 然后指示启动引导器用这个新的bsd.rd 文件启动。在amd64和i386平台上, 你只需在出现 boot> 提示符时输入 "boot bsd.rd" 。
有时候用户在完成升级过程时无法采用常规的升级方式。最常见的例子是一台远程主机, 你访问系统控制台有困难。用户可以小心地参照如下步骤进行:
(如果你使用多处理器内核, 用export RELEASEPATH=/usr/rel # where you put the files cd ${RELEASEPATH} rm /obsd ; ln /bsd /obsd && cp bsd /nbsd && mv /nbsd /bsd cp bsd.rd bsd.mp /
说明:拷贝原有内核的额外步骤: 这是用来确保发生断电或系统崩溃时磁盘上还保留一个有效的内核拷贝。
rm -rf /usr/X11R6/lib/modules/*
cp /sbin/reboot /sbin/oreboot
并非需要为应用程序安装所有的组件, 然而, 如果你原来已经安装了一个组件, 现在你就必须安装它的新版本对其升级。tar -C / -xzphf comp45.tgz tar -C / -xzphf game45.tgz tar -C / -xzphf man45.tgz tar -C / -xzphf misc45.tgz tar -C / -xzphf xbase45.tgz tar -C / -xzphf xfont45.tgz tar -C / -xzphf xserv45.tgz tar -C / -xzphf xshare45.tgz tar -C / -xzphf base45.tgz # 最后安装! /sbin/oreboot
重申一下, 位于 /etc 的文件会在下面单独处理, 所以etc45.tgz和xetc45.tgz没有在这里解包。
cd /dev ./MAKEDEV all
useradd -u94 -g=uid -c"Bluetooth Daemon" -d/var/empty -s/sbin/nologin _btd
你需要提取 etc45.tgz 中的文件到到一个临时的位置:
这些文件将按照打包前的样式从etc45.tgz中提取出来:export RELEASEPATH=/usr/rel tar -C /tmp -xzphf ${RELEASEPATH}/etc45.tgz
netstart rc rc.conf services afs/CellServDB mail/README mail/submit.cf mtree/4.4BSD.dist mtree/special /var/named/etc/root.hint /var/named/etc/named*
注意很有可能以前你在本机修改了这些文件(老版本的), 如果你的确修改了它们, 就不要拷贝这些提取的文件, 而应该使用 sysmerge(8) process 代替。 下面的拷贝/粘贴行用来拷贝这些文件, 这里假设你将etc45.tgz解包到上面推荐的位置:
cd /tmp/etc cp netstart rc rc.conf services /etc cp afs/CellServDB /etc/afs cp mtree/* /etc/mtree cp mail/README mail/submit.cf /etc/mail cp ../var/named/etc/root.hint ../var/named/etc/named-*.conf /var/named/etc cp ../var/named/etc/named.conf /var/named/etc/ # 假设本地原有文件没有更改!
这些文件可能在本地被修改过, 但是应该被升级到4.5。如果你没有修改过这些文件, 你可以直接把新文件拷贝过去, 否则这些修改应该被合并到你的文件中:
这些文件的更改在 这个补丁文件 里面。 你可以以root的身份运行下列命令尝试使用它:/etc/changelist /etc/ftpusers /etc/ksh.kshrc /etc/lynx.cfg /etc/mail/aliases /etc/mail/trusted-users /etc/shells /etc/ssh/ssh_config
cd / patch -C -p0 < upgrade45.patch
这条命令将仅测试这个补丁在你的系统上应用的多好; 要实际应用这个补丁, 就去掉那个 "-C" 选项。 注意, 有可能你的系统定制了文件、或你最近没有更新系统、还有就是你从一个4.4的快照版升级到4.5, 这些情况下系统可能根本无法应用这个补丁, 此时, 你只能手动应用这些变动。 在一个你好不容易建立的系统上最好在应用这个补丁前先测试一下。
下面这些文件已经发生了变化, 你应该检查一下, 但它们不应被直接拷贝或整合 (也就是, 如果你使用了 pf.conf, 看一下建议的修正策略, 然后确定是否采用)。
etc/dhcpd.conf etc/ntpd.conf etc/pf.conf
最后, 使用 newaliases(8) 更新别名数据库, mtree(8) 产生所有新目录:
newaliases mtree -qdef /etc/mtree/4.4BSD.dist -p / -u
新的 sysmerge(8) 工具将比较将要安装的文件和系统上的实际文件, 然后协助你将这些变动整合到你的系统内。注意, sysmerge不像补丁文件, 它不假定你系统的实际情况, 所以你可以用 sysmerge(8) 在版本发展线路图中的更多节点间升级, 例如从一个早期的当-current升级到4.5-release 或从一个 -current 到下一个。.
请在使用前先阅读 sysmerge(8) 的用户手册。 同样也建议您阅读 diff(1), sdiff(1) 甚至应该在继续之前复习一下 more(1) 的用户手册。
假设etc45.tgz和xetc45.tgz这两个文件已经在你的 $RELEASEPATH, 运行:
Sysmerge(8) 将向你显示一个统一的 diff(1), 贯穿你喜爱的 $PAGER (也就是, more(1)) , 并且就多数的更改文件询问你, 如果你希望:# sudo sysmerge -as $RELEASEPATH/etc45.tgz -x $RELEASEPATH/xetc45.tgz
Use 'd' to delete the temporary ./var/www/htdocs/index.html Use 'i' to install the temporary ./var/www/htdocs/index.html Use 'm' to merge the temporary and installed versions Use 'v' to view the diff results again Default is to leave the temporary file to deal with by hand
如果你希望保留你现有的文件, 就删除临时文件, 如果你希望用新版本的文件取代现有的文件, 就安装临时文件。如果你想将两者整合到一起, 选择 'm' 将带你进入sdiff(1), 你可以手动整合这个文件。 默认是先回来, 以后手动处理这个文件。
尽管sysmerge可以将新用户整合到你的系统内, 但是我们不推荐您使用它这样做, 我们还是建议您使用上面的useradd(8) 那行。我们相信这样可以减少出现错误的可能性。(提示: 不要用临时的master.passwd文件覆盖原有的文件!).
Sysmerge(8)将所有被替换的文件存在一个临时目录内, 有点像 /var/tmp/sysmerge.24959/backups, 所有如果你不小心搞乱了什么, 你还有机会复原它。注意使用 daily(8) 命令可从这个目录中清除就文件。
如果你按照不安装内核的说明升级系统, 你已经做完这一步了。 然而, 如果你使用4.5的安装内核, 并且你有一个修改过的4.4内核, 很有可能你需要更改4.5的原有内核。这就像用 config(8)修改一个特定设备那样简单, 或者如果一个选项没有包含在GENERIC内核内它可以包含一个重新编译。在准备重新编译你的内核前请参阅 FAQ 5 - 从源码构建系统。
如果你在你的系统上安装任何packages, 你应该在基本系统完成升级后升级这些packages。 要注意, 不管怎样, 许多packages在升级前和/或升级后需要进一步的设置, 请检查这个些package的升级指南以便获取更详尽的信息。
目前已经知道很多用户在升级下列packages时出现严重问题。 没有在此列出的package并不意味着就可以顺利升级。 你必须自己测试一下你的程序。
package工具支持使用 pkg_add -u 命令就地更新。 例如, 更细你所有的packages, 别忘了把PKG_PATH指向CD或FTP服务器上的4.5版本的的packages目录, 使用类似如下的命令
这里 -u 指定了更新模式, -i 指定了交互模式, 所以 pkg_add 在遇到不明确的地方会提示你输入选择。 请阅读 pkg_add(1) 用户手册以及FAQ中 package管理 那章。# pkg_add -ui -F update -F updatedepends
以往一些Perl的模块在packages中提供, 现在已经包含在基本系统的Perl 5.10.0内, 所以更新完其它的软件包(packages)后, 这些原来包含perl模块的packages必须删除。另外, xcompmgr(1) 现在已经包含在系统组件 xbase45.tgz 内, 不再是一个package, 所以它也必须被删除。
注意: 如果你拷贝和粘贴这些命令到你的系统运行时, 如果你没有安装这些软件会得到很多的错误信息, 但这对系统没有伤害。pkg_delete p5-Archive-Tar p5-Compress-Raw-Zlib p5-Compress-Zlib \ p5-IO-Compress-Base p5-IO-Compress-Zlib p5-IO-Zlib p5-Module-Build \ p5-Module-CoreList p5-Module-Load p5-version p5-Digest-SHA \ p5-Locale-Maketext-Simple p5-Pod-Escapes p5-Pod-Simple \ p5-ExtUtils-ParseXS p5-ExtUtils-CBuilder p5-Module-Pluggable \ p5-Time-Piece p5-Module-Loaded xcompmgr
[3.4
-> 3.5] | [3.5 ->
3.6] | [3.6 ->
3.7] | [3.7 ->
3.8] | [3.8 ->
3.9] | [3.9 ->
4.0] |
[4.0 ->
4.1] | [4.1 ->
4.2] | [4.2 ->
4.3] | [4.3 ->
4.4] | [FAQ Index]