使用 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 版次中任何不存在的指令選項。 例如,Solaris 7 版次已加入 umount 指令的 -f 選項。 若要驗證 Solaris 2.6 版次中是否支援某個特定指令或選項,請參閱 http://docs.sun.com 上的「Solaris 2.6 Reference Manual AnswerBook」。
所有套裝軟體均須通過 pkgchk 驗證。 建立套裝軟體後,在安裝之前,必須使用下列指令對其進行檢查。
# pkgchk -d 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)。