在沒有任何網際網路存取權限的伺服器上安裝 RPM 套件

在沒有任何網際網路存取權限的伺服器上安裝 RPM 套件

我有一個最小的 CentOS 伺服器,無法上網。我們就這樣稱呼它吧伺服器A

我的目標是建立一個 shell 腳本檔案來為應用程式安裝特定版本的本機 RPM 檔案。假設目標應用程式是 Apache。問題是每個 RPM 都有依賴性。

在可以存取互聯網的另一台伺服器上,我稱之為伺服器B,我下載包:

wget http://repo.okay.com.mx/centos/7/x86_64/release/httpd-2.4.35-5.el7.x86_64.rpm

然後將其移至伺服器 A 並嘗試安裝:

rpm -i httpd-2.4.35-5.el7.x86_64.rpm

yum 安裝依賴截圖:
yum 安裝依賴項截圖

它有幾個要求:

rpm -qpR httpd-2.4.35-5.el7.x86_64.rpm

瀏覽依賴項截圖:
瀏覽依賴項截圖

我無法理解一些要求:

1-什麼是/etc/mime.types?我沒有這樣的文件。我可以從哪裡得到它?

2-某些軟體包被多次提及,例如

systemd-utils
systemd-utils
systemd-utils

這是什麼意思?

3- 某些軟體包有多種變體。我應該安裝其中哪一個? libc.so

4- 列表似乎是按字母順序排序的。安裝順序是什麼?

5- 該dnf repoquery指令還提供了不同的清單。我應該遵循哪一個?

dnf repoquery截圖:
dnf repoquery 截圖

6-是否有更自動的方法來執行我正在尋找的操作?

答案1

# Install Yumdownloader using the following command as root user.

yum install yum-utils

# Once installed, run the following command to download a package, for example httpd.
# To download packages with all dependencies, use --resolve option:

mkdir httpd && cd httpd && yumdownloader --resolve httpd

# it will download httpd with all dependencies into working dir.

在centos 7上在docker內測試:

[root@187dddae557b httpd]# ls
apr-1.4.8-7.el7.x86_64.rpm                   httpd-2.4.6-97.el7.centos.5.x86_64.rpm
apr-util-1.5.2-6.el7.x86_64.rpm              httpd-tools-2.4.6-97.el7.centos.5.x86_64.rpm
centos-logos-70.0.6-3.el7.centos.noarch.rpm  mailcap-2.1.41-2.el7.noarch.rpm

答案2

  1. 在這種情況下,建立可由相關主機存取的本機儲存庫會容易得多。
  2. dnf提供更大的列表,因為它顯示所有依賴項,而不僅僅是缺失。
  3. 如果您想使用這種方式,只需下載dnf所需的軟體包並安裝它們。
  4. 例如rpm,您看到依賴包,apr15下載它,傳輸它,安裝它,然後再次嘗試安裝主包。當您只看到檔案名稱時,您可以嘗試yum provides /etc/mime.types取得套件名稱。

相關內容