Centos

如何在完全隔離的機器上安裝 RPM?

  • February 18, 2019

所以我有一台機器上安裝了 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

分解時,其他任何事情都將是一場噩夢。

引用自:https://serverfault.com/questions/954201