天天看點

Solaris下更新檔管理

在Linux下安裝和解除安裝更新檔很多人都很清楚了,特别是使用redhat的系統時.

在Solaris下怎麼去管理更新檔呢? 其實也很簡單的.

一. 概述

檢視更新檔安裝的目錄: /var/sdam/patch

安裝更新檔: patchadd (2.6版本以上)

解除安裝更新檔: patchrm (2.6版本以上)

二. 較長的描述:

1. 首先去SUN的網站查詢目前的OS需要打哪些更新檔

然後根據實際情況去下載下傳更新檔;

2. 安裝更新檔前,我們需要将更新檔解壓到

/var/tmp下安裝(Root使用者),

# cd /var/tmp

# patchadd 123456-07

螢幕會顯示這些資訊:

Checking installed patches...

Verifying sufficient filesystem capacity

(dry run method)

Installing patch packages...

如果目前目錄下有123456-07目錄,patchadd将

安裝此更新檔。更新檔安裝後,系統會備份原檔案,

如果使用patchadd -d 選項安裝更新檔, 系統将不

備份源檔案,這意味着你将不能在以後删除此更新檔。

3. 驗證更新檔是否已經安裝

使用Patchadd -p 選項可以檢驗已安裝的patch.

# patchadd -p

# patchadd -p |grep 123456-07

還可以使用showrev -p 指令來檢視已經安裝的更新檔.

4. 解除安裝更新檔

一般來說更新檔安裝完畢後我們不需要去解除安裝.

因為每個更新檔都是對現有程式的功能性或者

安全性的改進. 如果因為某種情況你想解除安裝

某一更新檔, 可以使用Patchrm指令來完成.

# patchrm 123456-07

Checking installed packages and patches...

Backing out patch 123456-07...

Patch 123456-07 has been backed out.

需要說明一下,在如下三種情況下,更新檔将不能解除安裝:

1.在安裝patch時,用patchadd -d指令指定patchadd

不備份被更新的檔案。這樣安裝的patch無法删除。

2.另一Patch需要此Patch,即存在dependence

(關聯性), 如一定要删掉該patch,先删掉另一patch。

3.要删的patch已被另一更新的patch廢棄了. 例如安裝

123456-07更新檔後,如果以前安裝過123456-06,則

後者将被前者廢棄,也就是說它将不能被删除。

三. 安裝Patch時的注意事項

由于在安裝Patch時需要更新檔案, 是以Solaris官方推薦

在安裝更新檔時進入單使用者模式安裝. 在某些重要伺服器上

可能帶來不便, 是以你完全可以在多使用者模式下通過停止

相關服務程序來完成Patch的安裝.

Sun推出的Patch并不是每個都一定要安裝的, 是以需要

在安裝patch前仔細閱讀README來确定是否需要安裝此

更新檔.另外,某些更新檔具有依賴性,需要先安裝另一更新檔才

能完成此更新檔的安裝,這些都會在README中标明.

總之,安裝更新檔之前強烈建議你閱讀相應的README檔案.

(每個Patch都提供單獨的README檔案)

四. 安裝PATCH過程中出現的問題

在安裝更新檔的過程中, 經常出現一些錯誤提示.例如:

Installation of 123456-07 failed.

Return code 2

通過Return code我們可以知道錯誤類型。需要注意

的是,Return code 2說明此更新檔已被安裝, Return

code 8說明此更新檔要修複的軟體沒有被系統安裝.是以,

2和8是完全可以被忽略的錯誤提示. 下表說明了各個

Return code對應的錯誤類型。

Exit code Meaning

0 No error

1 Usage error

2 Attempt to apply a patch that's already been applied

3 Effective UID is not root

4 Attempt to save original files failed

5 pkgadd failed

6 Patch is obsoleted

7 Invalid package directory

8 Attempting to patch a package that is not installed

9 Cannot access /usr/sbin/pkgadd (client problem)

10 Package validation errors

11 Error adding patch to root template

12 Patch script terminated due to signal

13 Symbolic link included in patch

14 NOT USED

15 The prepatch script had a return code other than 0.

16 The postpatch script had a return code other than 0.

17 Mismatch of the -d option between a previous patch install and the current one.

18 Not enough space in the file systems that are targets of the patch.

19 $SOFTINFO/INST_RELEASE file not found

20 A direct instance patch was required but not found

21 The required patches have not been installed on the manager

22 A progressive instance patch was required but not found < tr>

23 A restricted patch is already applied to the package

24 An incompatible patch is applied

25 A required patch is not applied

26 The user specified backout data can't be found

27 The relative directory supplied can't be found

28 A pkginfo file is corrupt or missing

29 Bad patch ID format

30 Dryrun failure(s)

31 Path given for -C option is invalid

32 Must be running Solaris 2.6 or greater

33 Bad formatted patch file or patch file not found

34 The appropriate kernel jumbo patch needs to be installed

35 Later revision already installed

繼續閱讀