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