Red Hat Training

A Red Hat training course is available for Red Hat Satellite

章 6. 上傳與維護自訂套件

端看用得是何種 Red Hat Network 服務,有兩種機制可以用將套件上傳到私有頻道中。
RHN Proxy Server 的用戶使用 RHN Package Manager 應用程式,它可將套件表頭資訊傳送至中央 Red Hat Network 伺服器,並將套件本身放置到引動了 RHN Package Manager 的 Proxy 的本機軟體庫中。
RHN Satellite Server 的用戶使用 RHN Push 應用程式,它可以將套件表頭資訊傳送到本機的 RHN Satellite Server 上,並將套件放置至使用了 RHN Push 的 Satellite 的本機軟體庫中。
本章將詳細描述這兩項工具。

警告

如果您同時使用了 RHN Proxy Server 與 RHN Satellite Server,請使用 RHN Push 即可。Proxy-Satellite 的組合僅需要將自訂套件與頻道上傳至 Satellite。Proxy 會從該處獲得套件,並發送到用戶端系統上。

6.1. 上傳套件至 RHN Proxy Server

RHN Package Manager 能讓組織透過 RHN Proxy Server 處理與私密 RHN 頻道相聯的自訂套件。若組織希望 RHN Proxy Server 僅處理正式的 Red Hat Enterprise Linux 套件,請勿安裝 RHN Package Manager
要使用 RHN Package Manager,請安裝 rhns-proxy-package-manager RPM 套件及其相依套件。此套件可以在已註冊的 RHN Proxy Server 系統上找到,或以執行 up2date rhns-proxy-package-manager 的方式安裝。

注意

只有套件的表頭資訊會上傳到 RHN 伺服器上。表頭是必備的資訊,這樣 RHN 才可以解決用戶端系統上,套件的相依性問題。真正的套件檔案(*.rpm)會儲存在 RHN Proxy Server 上。因此,雖然自訂套件都列了出來,但卻不能透過 RHN 網站下載。這些套件必須在用戶端上,透過 up2date 存取。

6.1.1. 設定與使用 RHN Package Manager

在您使用 RHN Package Manager 將套件上傳到 RHN 之前,您需要先手動複製套件到 Proxy 伺服器。舉例來說,您可以在發展機器上用 scp 指令。
scp foo.rpm root@rhnproxy.example.com:/tmp
當使用 RHN Package Manager 將套件上傳到 Red Hat Network 時,指向您之前複製到伺服器的檔案。

注意

在將自訂套件上傳至 Red Hat Network 前,請建立至少一個私有頻道,以接收這些套件。這是因為系統要收到套件前,頻道是必要的東西。
以下指令會將套件的表頭上傳至 RHN 伺服器,並將套件複製至 RHN Proxy Server 的軟體庫:
rhn_package_manager -c label_of_private_channelpkg-list
label_of_private_channel 是個建立來取得這些套件的自訂頻道。請確認您使用建立頻道時所設立的精確頻道標籤。如果您要指定一或多個頻道(透過 -c--channel),所上傳的套件表頭會與所有指定的頻道相連結。若您未指定頻道,套件將存在「套件管理」網頁中的「無頻道」一節中。有關於重新指定套件上的說明,請參閱 節 4.6, “將套件指定給軟體頻道”
pkg-list 參考了要上傳套件的清單。這些套件必須已經複製到 Proxy 主機上。否則的話,請使用 -d 選項,指定包含要加入頻道的套件之目錄。RHN Package Manager 也可以從標準輸入讀取套件清單(使用 --stdin 選項)。
其他選項會在一個設定檔中指定,例如 Red Hat Network 伺服器網址、HTTP 代理伺服器的使用者名稱與密碼(如果您的 HTTP 代理伺服器需要認證的話),以及套件所在地的上層目錄。此特定設定一定「不能被」修改,並且必須位在 /etc/rhn/default/rhn_proxy_package_manager.conf 中。您可以藉由修改主設定檔 /etc/rhn/rhn.conf 或透過傳送到 RHN Package Manager 的指令列選項,覆寫預設設定檔中的這些選擇。
不在此檔案中設定的參數會從目前登入的使用者家目錄的 .rhn_package_manager 中讀取,最終會從 /etc/rhn/rhn_package_manager.conf 中讀取。請確定所有這些檔案都有正確的存取權限,以避免其他使用者讀取。
在上傳套件之後,請檢查本機目錄是否與 RHN 伺服器的頻道映像同步:
rhn_package_manager -s -c name_of_private_channel
-s 選項會列出所有遺失的套件,也就是已經上傳到 RHN 伺服器,但不存在於本機目錄的套件。您必須是組織管理員才可以使用此選項。此應用程式會提示您輸入 RHN 使用者名稱與密碼。
--copyonly 選項會將參數中列出的套件複製到特定的頻道中,而不會上傳到 Satellite 上。這對於在 RHN Proxy Server 上的頻道遺失了一個套件,而您不想重新匯入頻道中的所有套件時,特別有用。
rhn_package_manager -c channel-name --copyonly /path/to/missing/file
您也可以使用 RHN Package Manager 來擷取頻道內的套件清單,因為它們都儲存在 RHN 伺服器上:
rhn_package_manager -l -c name_of_private_channel
-l 選項會列出位於特定頻道的每個套件名稱、版本號碼、釋出版本、架構,以及頻道名稱。欲取得額外選項上的相關資訊,請參閱 表格 6.1, “rhn_package_manager 選項”
表格 6.1, “rhn_package_manager 選項”RHN Package Managerrhn_package_manager)的所有指令列選項摘要。

表格 6.1. rhn_package_manager 選項

選項 描述
-v, --verbose 增加標準輸出訊息的詳情。
-d, --dir DIRECTORY_NAME 從此目錄處理套件。
-c, --channel CHANNEL_NAME 指定收到套件的頻道。您可以使用多個 -c,指定多個頻道(例如 -c channel_one -c channel_two
-n, --count NUMBER 每次調用時,處理這個數量的表頭 — 預設值為 32。
-l, --list 列出特定頻道的套件。
-s, --sync 檢查本機目錄是不是與伺服器的同步。
-p, --printconf 印出目前的配置並離開。
--newest 只將更新的套件推送到伺服器上。請注意,原始碼套件檔是很特別的,因為其版本不會互相進行比較。新舊與否取決於它們的相關二進位套件。使用 RHN Package Manager 此選項與一個原始碼套件檔會上傳套件,但是原始套件並不會出現在 RHN 網站介面中,除非相關的二進位套件也上傳。請將這個與 --source 相比較。合用 --source --newest 選項「」以更新的版本更新獨立的原始碼套件,並不需要先上傳相關的二進位檔。
--source 上傳所指示的原始碼套件。這麼作會將其視為獨立套件,而「不會」將它們視為與另一個現存的二進位套件相互關聯的特別原始碼套件。舉例來說,在正規原始碼控制管理之外,若您希望將應用程式原始碼發佈給開發和測試人員的話,便可以這麼作。
--stdin 從標準輸入讀取套件名稱。
--nosig 即使套件沒有簽署,依舊繼續執行。
--no-ssl 關閉 SSL(不建議)。
--stdin 從標準輸入讀取套件名稱。
--username USERNAME 指定 RHN 的使用者名稱。如果您沒有輸入使用者名稱,系統會提示您輸入頻道管理者的使用名稱。
--password PASSWORD 指定 RHN 密碼。如果您沒有輸入密碼,系統會提示您輸入頻道管理者的密碼。
--dontcopy 在上傳後的步驟中,不複製套件到套件樹中的最後位置。
--copyonly 僅複製套件,不將它們重新匯入。
--test 僅列出將被推送的套件清單。
-?, --help 顯示求助清單,包括選項清單。
--usage 簡短描述可用選項。
--copyonly 僅複製套件

注意

這些指令列選項在 rhn_package_manager 的 man page 中有所描述:man rhn_package_manager