
在我們的業務伺服器上,由於各種原因我們想要使用rpm包,但我們無法將rpm包安裝到系統資料庫中(權限、多實例等)。因此,我們建立了自己的本機 rpmdb,並以非 root 身分並使用 --dbpath 參數安裝軟體包。所以目前我們的本地資料庫可能只有 10 個套件。這效果很好,允許非 root 安裝,並且允許相同套件的多個實例,因為正在使用多個 rpmdb。缺點是所有內容都必須使用 --nodeps 安裝,因為我們的本機資料庫看不到在系統層級安裝的任何軟體包。
為了解決 --nodeps 問題,我可以透過多種方法使用目前系統資料庫初始化本機資料庫(例如,只需複製 /var/lib/rpm/Packages 並重建)。然後在上面安裝我們的應用程式套件應該可以讓我們充分利用依賴項。但問題是如何在第一次複製後保持系統包同步。如果管理員安裝了系統補丁,則只會更新系統 rpmdb。我正在尋找某種方法來編寫夜間批次作業,該作業將比較更新並將僅資料庫更新應用於我們的本機副本。
有什麼想法可以使用什麼指令來完成這個任務嗎?
謝謝你的幫忙。布萊恩
答案1
--nodeps
、可重定位套件以及手動管理 Berkeley DB 都很痛苦。你想同時做這三件事嗎?我不建議這樣做,這讓套件管理倒退了 20 年。Fedora 或 EL 中很少有軟體包是可重定位的,因為它無法由 yum 管理。此外,nodeps 意味著您可能會陷入無法透過 yum 輕鬆修復的依賴關係。
為使用者需要的每個實例提供一個“主機”。 VM、容器、chroot ( yum --installroot
),其中任何一個都可能比與 RPM 爭鬥的時間更便宜。
自動化配置。制定程序,使用者可以在包集中提出更改,並及時進行審查。可能會授予某些使用者測試實例的權限,這樣他們就可以在不破壞任何重要內容的情況下嘗試。
重新打包任何內容,無需重新定位或備用 rpmdb。移動到不衝突的路徑,使用名稱中的版本號碼製作單獨的套件。一般來說,請遵循 Fedora RPM 打包指南。然後就可以用 yum 來管理套件了。