如何更新FreeBSD系统
上一篇 / 下一篇 2007-07-22 23:48:15 / 个人分类:freebsd
更新FreeBSD系统
!f7?H5d(vo\:r0本文主要介绍如何更新已经装好的FreeBSD系统,包括cvsup的使用,简单的make buildworld/kernel/installworld,以及portaudit和portupgade的简单使用。热血互动门户N2j0\:X)qss5|
热血互动门户:[t.r3O)p1mUfucS9Z
如何更新FreeBSD系统
{*ZiC(\sk#{qD M}-{0cvsup介绍
4t/B3[!d O e-A~+e0cvsup是John Polstra所编写的用于方便地分发cvs代码库的应用程序。许多BSD系统都采用cvsup来同步代码。本章将介绍 cvsup 的安装和基本使用。
.L2@3e6p_bE0热血互动门户N'w1]5\5nVp^4d\fX
cvsup概述热血互动门户v*D2pRrqaW
cvs采用一种称作rcs(一种更古老的版本控制系统)格式的文件来保存代码的变更。rcs文件的名字通常是foo.c,v。这些文件中包含了文件的*所有*版本、修改的内容,等等。
&L)t,I c`sm0热血互动门户#t)NI"K(@{
cvsup能够高效率地分发这些修改,它包含两种运行模式——checkout模式和镜像模式。前者通常用于一般的客户机更新系统。热血互动门户G~IaAC*n}
热血互动门户4j[5c~5z*wWo
cvsup是一种用于分发cvs代码库的工具,它和cvs是两回事。
1`K&[A6aqrpF0热血互动门户$Q w+H pV+C&b~;AD
FreeBSD中的版本分支(branch)热血互动门户 |_H E:iY
FreeBSD的开发过程中,会在代码库中使用不同的branch和tag来标记版本。这里解释如下:
P4~ Jf%jCa'P7e0
$K8fxDzu$W0对于src,RELENG_n代表n.x的-STABLE版本,目前,最新的STABLE版本是4.x-STABLE,表示为RELENG_4;HEAD(.)表示最新的-CURRENT版本,目前这个版本是5.2-CURRENT。此外,还有一类分支,类似RELENG_y_z表示y.z.x-RELEASE-pxx称为“安全分支”。它通常只包括自上次RELEASE之后的涉及安全和对可靠性有严重影响的版本。例如,RELENG_4_8表示4.8-RELEASE的最新的“安全”版本。RELEASE版本的维护时间通常是1-2年,目前,FreeBSD官方支持的版本是4.8-RELEASE(RELENG_4_8)、4.9-RELEASE(RELENG_4_9)、4.10-RELEASE(RELENG_4_10)、5.2/5.2.1-RELEASE(RELENG_5_2)。
&x~%fpLpi0
$zb4^#}H$Sv`0ports没有严格的分支概念,所有版本的FreeBSD都使用同一版本的ports,即其HEAD(.)。热血互动门户cc:r8hF-sg zZ{
热血互动门户:H;Xkbs}H
cvsup的collection
Lg[a2x}k.@0有时,cvs代码库本身可能包含了太多的东西,而我们只希望拿到其中的一部分。管理员可以配置被称作“collection”的集合来包括代码库中的某一部分,例如,对于FreeBSD来说,常用的collection包括src-all(基本系统,包括内核以及全部userland的程序的源代码)、src-sys(仅限于内核的部分)、ports-all(全部ports collection)等等。热血互动门户*W:i q_5Th.q
热血互动门户}_)BtGG
cvsup的支持文件热血互动门户l1{rJ!j9L
为了能够高效地完成更新,cvsup需要采用少量(每个collection一个)文件统一地记录更新的文件。这些文件包括了文件的修改时间、校验和等信息,cvsup的检测线程会向服务器提交这些数据,并完成更新。
G6x.? CQp_p'q0
6d7C+nM#y+C#Y0supfile
)US7g,`8?G#z0为了开始使用cvsup,首先需要一个supfile来描述需要同步什么。热血互动门户;G)oeEN J8~
['N9Q(p]0*default host=cvsup2.FreeBSDChina.org # cvsup服务器
SV*M#nU0*default base=/var/db # cvsup支持文件的位置
1cQSwS6}5{0*default prefix=/usr # 文件放到哪里
.x4vZ4nj Z0*default release=cvs tag=. # FreeBSD-CURRENT(branch=.,即HEAD)热血互动门户-u$O CS/J_2O x
*default delete use-rel-suffix # 删除cvsup创建的,业已在cvs中删除掉的文件
\} H\&J0src-all # 全部FreeBSD源代码热血互动门户:Z'z+X3sP1m&Z
ports-all tag=. # 全部的ports。这里的tag=.用于取代默认的branch。如果使用RELENG_4请务必保留tag=. !!
o9pa2s@ x%P[hSr0使用cvsup热血互动门户E@ l,H#j8`
使用cvsup非常简单:热血互动门户OS,e }XN7v
热血互动门户8Y`_ ADz4a8j-b
cvsup -gL2 stable-supfile # stable-supfile是我的supfile的名字热血互动门户_)ZI]mlqN2i|
热血互动门户.A*x:P ^ F1GF
-gL2的具体意义请参考cvsup(1)。
p|F'G[Y{$h1n#K G0热血互动门户S f"Y~#g*g
安装建议
z{"r$OC0本章将给出安装FreeBSD的建议。
p9} |-j!q7jmKn0
3\&?:YH&D%L~,m0安装系统时使用最小化安装
(X+YG/d(k `0最小化安装(minimal)包括了运行FreeBSD所需要的全部文件。这包括完整的编译系统、安全系统(ssh, openssl等等),而不包括类似xorg这样的累赘。需要的时候,类似KDE这样的程序可以用pkg_add -r安装,具体请参考pkg_add(1)。热血互动门户[@ o} calu"K
热血互动门户8L"I:eO{$v+e
只安装源代码,而不安装ports文件热血互动门户N |)T~^wo_
通常运行的系统中的FreeBSD是RELEASE,并按对应的安全分支跟进,因此,代码不会改动很多。但ports tree的修改则几乎是每天都在活跃地进行。安装ports collection的结果是系统将不得不大量地翻新文件,测试证明,这样做要比直接cvsup得到整个ports tree慢。热血互动门户M3]%[-j3} l#N
热血互动门户9Z,Fr$GMC
安装disc3或手工安装cvsup-without-gui
&_NRQ3qY5d0这样做的好处非常明显。cvsup的图形界面很少用到,而默认的(disc1)附带的版本则需要x11,这在很多时候是不需要的。我通常并不安装它,相反,在安装完成之后,以root身份执行下面的命令:热血互动门户#l`9rEGss
热血互动门户N},ahe2C
pkg_add -r cvsup-without-gui && rehash热血互动门户Ebye1Z+b7eQ
热血互动门户|y#GSR#Q
有时,您使用的FreeBSD可能太旧,此时,可以从pointyhat上下载,网址是:热血互动门户DJ$K;Q$K @
热血互动门户o+J"l}Q}2XB X+S2u+|
ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-4-stable/Latest/cvsup-without-gui.tgz
$z7jF ~O1IG0ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-5-current/Latest/cvsup-without-gui.tbz
m!F"pL/q*C0分别对应4.x和5.x版本。下载之后,用pkg_add安装即可。热血互动门户"E+G/A%YA|T
)b5_^{m(P-WDq?2e0你说那么多,我就想知道怎么更新系统
]mTwj0?m F0cvsup
?? i{i;Ty0初次安装cvsup热血互动门户$SS R$d6a)k'zt
pkg_delete cvsup\* && pkg_add -r cvsup-without-gui && rehash 警告:上述命令将删除任何已经存在的cvsup安装。热血互动门户zWVLU DW e[
热血互动门户3V*{+u5kk!@
建立一个合适的supfile
vYe*A&]J[y't0如果只更新ports,可以直接使用下面的supfile
g6r+jb{e0热血互动门户(oA[#}qiV
*default host=cvsup2.FreeBSDChina.org
"h3h%G_WG x0*default base=/var/db
Cl`/tRaZp0*default prefix=/usr热血互动门户:tX$GLdq g5H\
*default release=cvs tag=.
:J{2X$?Jc%~R0*default delete use-rel-suffix
L9b$P `2RvB E0ports-all
KPkNO$\5ij0如果只更新src,可以直接使用下面的supfile
7ex_2QG0
9SH'bF2K{ |0*default host=cvsup2.FreeBSDChina.org
N"yV f){ eKk0*default base=/var/db
4?;gLsSc7E0*default prefix=/usr
6KM)@/Y+XK5F{N0*default release=cvs tag= # 希望使用的branch名字,例如RELENG_4_10, RELENG_4_8, RELENG_5_2
d%w)_.r!s4}(~B9xL0*default delete use-rel-suffix热血互动门户4g.sK2D-@:Od
src-all
GE4xpzU+[0假如想同时更新两个,那就改下面的supfile:热血互动门户(ld]W;roE
热血互动门户b8]g!`)sxR
*default host=cvsup2.FreeBSDChina.org
c:Pp$w!b$Z*h7QG0G0*default base=/var/db
7M&c]6@H)WL0*default prefix=/usr热血互动门户8}/Kl)QHm(Qrp-s
*default release=cvs tag= # 希望使用的branch名字,例如RELENG_4_10, RELENG_4_8, RELENG_5_2热血互动门户bN Agh0t6Z)t
*default delete use-rel-suffix热血互动门户'u3[ v v/Q u[0zg
src-all
q,s8UY;pn^ u0ports-all tag=.
!Z.vx(`0x-|/\3k0运行cvsup热血互动门户0X4`D4s J%wG+V Lr&r?t
将supfile保存成一个文件,例如,my-supfile,然后执行: cvsup -gL2 my-supfile热血互动门户o X6jAq&xb
/g^E7C1q2PPT*x0升级基本系统
+ui@ e n c(A7w5sgB5k0同步了src-all之后,如果发现自己的系统的patch版本和/usr/src/sys/conf/newvers.conf中的不同,应考虑立即升级。由于采用的是同一版本的安全分支,可以非常大胆地用make buildworld kernel installworld升级;如果RELEASE不同,请务必阅读/usr/src/UPDATING;如果用的是STABLE或CURRENT……那个,你还需要这个作弊条么……
Cb;VcMC@ wp0
;z+l MN,CT0在/usr/src中执行下面的命令: make buildworld kernel installworld热血互动门户7FF9{.r#u8k+Y+H
UgVv+`0然后重新启动。如果你定制了内核,例如它的配置名为MYKERNEL,则: make KERNCONF=MYKERNEL buildworld kernel installworld
s YoN8@0热血互动门户W$PE&Yd ]$~2m5C7Qyn
关于ports的升级热血互动门户!YV7\-F8@9NH
Best Practice: 用portaudit监控系统的ports漏洞情况热血互动门户jH0TQm0Une(X:u
所有的事情都会由portaudit搞定,你要做的只是安装portaudit和收信,首先同步ports tree,然后
A4l*f#wd*wl;pKuh0热血互动门户BW4ja*d&U
!f7?H5d(vo\:r0本文主要介绍如何更新已经装好的FreeBSD系统,包括cvsup的使用,简单的make buildworld/kernel/installworld,以及portaudit和portupgade的简单使用。热血互动门户N2j0\:X)qss5|
热血互动门户:[t.r3O)p1mUfucS9Z
如何更新FreeBSD系统
{*ZiC(\sk#{qD M}-{0cvsup介绍
4t/B3[!d O e-A~+e0cvsup是John Polstra所编写的用于方便地分发cvs代码库的应用程序。许多BSD系统都采用cvsup来同步代码。本章将介绍 cvsup 的安装和基本使用。
.L2@3e6p_bE0热血互动门户N'w1]5\5nVp^4d\fX
cvsup概述热血互动门户v*D2pRrqaW
cvs采用一种称作rcs(一种更古老的版本控制系统)格式的文件来保存代码的变更。rcs文件的名字通常是foo.c,v。这些文件中包含了文件的*所有*版本、修改的内容,等等。
&L)t,I c`sm0热血互动门户#t)NI"K(@{
cvsup能够高效率地分发这些修改,它包含两种运行模式——checkout模式和镜像模式。前者通常用于一般的客户机更新系统。热血互动门户G~IaAC*n}
热血互动门户4j[5c~5z*wWo
cvsup是一种用于分发cvs代码库的工具,它和cvs是两回事。
1`K&[A6aqrpF0热血互动门户$Q w+H pV+C&b~;AD
FreeBSD中的版本分支(branch)热血互动门户 |_H E:iY
FreeBSD的开发过程中,会在代码库中使用不同的branch和tag来标记版本。这里解释如下:
P4~ Jf%jCa'P7e0
$K8fxDzu$W0对于src,RELENG_n代表n.x的-STABLE版本,目前,最新的STABLE版本是4.x-STABLE,表示为RELENG_4;HEAD(.)表示最新的-CURRENT版本,目前这个版本是5.2-CURRENT。此外,还有一类分支,类似RELENG_y_z表示y.z.x-RELEASE-pxx称为“安全分支”。它通常只包括自上次RELEASE之后的涉及安全和对可靠性有严重影响的版本。例如,RELENG_4_8表示4.8-RELEASE的最新的“安全”版本。RELEASE版本的维护时间通常是1-2年,目前,FreeBSD官方支持的版本是4.8-RELEASE(RELENG_4_8)、4.9-RELEASE(RELENG_4_9)、4.10-RELEASE(RELENG_4_10)、5.2/5.2.1-RELEASE(RELENG_5_2)。
&x~%fpLpi0
$zb4^#}H$Sv`0ports没有严格的分支概念,所有版本的FreeBSD都使用同一版本的ports,即其HEAD(.)。热血互动门户cc:r8hF-sg zZ{
热血互动门户:H;Xkbs}H
cvsup的collection
Lg[a2x}k.@0有时,cvs代码库本身可能包含了太多的东西,而我们只希望拿到其中的一部分。管理员可以配置被称作“collection”的集合来包括代码库中的某一部分,例如,对于FreeBSD来说,常用的collection包括src-all(基本系统,包括内核以及全部userland的程序的源代码)、src-sys(仅限于内核的部分)、ports-all(全部ports collection)等等。热血互动门户*W:i q_5Th.q
热血互动门户}_)BtGG
cvsup的支持文件热血互动门户l1{rJ!j9L
为了能够高效地完成更新,cvsup需要采用少量(每个collection一个)文件统一地记录更新的文件。这些文件包括了文件的修改时间、校验和等信息,cvsup的检测线程会向服务器提交这些数据,并完成更新。
G6x.? CQp_p'q0
6d7C+nM#y+C#Y0supfile
)US7g,`8?G#z0为了开始使用cvsup,首先需要一个supfile来描述需要同步什么。热血互动门户;G)oeEN J8~
['N9Q(p]0*default host=cvsup2.FreeBSDChina.org # cvsup服务器
SV*M#nU0*default base=/var/db # cvsup支持文件的位置
1cQSwS6}5{0*default prefix=/usr # 文件放到哪里
.x4vZ4nj Z0*default release=cvs tag=. # FreeBSD-CURRENT(branch=.,即HEAD)热血互动门户-u$O CS/J_2O x
*default delete use-rel-suffix # 删除cvsup创建的,业已在cvs中删除掉的文件
\} H\&J0src-all # 全部FreeBSD源代码热血互动门户:Z'z+X3sP1m&Z
ports-all tag=. # 全部的ports。这里的tag=.用于取代默认的branch。如果使用RELENG_4请务必保留tag=. !!
o9pa2s@ x%P[hSr0使用cvsup热血互动门户E@ l,H#j8`
使用cvsup非常简单:热血互动门户OS,e }XN7v
热血互动门户8Y`_ ADz4a8j-b
cvsup -gL2 stable-supfile # stable-supfile是我的supfile的名字热血互动门户_)ZI]mlqN2i|
热血互动门户.A*x:P ^ F1GF
-gL2的具体意义请参考cvsup(1)。
p|F'G[Y{$h1n#K G0热血互动门户S f"Y~#g*g
安装建议
z{"r$OC0本章将给出安装FreeBSD的建议。
p9} |-j!q7jmKn0
3\&?:YH&D%L~,m0安装系统时使用最小化安装
(X+YG/d(k `0最小化安装(minimal)包括了运行FreeBSD所需要的全部文件。这包括完整的编译系统、安全系统(ssh, openssl等等),而不包括类似xorg这样的累赘。需要的时候,类似KDE这样的程序可以用pkg_add -r安装,具体请参考pkg_add(1)。热血互动门户[@ o} calu"K
热血互动门户8L"I:eO{$v+e
只安装源代码,而不安装ports文件热血互动门户N |)T~^wo_
通常运行的系统中的FreeBSD是RELEASE,并按对应的安全分支跟进,因此,代码不会改动很多。但ports tree的修改则几乎是每天都在活跃地进行。安装ports collection的结果是系统将不得不大量地翻新文件,测试证明,这样做要比直接cvsup得到整个ports tree慢。热血互动门户M3]%[-j3} l#N
热血互动门户9Z,Fr$GMC
安装disc3或手工安装cvsup-without-gui
&_NRQ3qY5d0这样做的好处非常明显。cvsup的图形界面很少用到,而默认的(disc1)附带的版本则需要x11,这在很多时候是不需要的。我通常并不安装它,相反,在安装完成之后,以root身份执行下面的命令:热血互动门户#l`9rEGss
热血互动门户N},ahe2C
pkg_add -r cvsup-without-gui && rehash热血互动门户Ebye1Z+b7eQ
热血互动门户|y#GSR#Q
有时,您使用的FreeBSD可能太旧,此时,可以从pointyhat上下载,网址是:热血互动门户DJ$K;Q$K @
热血互动门户o+J"l}Q}2XB X+S2u+|
ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-4-stable/Latest/cvsup-without-gui.tgz
$z7jF ~O1IG0ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-5-current/Latest/cvsup-without-gui.tbz
m!F"pL/q*C0分别对应4.x和5.x版本。下载之后,用pkg_add安装即可。热血互动门户"E+G/A%YA|T
)b5_^{m(P-WDq?2e0你说那么多,我就想知道怎么更新系统
]mTwj0?m F0cvsup
?? i{i;Ty0初次安装cvsup热血互动门户$SS R$d6a)k'zt
pkg_delete cvsup\* && pkg_add -r cvsup-without-gui && rehash 警告:上述命令将删除任何已经存在的cvsup安装。热血互动门户zWVLU DW e[
热血互动门户3V*{+u5kk!@
建立一个合适的supfile
vYe*A&]J[y't0如果只更新ports,可以直接使用下面的supfile
g6r+jb{e0热血互动门户(oA[#}qiV
*default host=cvsup2.FreeBSDChina.org
"h3h%G_WG x0*default base=/var/db
Cl`/tRaZp0*default prefix=/usr热血互动门户:tX$GLdq g5H\
*default release=cvs tag=.
:J{2X$?Jc%~R0*default delete use-rel-suffix
L9b$P `2RvB E0ports-all
KPkNO$\5ij0如果只更新src,可以直接使用下面的supfile
7ex_2QG0
9SH'bF2K{ |0*default host=cvsup2.FreeBSDChina.org
N"yV f){ eKk0*default base=/var/db
4?;gLsSc7E0*default prefix=/usr
6KM)@/Y+XK5F{N0*default release=cvs tag= # 希望使用的branch名字,例如RELENG_4_10, RELENG_4_8, RELENG_5_2
d%w)_.r!s4}(~B9xL0*default delete use-rel-suffix热血互动门户4g.sK2D-@:Od
src-all
GE4xpzU+[0假如想同时更新两个,那就改下面的supfile:热血互动门户(ld]W;roE
热血互动门户b8]g!`)sxR
*default host=cvsup2.FreeBSDChina.org
c:Pp$w!b$Z*h7QG0G0*default base=/var/db
7M&c]6@H)WL0*default prefix=/usr热血互动门户8}/Kl)QHm(Qrp-s
*default release=cvs tag= # 希望使用的branch名字,例如RELENG_4_10, RELENG_4_8, RELENG_5_2热血互动门户bN Agh0t6Z)t
*default delete use-rel-suffix热血互动门户'u3[ v v/Q u[0zg
src-all
q,s8UY;pn^ u0ports-all tag=.
!Z.vx(`0x-|/\3k0运行cvsup热血互动门户0X4`D4s J%wG+V Lr&r?t
将supfile保存成一个文件,例如,my-supfile,然后执行: cvsup -gL2 my-supfile热血互动门户o X6jAq&xb
/g^E7C1q2PPT*x0升级基本系统
+ui@ e n c(A7w5sgB5k0同步了src-all之后,如果发现自己的系统的patch版本和/usr/src/sys/conf/newvers.conf中的不同,应考虑立即升级。由于采用的是同一版本的安全分支,可以非常大胆地用make buildworld kernel installworld升级;如果RELEASE不同,请务必阅读/usr/src/UPDATING;如果用的是STABLE或CURRENT……那个,你还需要这个作弊条么……
Cb;VcMC@ wp0
;z+l MN,CT0在/usr/src中执行下面的命令: make buildworld kernel installworld热血互动门户7FF9{.r#u8k+Y+H
UgVv+`0然后重新启动。如果你定制了内核,例如它的配置名为MYKERNEL,则: make KERNCONF=MYKERNEL buildworld kernel installworld
s YoN8@0热血互动门户W$PE&Yd ]$~2m5C7Qyn
关于ports的升级热血互动门户!YV7\-F8@9NH
Best Practice: 用portaudit监控系统的ports漏洞情况热血互动门户jH0TQm0Une(X:u
所有的事情都会由portaudit搞定,你要做的只是安装portaudit和收信,首先同步ports tree,然后
A4l*f#wd*wl;pKuh0热血互动门户BW4ja*d&U