オフライン使用に必要なすべてのRPMを取得するためにyumを使用する方法は?

オフライン使用に必要なすべてのRPMを取得するためにyumを使用する方法は?

"yum install $PACKAGE"を使用できるネットワーク接続を持つサーバーがあります。必要なすべてのRPMファイルを$ DIRECTORYにダウンロードできる
ように、いくつかのyumコマンドが必要です。 $ DIRECTORYには、ネットワーク接続なしで他の多くのサーバーにこれらのRPMをインストールする手順を説明するyum cache-rpms $PACKAGE $DIRECTORYファイル()も含まれています。ネットワークを使用する代わりに。Install.sh
Install.shyum install $PACKAGE$DIRECTORY

可能ですか?

私はyumとRPMを使用できる一般的なソリューションを探しています。特に CENTOS 6.7 サーバーセットにあります。

答え1

以下は、ダウンロードおよびインストールパッケージとして「httpd」を使用した具体的な例です。この手順は CentOS6 および CentOS7 でテストされました。

必要なものをインストールしてダウンロードしたRPMのためのスペースを作ります。

# yum install yum-plugin-downloadonly yum-utils createrepo
# mkdir /var/tmp/httpd
# mkdir /var/tmp/httpd-installroot

RPMをダウンロードしてください。これは以下を使用します。ここにルートスキルをインストールすることをお勧めします空のルートディレクトリには何もインストールされていないため、すべての依存関係を強制的に完全にダウンロードします。 Yumはその中にいくつかのメタデータを生成しますが、私たちはそれをすべて捨てます。 CentOS7の場合、releasever値は「7」です。

# yum install --downloadonly --installroot=/var/tmp/httpd-installroot --releasever=6 --downloaddir=/var/tmp/httpd httpd

はい、そうです。以前は小さなバージョン。リポジトリ全体のダウンロードサイズを確認しました!

新しいRPMヒープをYUMリポジトリに変換し、不要になったものをクリーンアップするために必要なメタデータを作成します。

# createrepo --database /var/tmp/httpd
# rm -rf /var/tmp/httpd-installroot

ダウンロードディレクトリをリポジトリとして設定します。 CentOS7の場合、gpgkey名は「6」ではなく「7」と指定されます。

# vi /etc/yum.repos.d/offline-httpd.repo
[offline-httpd]
name=CentOS-$releasever - httpd
baseurl=file:///var/tmp/httpd
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

欠落している依存関係を確認するには、次の手順を実行します。

# repoclosure --repoid=offline-httpd

libssl.so.10(libssl.so.10)(64bit)CentOS7では、このレポートに(ライブラリプロバイダ)ディレクトリに明示的に存在する情報が欠落している理由を特定できませんでしたhttpd-toolsopenssl-libs-1.0.1e-51.el7_2.2.x86_64.rpmしかし、何か欠けていることが明白であれば、戻ってきてyum install --downloadonly上記と同じ方法を使用して追加する良い機会になることができます。

オフラインの場合、または/var/tmp/httpdストレージディレクトリを別のサーバーにコピーしてから、そのサーバーにストレージを設定します。

# vi /etc/yum.repos.d/offline-httpd.repo
[offline-httpd]
name=CentOS-$releasever - httpd
baseurl=file:///var/tmp/httpd
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
# yum --disablerepo=\* --enablerepo=offline-httpd install httpd

依存が消えないように!

答え2

あまりにも必要なので、自動的に@Steve Bondsと答えました。PKG両方のシステムにインストールするパッケージとして定義する必要があります(免責事項:CentOS 7の場合。CentOS 6の場合と--releasever場所CentOS-7を変更します。

オンラインマシン

PKG=... # NAME OF THE PACKAGE TO INSTALL ON OFFLINE MACHINE
yum install --downloadonly --installroot=/tmp/$PKG-installroot --releasever=7 --downloaddir=/tmp/$PKG $PKG
createrepo --database /tmp/$PKG
rm -rf /tmp/$PKG-installroot
rsync -arv /tmp/$PKG/ [IP of the machine]:/tmp/$PKG

オフラインマシンから:

PKG=... # NAME OF THE PACKAGE
echo "[offline-$PKG]
name=CentOS-\$releasever - $PKG
baseurl=file:///tmp/$PKG/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7" >  /etc/yum.repos.d/offline-$PKG.repo

# install package offline:
yum --disablerepo=\* --enablerepo=offline-$PKG install --nogpgcheck $PKG

答え3

yumdownloaderパッケージに何が含まれているかお問い合わせいただいたようですyum-utils。これに関するいくつかの質問と回答がすでにあります。すでにインストールされていても、すべての依存関係をダウンロードするにはyumdownloaderを使用する必要がありますか?またはYumを使用してパッケージURLを見つける方法は?

yumdownloaderパッケージはダウンロードされますが、ファイルは生成されません。Install.sh順序はyum自体によって決定されるため、
yum install ./*rpmダウンロードしたパッケージを含むフォルダを介してターゲットコンピュータにパッケージをインストールできます(基本インストールと同様に上記のセクションを参照)。リンクrepotrack

関連情報