一、Solaris补丁分类及其获取方法
Solaris的补丁分为两类,一类是Point补丁,另一类是Cluster补丁。 Point补丁程序是针对某一问题或缺陷而发布的单个补丁程序,cluster补丁仅仅是一系列point补丁的重新包装,并带有自动安装程序。
可通过以下四个方法获取Solaris 修补程序:
通过http://sunsolve.sun.com Web 站点获得;
要从SunSolve Online 站点的修补程序门户访问修补程序,系统必须连接到互联网并且能够运行Web 浏览器。(需要先注册免费账号并登录)。
使用匿名ftp 将修补程序下载到系统上;
要使用匿名ftp 命令获取修补程序,系统必须连接到互联网并且能够运行ftp 命令。
使用Sun Update ConnectionSystem Edition 产品套件。
使用PatchManager 工具
二、使用Patch Manager管理补丁
Patch Manager是Solaris 10系统自带的。如果Solaris 9和Solaris 8系统需要的话,必须到 http://wwws.sun.com/software/download下载,并自行安装。
Sun Patch Manager工具(Patch Manager)是用于管理Solaris系统上的修补程序的标准工具,应使用此工具可在线升级Solaris的补丁程序。Patch Manager使用smpatch命令行界面来管理系统补丁。
1.设置Patch Manager的管理环境
查看本机Patch Manager的管理环境,使用命令:
#smpatch get默认环境如图1 :

图1查看本机Patch Manager的管理环境
查看远程服务器suncjh的补丁是否打齐,使用命令:
smpatch get-n suncjh
如果你需要用户名和密码才能登录patch 服务器,就需要对其进行设定。如果你没有SunSolve的网站的账号,请到http://sunsolve.sun.com去注册。
设置专门的用户名:
# smpatch set patchpro.sun.user=user-name
设置专门的密码:
# smpatch set patchpro.sun.passwd
接下来要你输入你的密码:
Sun User Password: password
如果你有专门的补丁程序库,请自行设定其路径:
设定为本机/export/patches目录:
# smpatch set patchpro.patch.source=file:/export/patches
设定为远程主机jupiter上的目录:
# smpatch set patchpro.patch.source=file:/net/jupiter/export/patches
2.分析显示系统需要的补丁
分析显示适合于本系统安装的补丁程序列表,使用命令:
#smpatch analyze
创建适合于本系统安装的补丁程序列表文件,使用命令:
# smpatch analyze -x idlist=patch-list-file
patch-list-file就是适合于本系统安装的补丁程序列表文件名。
有些补丁的安装须依赖其他的补丁,比如,如果想知道112735-21补丁的依存关系,并把信息输入到/tmp/patch_out文件中:
# smpatch analyze -i 112735-21 > /tmp/patch.out
3.自动下载并更新系统的补丁
更新系统补丁程序使用命令:
# smpatch update
如果更新补丁程序列表文件中所记录的,则使用命令:
# smpatch update -x idlist= patch-list-file
如果指定更新一些补丁程序,则使用命令:
# smpatch update -i patch-id -i patch-id ...
patch-id就是补丁程序号。
4.应用补丁程序
如果你已经下载了补丁程序,就须使用应用补丁程序的命令smpatch add,但值得注意的是,smpatch add解决不了补丁程序的依存性问题。
应用一些指定的补丁程序:
# smpatch add -i patch-id -i patch-id ...
需要注意的是,一些特殊的补丁程序需要在单用户模式下应用:
# init S
# smpatch add -i patch-id -i patch-id ...
要想应用补丁程序列表中的补丁程序,必须要在单用户模式下进行:
# init S
# smpatch add -x idlist= patch-list-file
5.使用luupgrade命令应用补丁列表中的补丁程序到未激活的启动引导环境
首先,用smpatch analyze命令和sed命令分析激活引导环境,并创建补丁程序列表文件,用smpatch download命令下载列表文件中所列的补丁程序,然后用luupgrade命令应用这些补丁程序到未激活的引导环境中。
分析需要的补丁程序并输入到plist文件中:
# smpatch analyze | sed ‘s/ .*//’ > plist
下载pilst文件中所列的补丁程序:
# smpatch download -x idlist=plist
如果未激活的引导环境名为be2,补丁程序保存的目录为/var/sadm/spool。
# luupgrade -t -n be2 -s /var/sadm/spool ‘cat plist‘
如何用Patch Manager 和Solaris Live Upgrade在未激活的引导环境中删除补丁程序呢?
例如:从未激活的引导环境be2中删除补丁107058-01。
# luupgrade -T -n be2 107058-01
6.在激活引导环境中删除补丁
使用命令:# smpatch remove -i patch-id
7.如何下载补丁程序
使用命令:#smpatch download -i patch-id
三 、 使用patchadd来管理补丁
patchadd是Solaris传统的命令行管理工具。
1.检查系统已经安装了哪些补丁
在/var/sadm/patch目录下,记录了已安装的补丁。如:
# ls /var/sadm/patch
107558-05 107594-04 107630-01 107663-01 107683-01
建议不要对/var/sadm/patch目录做任何修改,此目录被破坏后将不能安装或删除任何补丁。此外,也可以使用Patchadd -p和showrev -p来查看安装了哪些补丁。使用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
2.添加和卸载补丁程序
Solaris提供了两个命令来管理补丁,Patchadd和patchrm。这两个命令是在Solaris 2.6版本开始提供的。Patchadd用来安装解压缩后的补丁程序。Patchadd通过调用pkgadd命令来安装补丁。安装补丁前,我们需要将补丁解压到/var/tmp下安装。安装补丁如下命令:
# cd /var/tmp
# patchadd 112735-21
如果当前目录下有112735-21目录,patchadd将安装此补丁。补丁安装后,系统会备份原文件,以便在以后删除此补丁。
如果使用patchadd -d选项安装补丁,系统将不备份源文件,这意味着你将不能在以后删除此补丁。
如果因为某种情况你想卸载某一补丁,则可以使用Patchrm命令来完成。此命令通过调用pkgadd来恢复安装补丁前的文件备份来卸载补丁。使用Patch-ID作为Patchrm的参数就可以卸载补丁:
# patchrm 106793-01
这里需要说明一下,在如下三种情况下,补丁将不能卸载:
在安装patch时,用patchadd -d命令指定patchadd不备份被更新的文件。这样安装的patch将无法删除。
另一Patch需要此Patch,即存在dependence(关联性),如一定要删掉该patch,可先删掉另一patch。
要删的patch已被另一更新的patch废弃了。如安装110668-04补丁后,以前安装过110668-03,则110668-03将被110668-04废弃,110668-03无法删除。
3.安装Cluster补丁包
Cluster补丁为单个补丁的集合,下载解压后,可以通过执行./install_Cluster脚本来完成补丁集的安装。执行./install_Cluster后,脚本将检查当前目录下的patch_order文件,此文件标明了Patch的安装顺序,./install_Cluster将按照Patch_order文件给出的顺序来安装patch。如果没有patch_order文件,则认为当前目录下所有以1开始的目录名均为需要安装的补丁目录,并且认定这些目录的名称次序作为安装Patch的次序。因此你可以通过修改patch_order文件来决定安装或不安装某Patch。
总结:
随着越来越多的安全漏洞被披露出来,厂商发布补丁的数量也随之剧增。应对这些海量的补丁程序,手工打补丁显然很不现实。用户需要借助有效的补丁管理工具,无论该工具是自主开发的还是购买获得的。安装完操作系统后,另外一件管理员必须做的事情就是为操作系统打上各种补丁程序。
补丁错误信息:
在安装补丁的过程中,经常出现一些错误提示。例如:
Installationof12346-11failed.Returncode2
通过Returncode我们可以知道错误类型。需要注意的是,Returncode2说明此补丁已被安装,Returncode8说明此补丁要修复的软件没有被系统安装。因此,2和8是完全可以被忽略的错误提示。下面的列说明了各个Returncode对应的错误类型。ExitcodeMeaning
0:没错;
1:使用错误;
2:补丁已经存在;
3:非root权限;
4:存原始文件失败;
5:pkgadd失败;
6:补丁已经作废;
7:非法包路径;
8:试图安装补丁的软件尚未安装;
9:不能使用/usr/sbin/pkgadd;
10:软件错误;
11:错误添加补丁到root模板;
12:通信时补丁脚本终止;
13:补丁目录中有软链接;
14:补丁不可用;
15:前面补丁脚本不对;
16:后面的补丁脚本不对;
17:-d属性不匹配;
18:系统空间不足;
19:$SOFTINFO/INST_RELEASE文件没有找到;
20:一个领导实例的补丁没有找到;
21:需要的补丁没有找到;
22:需要以前的补丁但没有找到;
23:一个受限制的补丁已经在软件中;
24:一个不兼容的补丁正在应用;
25:一个需要的补丁没有找到;
26:备份路径没有找到;
27:关联路径没有找到;
28:文件信息丢失;
29:错误的补丁号码;
30:运行失败;
31:-C属性错误;
32:必须运行Solaris2.6及以后版本;
33:错误的补丁形式或补丁没有找到;
34:需要安装内核的补丁;
35:更高的版本已经安装。
sun还维护了一份Sun Alert Patch 报表,该文档按产品分类,并且随时更新。从这里可以找到所有sun产品的更新文档及相应补丁,当然也包括的Solaris的Sun Alert 文档、Patch ID、简要说明等。Sun Alert Patch Report从这里可以得到:
http://sunsolve.sun.com/show.do?target=sunalert_patches
相应的Solaris 10 X86部分可从如下链接得到:
http://sunsolve.sun.com/show.do?target=sunalert_patches#Solaris_10_Operating_System_for_x86_Platforms s
表格按时间排序,从Category表格中可以知道此问题属于安全缺陷修复还是应用优化。 如图2 。

图2 Solaris 10部分补丁
SUN是世界上最大的UNIX系统供应商之一,产品线极为丰富,主要产品有基于UltraSPARC 和AMD Opteron 处理器的系列服务器、工作站,SUN Ray 桌面系统、StorageTek 存储设备等硬件系统,Solaris和Java软件,以及SUN Grid(网格计算)等各类服务。服务器产品线大致可分为:
l SUN Blade系列(刀片式);
l Netra系列(运营商级服务器);
l SUN Fire系列:V系列(中低端)/E系列(中高端)/T系列(CoolTreads服务器)/X系列&V40z(x64服务器);
l SUN Rack系列(机架型机柜)。