本附錄適用於需要安裝或移除套裝軟體 (特別是協力廠商套裝軟體) 的系統管理員。遵循這些封裝需求可滿足下列事項:
避免修改目前正在執行的系統,如此即可使用 Solaris Live Upgrade 進行升級,並建立和維護非全域區域和無本地磁碟的用戶端
使用自訂 JumpStart 這類安裝程式時,可避免套裝軟體以交互方式安裝,而以自動方式安裝
本章包含下列小節:
遵循本節所述的需求,可讓目前正在執行的作業系統保持不變。
若要成功地安裝作業系統,套裝軟體必須辨識並正確找出替代的根 (/) 檔案系統,例如 Solaris Live Upgrade 非使用中啟動環境。
套裝軟體可以在其 pkgmap 檔案 (套裝軟體對映) 中包含絕對路徑。如果這些檔案存在,其相對於 pkgadd 指令的 -R 選項進行寫入。同時包含絕對路徑和相對 (可重新定位) 路徑的套裝軟體,也可以安裝在替代根 (/) 檔案系統上。$PKG_INSTALL_ROOT 同時前置於絕對和可重新定位的檔案,因此在透過 pkgadd 安裝時可正確地解析所有路徑。
使用 pkgadd -R 選項安裝或使用 pkgrm -R 選項移除的套裝軟體,不得修改目前執行中的系統。這項功能是由自訂 JumpStart、Solaris Live Upgrade、非全域區域和無本地磁碟的用戶端使用的。
任何使用 pkgadd 指令 -R 選項安裝或使用 pkgrm 指令 -R 選項移除的套裝軟體隨附的程序檔,不得修改目前執行中的系統。所有提供的安裝程序檔必須參照任何以變數 $PKG_INSTALL_ROOT 為字首的目錄或檔案。套裝軟體必須寫入所有以 $PKG_INSTALL_ROOT 為字首的目錄與檔案。套裝軟體不得移除沒有以 $PKG_INSTALL_ROOT 為字首的目錄。
表 B–1 提供程序檔語法範例。
表 B–1 安裝程序檔語法範例
$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 |
您的套裝軟體程序檔必須獨立於目前執行的作業系統,以避免修改了作業系統。程序檔定義在套裝軟體安裝與移除期間發生在特定時間點的動作。可使用這些預先定義的名稱來建立四個程序檔:preinstall、postinstall、preremove 和 postremove。
表 B–2 建立程序檔的準則
準則 |
影響 Solaris Live Upgrade |
影響非全域區域 |
---|---|---|
程序檔均須以 Bourne shell (/bin/sh) 撰寫。Bourne shell 是 pkgadd 指令用來執行程序檔的解譯器。 |
X |
X |
程序檔不得啟動或停止任何程序,或依賴於如 ps 或 truss 等指令的輸出,因為這些指令與作業系統相關,並報告目前正在執行之系統的相關資訊。 |
X |
X |
程序檔可以自由使用其他標準 UNIX 指令,如 expr、cp、ls 以及其他幫助撰寫 shell 程序檔的指令。 |
X |
X |
程序檔呼叫的任何指令,都必須可以在所有支援的發行版本上使用,因為套裝軟體必須在這些發行版本上執行。因此,您無法使用 Solaris 8 發行版本之後增加或移除的指令。 若要確認 Solaris 8、9 或 10 發行版本是否支援某特定指令或選項,請參閱 http://docs.sun.com 上特定版本的 Solaris Reference Manual AnswerBook。 |
X |
套裝軟體不得執行自己提供的指令。這項需求是為了維護無本地磁碟的用戶端相容性,並避免執行所需的共用程式庫尚未安裝的指令。
所有套裝軟體均須通過 pkgchk 驗證。建立套裝軟體後,在安裝之前,必須使用下列指令對其進行檢查。
# pkgchk -d dir_name pkg_name |
指定套裝軟體所在目錄的名稱
指定套裝軟體的名稱
在建立套裝軟體之後,必須使用帶有 -R dir_name 選項的 pkgadd 指令,將其安裝至替代根 (/) 檔案系統位置,並進行測試。套裝軟體安裝完畢之後,必須使用 pkgchk 檢查其正確性,如本範例所示。
# pkgadd -d . -R /a SUNWvxvm # pkgchk -R /a SUNWvxvm |
螢幕不應該顯示任何錯誤。
如果套裝軟體存在於 /export/SUNWvxvm 中,則您可以發出下列指令。
# pkgchk -d /export SUNWvxvm |
螢幕不應該顯示任何錯誤。
在建立、修改及刪除檔案時,還有其他指令可以檢查套裝軟體。下列指令是部分範例。
例如,dircmp 或是 fssnap 指令可以用來確認該套裝軟體作業正確。
同時,ps 指令可以用來測試常駐程式相容性,以確定套裝軟體不會停止或啟動常駐程式。
truss、pkgadd -v 以及 pkgrm 指令可以測試執行期間套裝軟體安裝一致性,但是不一定能夠在所有狀況中生效。在下列範例中,truss 指令刪除所有非 $TEMPDIR 的唯讀存取,並只顯示指定的互動式啟動環境之外的非唯讀式路徑存取。
# 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} |
使用下列標準 Solaris 公用程式增加或移除套裝軟體時,不可有提示使用者的資訊。
自訂 JumpStart 程式
Solaris Live Upgrade
Solaris 安裝程式
Solaris Zones
若要測試套裝軟體是否可以在沒有使用者互動的情況下安裝,可以使用 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
下列參考提供封裝需求和特定指令語法的相關背景資訊。
封裝需求和術語定義的特定資訊 |
「Application Packaging Developer’s Guide」中的第 6 章「Advanced Techniques for Creating Packages」 |
增加和移除套裝軟體與安裝管理檔案的基本資訊 |
「System Administration Guide: Basic Administration」中的第 16 章「Managing Software(Overview)」 |
如需本附錄中參考之特定指令的詳細資訊,請參閱下列線上手冊 |
dircmp(1) 線上手冊」、「fssnap(1M) 線上手冊」、「ps(1) 線上手冊」、「truss(1) 線上手冊」、「pkgadd(1M) 線上手冊」、「pkgchk(1M) 線上手冊」或「pkgrm(1M) 線上手冊」 |
Solaris Live Upgrade 的簡介 | |
自訂 JumpStart 的簡介 |
「Solaris 10 安裝指南:自訂 JumpStart 及進階安裝」中的第 5 章「自訂 JumpStart (簡介)」 |
Solaris Zones 的簡介 |