這份附錄是為需要使用自訂 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 選項。 若要驗證 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)。
自訂 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