一、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
Checking installed packages and patches...
Backing out patch 106793-01...
Patch 106793-01 has been backed out.
這裡需要說明一下,在如下三種情況下,補丁將不能卸載:
1).在安裝patch時,用patchadd -d命令指定patchadd不備份被更新的文件。這樣安裝的patch無法刪除。
2).另一patch需要此patch,即存在dependence(關聯性), 如一定要刪掉該patch,先刪掉另一patch。
3).要刪的patch已被另一更新的patch廢棄了。如安裝110668-04補丁後,如果以前安裝過110668-03,則110668-03將被110668-04廢棄,110668-03將無法刪除。
3.3 Cluster補丁的安裝
Cluster補丁為單個補丁的集合,下載解壓後,可以通過執行./install_Cluster腳本來完成補丁集的安裝。執行./install_Cluster後,腳本將檢查當前目錄下的patch_order文件,此文件標明了Patch的安裝順序,./install_Cluster將按照patch_order文件給出的順序來安裝patch。如果沒有patch_order文件,則假定當前目錄下所有以1開始的目錄名均為需要安裝的補丁目錄,並且假定這些目錄的名稱次序作為安裝Patch的次序。因此你可以通過修改patch_order文件來決定安裝或不安裝某Patch。
3.4 安裝Patch時的注意事項
由於在安裝Patch時需要更