32.4. 使用指令行設定 SCPM

本節僅介紹 SCPM 的指令行組態。瞭解如何啟動它、設定它和使用設定檔。

32.4.1. 啟動 SCPM 與定義資源群組

SCPM 必須在使用前啟用。以 scpmenable 啟用 SCPM。第一次執行時,SCPM 會花費數秒鐘起始化。以 scpm disable 隨時停用 SCPM 以避免意外切換設定檔。後續的重新啟動只會繼續起始化。

根據預設,SCPM 會處理網路和印表機設定以及 X.Org 組態。若要管理特殊服務或組態檔,請啟用對應的資源群組。若要列出預先定義的資源群組,請使用 scpmlist_groups。若僅要查看已經啟用的群組,請使用 scpmlist_groups -a。請在指令行以 root 的身份執行這些指令。

 
scpm list_groups -a

nis                 網路資訊服務用戶端電子郵件                
郵件子系統 
ntpd                網路時間通訊協定精靈 
xf86                X-伺服器設定 
autofs              自動掛載器服務網路             
基本網路設定印表機             
印表機設定

scpmactivate_group NAMEscpmdeactivate_group NAME 啟用或停用群組。以相關群組名稱取代 NAME

32.4.2. 建立與管理設定檔

在啟用 SCPM 之後,名為 default 的設定檔就已經存在。以 scpm list 取得所有可用設定檔的清單。此一現有的設定檔也是作用中的設定檔,可使用 scpm active 來確認。設定檔 default 是基本組態,其他設定檔均從此衍生。因此,應該先進行在所有設定檔中均相同的設定。然後將這些修改以 scpm reload 儲存在作用中的設定檔中。default 設定檔可複製並重新命名作為新設定檔的基礎。

有兩種方法可新增設定檔。如果新設定檔 (在此處名為 work) 要以設定檔 default 為基礎,請以 scpmcopy default work 建立它。指令 scpmswitch work 可變為新設定檔,然後便可修改。您可能基於某些特殊原因想要修改系統組態,以及將變更儲存到新設定檔。指令 scpmadd work 可藉由將目前系統組態儲存在設定檔 work 中,並將它標示為作用中來建立新設定檔。執行 scpm reload,然後將變更儲存到 work 設定檔。

可使用指令 scpmrename x yscpmdelete z 來重新命名或刪除設定檔。例如,若要將 work 重新命名為 project,請輸入 scpmrename work project。若要刪除 project,請輸入 scpm delete project。作用中的設定檔無法刪除。

32.4.3. 切換組態設定檔

scpm switch work 指令可切換到另一個設定檔 (在此例中為 work 設定檔)。切換到作用中的設定檔可將系統組態修改的設定包括在設定檔中。這等同於指令 scpmreload

在切換設定檔時,SCPM 首先檢查作用中設定檔的哪些資源被修改。然後查詢每一個資源的修改是否應新增到作用中的設定檔或捨棄。如果您偏好分別列出資源 (如先前版本的 SCPM),請以 -r 參數使用切換指令:scpm switch -r work

scpm switch -r work

Checking for modified resources 
Checking for Resources to be started/shut down 
Checking for dependencies 
Restoring profile default 

然後 SCPM 會將目前系統組態與要切換的設定檔相比較。在此階段中,SCPM 會評估因為相互依存性或反映組態中變更而要停止或重新啟動的系統服務。這就像僅涉及小部份系統的部份系統重新開機,而沒有變更的其他部份仍可繼續運作。只有在此時系統服務會停止、所有修改的資源 (如組態檔案) 會寫入,而系統服務會重新啟動。

32.4.4. 進階設定檔設定

您可以對每一個以 scpmlist 顯示的設定檔輸入描述。對於作用中的設定檔,以 scpmset description "文字" 設定。例如,以 scpm set description "text" work 提供非作用中設定檔的名稱。有時您可能想在切換設定檔時執行 SCPM 未提供的其他動作。最多可對每一個設定檔附加四個執行檔。可在切換過程的不同階段呼叫。這些階段有:

prestop

當離開設定檔時,在停止服務之前

poststop

當離開設定檔時,在停止服務之後

prestart

當啟用設定檔時,在啟動服務之前

poststart

當啟用設定檔時,在啟動服務之後

輸入scpm set prestop filenamescpm set poststop filenamescpm set prestart filenamescpm set poststart filenameset 指令插入這些動作。程序檔必須為執行檔,並參考正確的解譯器。

[Warning]整合自訂程序檔

其他可由 SCPM 執行的程序檔必須為超級使用者 (root) 可讀取且可執行。必須對其他所有使用者封鎖這些檔案的存取權。輸入 chmod 700 filenamechown root:root filename 以給予 root 對檔案的專用許可權。

setget 查詢所輸入的其他所有設定。例如,scpm get poststart 指令可傳回 poststart 呼叫的名稱,而若沒有附加則不會傳回任何內容。以 "" 覆寫來重設此設定。scpm set prestop "" 指令會移除附加的 prestop 程式。

所有 setget 指令均可使用新增註解的方式套用於任意設定檔。例如,scpm get prestop filename workscpm get prestop work