首页    
>>More
Applying patches in OpenBSD

     [OpenBSD] -  [OpenBSD patch ]
2007-09-19

昨晚又在家里安装了 OpenBSD,想把家中闲置的 PIII 450 主机利用起来,作为 ADSL 拨号网关外加 PF 防火墙(之前这台机器是安装 FreeBSD 的)。OpenBSD 最新 release 为 4.1,查看了一下 i386 的cd41.iso 只有 5000KB,心想就这 5M 不到的文件就刻一张盘实在是不情愿(木办法,穷人一个),家中恰好有一张一年前刻的 3.9 引导盘一张。

安装过程如下 3.9 --> 4.0 --> 4.1 (官方说法是不能跨版本升级,注意每次升级后要手工进行 final steps,具体过程略)。

总体感觉:OpenBSD 是我遇到过安装最简单的一个系统了。

按照安装的困难程度(只是我的个人感觉)
OpenBSD < FreeBSD < ESX server 3.x < Gentoo < LFS

下面简要描述一下如何为 OpenBSD 安装 patch。

需要明确一点的是:OpenBSD 也是需要安装 patch 以保持安全和可靠的。

当一个 critial bug 被发现的时候,应对的 fix 会被提交到 -current source tree 中,相应的 patches 会被发布到所支持的 release 中。这些 patches 可以通过 http://www.openbsd.org/errata.html 查看,分为 common errata 和 errata,前者指影响所有平台,后者则不是所有的平台。

利用 patched code 升级系统的三种方法:

1. Upgrade your system to -current. 所有的 fix 都会应用到 -current 中,但是不是适合所有人。
2. Update your system to -stable. 通过使用合适的 -stable branch 下载并更新 soure tree,然后重新编译 kernel 和 userland files。这种方式最 easy,但是相当耗时(因为整个系统都重新被编译),如果网络带宽过低,那就更惨啦,进行整个 source checkout 的时候可是相当的长啊。
3. Patch, compile and install individual impacted files. 正好和第二种方式相反,最难但节省时间和带宽。没有一个通用的方法,也就是每次都会不同。Sometimes you must patch, recompile and install one application, other times, you might have to recompile entire sections of the tree if the problem is in a library file.

下面以第 3 种方式举例:

Patch 其实只是"Unified diffs"方式的 txt 文件(不是二进制文件),包含和原 source code 的不同之处的说明(也就是哪些地方需要修正)。

具体步骤,参见:http://www.openbsd.org/faq/faq10.html#Patches
1. 在对系统进行 patch 之前,要确保具体当前 release 的 source code,
2. 下载 patch 的 txt 文件,这时可以先大概查看一下这个 patch 的用法,一般 patch 文件中都会有简要说明的。
3. 按照说明安装 patch 即可。注意查看最后的提示,如果为 successful 则表示成功。

需要注意的地方:安装 patch 时需要查看这个 patch 和你的系统相关,如一个和 tape 硬件相关的 patch,如果你根本没有 tape 硬件,就没必要打这个 patch。但是有些 patch 又是具有承接性的,即以后别的 patch 会需要目前这个看似不相关的 patch 才能成功安装。这就又有了一个准则:如果不确定某个 patch 是否需要,那就能打的就都打吧。哈哈。

原文:Patches that are irrelevant to your particular system need not be applied -- usually. For example, if you did not have a tape drive on your system, you would not benefit from the above patch. However, patches are assumed to be applied "in order" -- it is possible that a later patch is dependent upon an earlier one. Be aware of this if you elect to "pick and choose" which patches you apply, and if in doubt, apply them all, in order.

在成功 patch 系统之后,就可以继续执行定制内核了。

Simpleman 发表于 11:32  |  阅读全文  |  评论_0  |  引用_0
分页共1页 1