當使用 Solaris Live Upgrade 並建立新的開機環境時,請遵循這些可避免問題的準則。
您的套裝軟體程序檔必須獨立於目前作用中的作業環境。程序檔定義在套裝軟體安裝與移除期間發生在特定時間點的作業。使用這些預先定義的名稱可以建立四個程序檔:安裝前、安裝後、移除前以及移除後。套裝軟體程序檔必須獨立於目前作用中的作業環境,因為可以使用 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 |
不應該顯示任何錯誤。
在建立套裝軟體之後,必須使用pkgadd的-R dir_name選項將其安裝至替代 root(/)位置以便測試。一旦完成這項工作,必須使用pkgchk以檢查套裝軟體的正確性,如同在此範例中所示。
# pkgadd -d . -R /a SUNWvxvm # pkgchk -R /a SUNWvxvm |
不應該顯示任何錯誤。
同時,套裝軟體不得執行自己提供的指令。這是為了維持無磁碟相容性,並避免執行可能需要尚未安裝的共用程式庫之指令。
可以使用各種指令來檢驗這些建立、修改與刪除檔案的需求。例如,dircmp或是fssnap指令可以用來檢驗該套裝軟體正確的運作。同時ps指令可以用來測試常駐程式相容性,以確定套裝軟體不會停止或啟動常駐程式。truss以及pkgadd指令可以測試執行期間套裝軟體安裝相容性,但是不一定能夠在所有狀況中生效。在下列範例中,truss指令刪除所有唯讀的、非$BASEDIR的存取並只顯示不存在於指定的替代(/)之中的非唯讀的路徑存取。
# 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)。