在没有互联网访问的服务器上安装 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- 一些软件包有多种变体。我应该安装哪一个? 库文件

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.

在docker中的centos 7上测试:

[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. 在这种情况下,创建相关主机可以访问的本地 repo 将变得更加容易。
  2. dnf提供更大的列表,因为它显示所有依赖项,而不仅仅是缺失的依赖项。
  3. 如果您想使用此方式,只需下载dnf所需的软件包并安装它们。
  4. rpm例如,当您看到依赖包apr15时,请下载它、传输它、安装它,然后再次尝试安装主包。当您只看到文件名时,您可以尝试yum provides /etc/mime.types获取包名称。

相关内容