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