這份附錄是針對需要使用自訂 JumpStart 程式或 Solaris Live Upgrade 來安裝或移除套裝軟體(特別是協力廠商的套裝軟體)的系統管理者。遵循這些封裝需求將使自訂的 JumpStart 安裝維持非互動性,並避免修改目前運作的系統,因此您能夠使用 Solaris Live Upgrade 來進行升級。
一個替代 root (/) 為作業環境的副本,而不是目前運作的系統。
為了使自訂 JumpStart 程式以及 Solaris Live Upgrade 能正確的執行,套裝軟體必須遵守 SvR4 封裝需求。該應用程式封裝開發者指南提供更多特定的封裝需求以及術語定義資訊,請特別參閱本章: "Advanced Package Creation Techniques" in Application Packaging Developer's Guide.
若要獲得新增與移除套裝軟體以及安裝管理檔案的基本資訊,請參閱"Managing Software (Overview)" in the System Administration Guide: Basic Administration。請同時參閱特定的線上援助頁。
若要獲得附錄中所參考指令的詳細資訊,請參閱線上援助頁,dircmp(1),fssnap(1M), ps(1),或 truss(1)。
表 C-1列出套用至 Solaris Live Upgrade 或自訂 JumpStart 程式的資訊。
表 C-1 需求資訊
安裝方法 |
記錄成文件的需求 |
---|---|
Solaris Live Upgrade |
|
自訂 JumpStart 程式 |
|
一個替代 root (/) 為作業環境的副本,而不是目前運作的系統。Live Upgrade 或自訂 JumpStart 程式所使用的套裝軟體必須遵循這些需求:
在不使用使用者互動的情況下啟用自訂 JumpStart 安裝或升級
不用修改目前運作的系統,而當使用 Solaris Live Upgrade 時便需要修改。
下列清單解釋了替代 root( /)相容性的需求。
為了使作業系統安裝成功,套裝軟體必須認識並正確的回應替代 root (/ )限定符號。
套裝軟體可以在其pkgmap檔案(套裝軟體對映)中包含絕對路徑。若是存在這些檔案,其相對於pkgadd指令的- R選項進行寫入。同時包含絕對與相對(可重定位的)路徑的套裝軟體也可以安裝至一個替代 root (/)。$PKG_INSTALL_ROOT同時前置於絕對與可重定位的檔案,因此當在pkgadd安裝時能夠正確地解析所有的路徑。
使用pkgadd - R選項安裝或使用pkgrm - R選項移除的套裝軟體,不得修改目前運作的系統。
任何伴隨使用pkgadd指令- R選項安裝或使用pkgrm指令- R選項移除的套裝軟體而來的程序檔,不得修改目前運作的系統。任何提供的安裝程序檔必須參照任何以$PKG_INSTALL_ROOT 變數為字首的目錄或檔案。套裝軟體必須寫入所有使用 $PKG_INSTALL_ROOT字首的目錄與檔案。套裝軟體不得移除沒有使用$PKG_INSTALL_ROOT為字首的目錄。表 C-2提供正確撰寫程序檔語法的範例。
表 C-2 安裝程序檔語法範例
$PKG_INSTALL_ROOT為 root( /)新增套裝軟體的機器檔案系統位置。其設定為pkgadd指令的-R引數。例如,若是呼叫下列的指令:
# pkgadd -R /a SUNWvxvm |
則在套裝軟體安裝期間$PKG_INSTALL_ROOT將前置於/a。
$BASEDIR指向將會安裝可重定位套裝軟體物件的 relocatable基本目錄。在此只有安裝可重定位的物件。不可重定位的物件(那些在pkgmap檔案中擁有absolute路徑的物件)的安裝永遠相對於替代 root(/),而不是實際生效的$BASEDIR。若是套裝軟體沒有可重定位的物件,則該套裝軟體被稱之為絕對套裝軟體 (或不可重定位的),並且尚未定義$BASEDIR也無法在套裝軟體程序檔中使用。
例如,假設套裝軟體的pkgmap檔案有兩個登錄:
1 f none sbin/ls 0555 root sys 3541 12322 1002918510 1 f none /sbin/ls2 0555 root sys 3541 12322 2342423332 |
並且pkginfo檔案有 $BASEDIR的規格:
BASEDIR=/opt |
若是此套裝軟體使用下列的指令進行安裝:
# pkgadd -R /a SUNWtest |
則ls將安裝在/a/opt/sbin/ls ,但是ls2將安裝為/a/sbin/ls2 。
當使用 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)。
自訂 JumpStart 程式相容性可確定當套裝軟體成為傳統 Solaris 安裝公用程式的一部份時,將可被新增與移除,如以下所示:
自訂 JumpStart 程式
Solaris suninstall program
Solaris Web Start 安裝方法
自訂 JumpStart 程式相容性也確定該套裝軟體可以參與 Solaris 升級。若要擁有自訂 JumpStart 程式的相容性,套裝軟體也必須遵循"自訂 JumpStart 程式以及 Solaris Live Upgrade 替代 Root (/) 需求"中所概述的替代 root(/) 需求。
若要能夠有效的使用自訂 JumpStart 程式,必須能夠在不需經由使用者從提示符號輸入資訊的情況下新增或移除套裝軟體。若要避免使用者互動,請使用 pkgadd指令的-a選項設定新的管理檔案。該-a選項定義欲使用的安裝管理檔案以代替預設的管理檔案。使用預設的檔案可能會造成使用者需要從提示符號輸入更多資訊。您可以建立管理檔案以暗示pkgadd應該略過這些檢查並運用使用者確認來安裝套裝軟體。下列範例顯示如何使用pkgadd管理檔案。
若是沒有提供管理檔案,pkgadd會使用/var/sadm/install/admin/default。使用此檔案可能造成使用者互動。
# pkgadd |
若是在指令行提供相關的管理檔案,pkgadd會在/var/sadm/install/admin 中尋找檔案名稱並使用之。在此範例中,相關的管理檔案被命名為不檢查並且pkgadd尋找/var/sadm/install/admin/nocheck 。
# pkgadd -a nocheck |
若是提供絕對檔案則pkgadd使用之。在此範例中,pkgadd尋找/tmp/nocheck 。
# pkgadd -a /tmp/nocheck |
下列為安裝管理檔案的範例,其避免pkgadd在安裝套裝軟體之前需要使用者用提示符號輸入確認。
mail= instance=overwrite partial=nocheck runlevel=nocheck idepend=nocheck space=nocheck setuid=nocheck confiict=nocheck action=nocheck basedir=default
若要獲得詳細資訊,請參閱線上援助頁,admin( 4)或pkgadd( 1M)。