インターネットにアクセスできないサーバーに RPM パッケージをインストールする

インターネットにアクセスできないサーバーに RPM パッケージをインストールする

私はインターネットにアクセスできない最小限のCentOSサーバーを持っています。サーバーA

私の目標は、アプリケーション用のローカル 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.

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. このような場合、問題のホストからアクセスできるローカル リポジトリを作成する方がはるかに簡単になります。
  2. dnf欠落している依存関係だけでなく、すべての依存関係が表示されるため、より大きなリストを提供します。
  3. この方法を使用する場合は、dnf必要なパッケージをダウンロードしてインストールするだけです。
  4. を使用するとrpm、依存パッケージが表示されます。たとえば、ダウンロードして転送し、インストールしてから、メイン パッケージのインストールを再試行します。ファイル名のみが表示される場合は、 を使用してパッケージ名を取得してapr15みてください。yum provides /etc/mime.types

関連情報