一、solaris补丁介绍
1.1补丁的种类及文件名
solaris的补丁分为两类,一类是Point补丁,另一类是Cluster补丁。
a)Point补丁程序:
这类补丁仅仅是针对某一问题或缺陷而发布的单个补丁程序,solaris7、solaris8、solairs9的Patch一般为*.zip文件solaris2.6一般为.tar.Z或.tar.gz文件,它有如下编号方式:
patch base code-revision num (如110668-04)
前面部分是这个补丁的主版本号(base code),后面部分是此补丁的修订号。两者合起来构成此补丁的Patch-ID。如上例编号为110668-04的补丁,110668为主版本号,04是修订号。此补丁是在110668-03的基础上做了新的修复。有一点需要指出,补丁版本号为110668的一系列补丁都是针对 /usr/sbin/in.telnetd 这一文件的不同问题的修复,110668-04发布以后,sun将不再提供110668-04以前的补丁,如110668-03等。
b) Cluster补丁程序:
cluster补丁仅仅是一系列point补丁的重新包装,并带有自动安装程序。Cluster补丁的命名方式如下:
version_Recommended
如:9_x86_Recommended.zip是针对Solaris 9 for X86的补丁集。
8_Recommended.zip是针对Solaris 8 for Sparc 的补丁集。
每个Cluster补丁都对应一个CLUSTER_README文件,详细描述了该Cluster包含的补丁,以及安装的方法或注意事项。
1.2 关于补丁的其他信息
sun公司对每一版本的solaris都维护了一份Patch Reports,该Patch Reports包含了对应版本solaris所有补丁的描述。Patch Reports每月更新两次,可以从如下地址得到:
http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/patch-access&nav=patchpage
另外sun还维护了一份Sun Alert Patch Report,该文档按产品分类,并且随时更新。从这里可以找到所有sun产品的更新文档及相应补丁,当然也包括的solaris的Sun Alert 文档、Patch ID、简要说明等。Sun Alert Patch Report从这里可以得到:
http://sunsolve.sun.com/pub-cgi/show.pl?target=sunalert_patches
相应的solaris部分可从如下链接得到:
http://sunsolve.sun.com/pub-cgi/show.pl?target=sunalert_patches#Solaris
表格按时间排序,从Category表格中可以知道此问题属于安全缺陷修复还是应用优化。
二、补丁的下载
Cluster补丁可以从如下网址下载:
http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/patch-access&nav=patchpage
同样可以使用FTP协议下载,在sunsolve.sun.com的/pacthroot/clusters可以找到所有的Cluster补丁。下载后为一个*_Recommended.zip文件。该压缩文件包含一份CLUSTER_README文件,建议安装前阅读此文件。
Point补丁由于其分散性不易下载与管理,可以使用Sun Alert Patch Report或Patch Reports来查看补丁情况,这两份文档相应的Patch ID及对应下载地址。另外sun网站提供的Patch Finder 功能也可以使我们在知道Patch ID的情况下很方便的找到该补丁,连接如下:
http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/patch-access&nav=patchpage
同样,利用ftp协议从sunsolve.sun.com的/patchroot/all_unsigned目录下也可以下载指定Patch。
Sun公司建议所有下载的补丁都放到/var/tmp目录下(这也是通常的做法),如此将不会导致补丁安装时出现的任何permission/ownership的问题。
三、solaris补丁的安装和删除
3.1 /var/sadm/patch目录
在/var/sadm/patch目录下,记录了已安装的补丁。
如: # ls /var/sadm/patch
107558-05 107594-04 107630-01 107663-01 107683-01
107696-01 107817-01 107582-01 107612-06 107640-03
建议不要对此目录做任何修改,此目录被破坏后将不能安装或删除任何补丁。
3.2 管理solaris补丁
Solaris提供了两个命令来管理补丁,patchadd和patchrm。这两个命令是在Solaris 2.6版本开始提供的,在2.6以前的版本中,每个补丁包中都提供了一个installpatch 程序和一个backoutpatch 程序来完成补丁的安装和卸载。
patchadd用来安装解压缩后的补丁程序。patchadd通过调用pkgadd 命令来安装补丁。安装补丁前,我们需要将补丁解压到/var/tmp下安装。安装补丁如下命令:
# cd /var/tmp
# patchadd 110668-04
Checking installed patches...
Verifying sufficient filesystem capacity (dry run method)
Installing patch packages...
如果当前目录下有110668-04目录,patchadd将安装此补丁。补丁安装后,系统会备份原文件,以便在以后删除此补丁。如果使用patchadd -d 选项安装补丁,系统将不备份源文件,这意味着你将不能在以后删除此补丁。使用patchadd -p 选项可以检验已安装的patch,例如:
# patchadd -p
Patch: 106793-01 Obsoletes: Requires: Incompatibles:
Packages: SUNWhea
. . .
同样,solaris提供了另一命令来查看已安装的patch:
# showrev -p
Patch: 106793-01 Obsoletes: Requires: Incompatibles:
Packages: SUNWhea
. . .
patchrm 如果因为某种情况你想卸载某一补丁,你可以使用patchrm命令来完成。此命令通过调用 pkgadd来恢复安装补丁前的文件备份来卸载补丁。使用Patch-ID作为patchrm的参数就可以卸载补丁:
# patchrm 106793-01
&