服务器 频道

Solaris服务器补丁管理详解(图)

    【IT168 专稿】给软件打补丁相当于给人打预防针,对系统的稳定运行至关重要。本文简要介绍Solaris服务器补丁的分类、安装、管理等问题。

一、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系列(机架型机柜)。
0
相关文章