這份附錄是為需要使用自訂 JumpStart 程式或 Solaris Live Upgrade 來安裝或移除套裝軟體 (特別是協力廠商的套裝軟體) 的系統管理員而撰寫的。遵循這些封裝需求將使自訂 JumpStart 安裝處於非互動模式,並避免修改目前執行中的系統,以便您能夠使用 Solaris Live Upgrade 進行升級。
以下說明文件參考提供的是關於封裝需求的基本背景資訊。
若要使自訂 JumpStart 程式和 Solaris Live Upgrade 正常工作,套裝軟體必須符合 SVR4 封裝需求。「Application Packaging Developer's Guide」提供有關封裝需求和術語定義的更詳細資訊。請特別注意本章節:「Application Packaging Developer's Guide」中的「Advanced Package Creation Techniques」
如需加入與移除套裝軟體以及安裝管理檔案的基本資訊,請參閱「System Administration Guide: Basic Administration」中的「Managing Software (Overview)」。另請參閱特定的線上援助頁。
如需有關此附錄中所參考指令的詳細資訊,請參閱線上援助頁 dircmp(1)、fssnap(1M)、ps(1) 或 truss(1)。
表 G–1 列有此文件中適用於 Solaris Live Upgrade 或自訂 JumpStart 程式的資訊。
表 G–1 需求資訊
安裝方法 |
記錄成文的需求 |
---|---|
Solaris Live Upgrade |
|
自訂 JumpStart 程式 |
|
非作用中啟動環境是作業環境的副本,而不是目前執行系統的副本。Live Upgrade 或自訂 JumpStart 程式所使用的套裝軟體必須遵循下列需求:
在不使用使用者互動的情況下啟用自訂 JumpStart 安裝或升級
請勿對目前執行中的系統做任何修改,但在使用 Solaris Live Upgrade 時則需要修改
以下清單用來解釋互動式啟動環境需求的相容性。
要成功安裝一個作業系統,套裝軟體必須能識別並正確遵守互動式啟動環境中的相關設定。
套裝軟體可以在其 pkgmap 檔案 (套裝軟體對映) 中包含絕對路徑。如果這些檔案存在,其相對於 pkgadd 指令的 -R 選項進行寫入。同時包含絕對與相對 (可重定位的) 路徑的套裝軟體也可以安裝至一個替代根 (/)。$PKG_INSTALL_ROOT 同時前置於絕對與可重定位的檔案,因此在透過 pkgadd 進行安裝時能夠正確解析所有路徑。
使用 pkgadd -R 選項安裝或使用 pkgrm -R 選項移除的套裝軟體,不得修改目前執行中的系統。
任何使用 pkgadd 指令 -R 選項安裝或使用 pkgrm 指令 -R 選項移除的套裝軟體隨附的程序檔,不得修改目前執行中的系統。所有提供的安裝程序檔必須參照任何以變數 $PKG_INSTALL_ROOT 為字首的目錄或檔案。套裝軟體必須寫入所有以 $PKG_INSTALL_ROOT 為字首的目錄與檔案。套裝軟體不得移除沒有以 $PKG_INSTALL_ROOT 為字首的目錄。表 G–2 有提供正確撰寫程序檔之語法範例。
表 G–2 安裝程序檔語法範例
$PKG_INSTALL_ROOT 為根 (/) 檔案系統在加入套裝軟體的機器上的位置。該位置設定為 pkgadd 指令的 -R 引數。例如,如果啟動下列指令,則在安裝套裝軟體期間,系統會將 $PKG_INSTALL_ROOT 前置於 /a。
# pkgadd -R /a SUNWvxvm |
$BASEDIR 指向安裝可重定位套裝軟體物件的 relocatable 基本目錄。僅可重定位物件安裝於此。不可重定位物件 (那些在 pkgmap 檔案中擁有絕對路徑的物件) 的安裝位置總是相對於互動式啟動環境,而不是相對於實際生效的 $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 |
如果使用下列指令安裝此套裝軟體,則 ls 安裝在 /a/opt/sbin/ls 中,但 ls2 安裝為 /a/sbin/ls2。
# pkgadd -R /a SUNWtest |
使用 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 選項。若要確認 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)。
自訂 JumpStart 程式相容性可確保套裝軟體作為傳統 Solaris 安裝公用程式的一部分,可以加入與移除,如以下所示:
自訂 JumpStart 程式
Solaris suninstall 程式
Solaris Web Start 安裝方法
自訂 JumpStart 程式相容性亦可確保套裝軟體可以參與 Solaris 升級。若要與自訂 JumpStart 程式相容,套裝軟體還必須遵循 自訂 JumpStart 程式以及 Solaris Live Upgrade 互動式啟動環境需求 中列出的互動式啟動環境需求。
為有效使用自訂 JumpStart 程式,必須能夠加入或移除套裝軟體而無需使用者依系統提示輸入資訊。為避免使用者互動,請使用 pkgadd 指令 -a 選項設定新的管理檔案。-a 選項可定義欲使用的安裝管理檔案,以代替預設管理檔案。使用預設檔案可能會造成系統提示使用者輸入更多資訊。您可以建立管理檔案以指示 pkgadd 略過這些檢查,並且無須使用者的確認而安裝套裝軟體。如需詳細資訊,請參閱線上援助頁 admin( 4) 或 pkgadd( 1M)。
下列範例顯示如何使用 pkgadd 管理檔案。
如果未提供管理檔案,pkgadd 會使用 /var/sadm/install/admin/default。使用此檔案可能造成使用者互動。
# pkgadd |
若是在指令行提供相關的管理檔案,pkgadd 會在 /var/sadm/install/admin 中尋找檔案名稱並使用該名稱。在此範例中,相關的管理檔案命名為 nocheck,pkgadd 將尋找 /var/sadm/install/admin/nocheck。
# pkgadd -a nocheck |
若提供絕對檔案,則 pkgadd 將使用該檔案。在此範例中,pkgadd 探入 /tmp 來尋找 nocheck 管理檔案。
# pkgadd -a /tmp/nocheck |
以下是一個安裝管理檔案的範例,它很少要求使用者與 pkgadd 公用程式互動。如果套裝軟體要求的空間高於系統上的可用空間,pkgadd 公用程式會使用此檔案安裝套裝軟體,並且不會提示使用者提供更多資訊。
mail= instance=overwrite partial=nocheck runlevel=nocheck idepend=nocheck space=ask setuid=nocheck confiict=nocheck action=nocheck basedir=default