「yum install $ PACKAGE」を使用できるネット接続のサーバーが1台あります。
必要なすべてのRPMファイルが$ DIRECTORYにダウンロードされるように、yum cache-rpms $PACKAGE $DIRECTORY
などのいくつかのyumコマンドが必要です。これには、インストールする順序を示すファイル(Install.sh
)も含まれます。これらのRPMは、ネット接続のない他の多くのサーバー上にあります。Install.sh
は、ネットワークを使用せず、yum install $PACKAGE
のみを使用することを除いて、$DIRECTORY
と同じ動作をするシェルスクリプトである場合もあります。
可能?
YumとRPMが利用できる一般的なソリューションを探していますが、具体性のために、それはCENTOS 6.7サーバーのセット上にあります。
ダウンロードしてインストールするパッケージとして「httpd」を使用する特定の例を次に示します。このプロセスは、CentOS6とCentOS7の両方でテストされました。
必要なものをインストールし、ダウンロードしたRPMを置く場所を作ります。
_# yum install yum-plugin-downloadonly yum-utils createrepo
# mkdir /var/tmp/httpd
# mkdir /var/tmp/httpd-installroot
_
RPMをダウンロードします。これは ここで提案されているinstallrootトリック を使用して、空のルートには何もインストールされていないため、すべての依存関係の完全ダウンロードを強制します。 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
_
CentOS7で_httpd-tools
_(そのライブラリのプロバイダー)がディレクトリに明確に存在する場合に、libssl.so.10(libssl.so.10)(64bit)
のようなものが_openssl-libs-1.0.1e-51.el7_2.2.x86_64.rpm
_から欠落していると報告される理由がわかりません。それでも、明らかに何かが欠けている場合は、これは前に戻って、上記の同じ_yum install --downloadonly
_メソッドを使用して追加する良い機会です。
オフラインのとき、または_/var/tmp/httpd
_ repoディレクトリを他のサーバーにコピーした後、そこにrepoを設定します。
_# 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
_
うまくいけば依存関係が欠けていません!
何度か必要だったので、@ Steve Bondsの回答を自動化しました。両方のマシンにインストールするパッケージとしてPKG
を必ず定義してください(免責事項:CentOS 7の場合)。CentOS6の場合は--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
yum-utils
パッケージに含まれているyumdownloader
を要求しているようです。これについてはすでにいくつかの質問と回答があります。 すでにインストールされている場合でも、yumdownloaderを使用してすべての依存関係をダウンロードしますか? または Yumを使用してパッケージURLを見つけるにはどうすればよいですか?
yumdownloader
はパッケージをダウンロードしますが、ファイルは生成されませんInstall.sh
は、yum自体で順序を決定できるため、次のようにしてターゲットボックスにパッケージをインストールできます。yum install ./*rpm
は、ダウンロードしたパッケージのフォルダーにあります(基本インストールと比較してすべての依存関係を含める必要があります-repotrack
に関する上記の最初のリンクを参照してください)