Centos
如何在完全隔離的機器上安裝 RPM?
所以我有一台機器上安裝了 CentOS Minimal,僅此而已。它是完全隔離的。這意味著以下內容:
- 它永遠無法連接到另一台伺服器或筆記型電腦
- 我唯一能連接到它的是一個 U 盤。
我的目標:
- 在其上執行
yum install docker
,以便它可以執行容器。所以我在Google上搜尋瞭如何下載一批 RPM 及其依賴項,然後將它們安裝在離線系統上。
所以我在我的 macOS 筆記型電腦上做了這個:
$ docker run -v $PWD/pkg:/pkg centos:7 # mkdir /tmp/empty # yum install -y \ --installroot /tmp/empty \ --releasever 7 \ --downloadonly \ --downloaddir /pkg \ docker
現在我在一個文件夾中有很多 RPM 文件。我把那個文件夾放在 U 盤上,然後把它粘到我隔離的 CentOS 機器上。然後我執行:
$ yum install /tmp/pkg/* ... Error: Package: rpm-python-4.11.3-32.el7.x86_64 (installed) Requires: rpm = 4.11.3-32.el7 Removing: rpm-4.11.3-32.el7.x86_64 (installed) rpm = 4.11.3-32.el7 Updated By: rpm-4.11.3-35.el7.x86_64 (/rpm-4.11.3-35.el7.x86_64) rpm = 4.11.3-35.el7
我還嘗試
createrepo
通過 docker 在我的 Mac 上執行該文件夾,將其放入儲存庫中(因為我createrepo
在隔離的機器上沒有,也無法在其上安裝任何東西)。但它給了我完全相同的錯誤。那麼我在這裡有什麼選擇呢?在我看來,由於依賴地獄,我實際上必須鏡像整個 CentOS 儲存庫。如果我想要一個來自 EPEL 的包裹,我也必須鏡像那個。僅僅為了在隔離的機器上安裝 docker 就需要傳輸和儲存大量 GB。
有什麼可行的解決方案嗎?
額外問題:如果我在隔離的機器上執行 RHEL 而不是 CentOS 會怎樣?
您最好的選擇是在該 USB 磁碟上維護一個更完整的鏡像。您可以使用
reposync
將遠端儲存庫鏡像到您的儲存。定期執行它以使其保持最新。然後,用於createrepo
創建/更新您的儲存庫元數據。最後,在隔離主機上,為該 USB 磁碟的掛載點配置一個 yum 儲存庫。[usb] name=Airgaps Are Fun baseurl=file:///mnt/usbdisk enabled=1 gpgcheck=1 gpgkey=file:///mnt/usbdisk/gpgkey
分解時,其他任何事情都將是一場噩夢。