當使用 Solaris Live Upgrade 並建立新的啟動環境時,請遵循這些準則以避免發生問題。
您的套裝軟體程序檔必須獨立於目前作用中的作業環境。程序檔定義在套裝軟體安裝與移除期間發生在特定時間點的動作。可使用這些預先定義的名稱來建立四個程序檔: preinstall、postinstall、preremove 及 postremove。套裝軟體程序檔必須獨立於目前作用中的作業環境,因為互動式啟動環境可以透過 Solaris Live Upgrade 來切換。
這些程序檔不得啟動或停止任何程序,或依賴於如 ps 或 truss 等指令的輸出,因為這些指令相依於作業系統並報告關於目前正在運作系統的資訊。
程序檔可以自由使用其他標準 UNIX 指令,如 expr、cp、ls 以及其他幫助撰寫 shell 程序檔的指令。不過,除了 自訂 JumpStart 程式以及 Solaris Live Upgrade 互動式啟動環境需求 小節中說明的規則外,還不能修改互動式啟動環境。
所有程序檔均須寫入 Bourne shell (/bin/sh)。Bourne shell 為 pkgadd 指令藉以執行程序檔的解譯程式。
套裝軟體程序檔不得啟動 2.6 或以上版本中所附加的指令。例如,套裝軟體程序檔不可啟動 pgrep 指令。從 2.6 版本以來,許多指令已新增了附加的功能。套裝軟體程序檔不得使用任何 2.6 版中不存在的指令選項。例如,umount 指令的 -f 選項在 Solaris 7 版本中新增。若要確認某個特定的指令或選項是否與 Solaris 2.6 版本相容, 請參閱 http://docs.sun.com 上的 "Solaris 2.6 Reference Manual AnswerBook"。
所有套裝軟體均須通過 pkgchk 驗證。建立套裝軟體後,在安裝之前,必須使用下列指令對其進行檢查。
# pkgchk -d dir_name pkg_name |
dir_name |
指定套裝軟體所在目錄的名稱 |
pkg_name |
指定套裝軟體的名稱 |
例如,如果套裝軟體存在於 /export/SUNWvxvm,則您可以發佈以下指令。
# pkgchk -d /export SUNWvxvm |
螢幕不應該顯示任何錯誤。
在建立套裝軟體之後,必須使用帶 -R dir_name 選項的 pkgadd 將其安裝至互動式啟動環境位置,並進行測試。套裝軟體安裝完畢之後,必須使用 pkgchk 檢查其正確性,如本範例所示。
# pkgadd -d . -R /a SUNWvxvm # pkgchk -R /a SUNWvxvm |
螢幕不應該顯示任何錯誤。
同時,套裝軟體不得執行自己提供的指令。這是為了維護無磁碟相容性,並避免執行可能需要尚未安裝的共用程式庫之指令。
可以使用多條指令來檢驗這些建立、修改及刪除檔案的需求。例如,dircmp 或是 fssnap 指令可以用來檢驗該套裝軟體是否作業正確。同時,ps 指令可以用來測試常駐程式相容性,以確定套裝軟體不會停止或啟動常駐程式。truss、pkgadd -v 以及 pkgrm 指令可以測試執行期間套裝軟體安裝相容性,但是不一定能夠在所有狀況中生效。在下列範例中,truss 指令刪除所有非 $BASEDIR 的唯讀存取,並只顯示指定互動式啟動環境之外的非唯讀式路徑存取。
# TEMPDIR=/a; export TEMPDIR # truss -t open /usr/sbin/pkgadd -R ${TEMPDIR} SUNWvxvm \ 2>&1> /dev/null | grep -v O_RDONLY | grep -v \ 'open("'${TEMPDIR} |
有關本節中參考的指令之詳細資訊,請參閱以下線上援助頁 dircmp(1)、fssnap(1M)、 ps(1)、truss(1)、pkgadd(1M)、pkgchk(1M) 或 pkgrm(1M)。