這份附錄是為需要使用自訂 JumpStart 程式或 Solaris Live Upgrade 來安裝或移除套裝軟體(特別是協力廠商的套裝軟體)的系統管理員而撰寫的。遵循這些封裝需求將使自訂的 JumpStart 安裝維持非互動式,並避免修改目前執行中的系統,以便您能夠使用 Solaris Live Upgrade 來進行升級。
以下文件提供的是關於封裝需求的基本背景資訊。
若要使自訂 JumpStart 程式和 Solaris Live Upgrade 正常工作,套裝軟體必須符合 SVR4 封裝需求。 「應用程式封裝開發者指南」提供有關封裝需求和術語定義的更詳細資訊。 請特別注意本章節: “Advanced Package Creation Techniques” in Application Packaging Developer's Guide
如需增加與移除套裝軟體以及安裝管理檔案的基本資訊,請參閱 "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選項進行寫入。同時包含絕對與相對(可重定位的)路徑的套裝軟體也可以安裝至一個替代 root (/)。$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 為 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 程式,必須能夠增加或移除套裝軟體而無需使用者依系統提示輸入資訊。為避免使用者互動,請使用帶 -a 選項的 pkgadd 指令設定新的管理檔案。-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