のぴぴのメモ

自分用のLinuxとかの技術メモ

yumで特定のバージョンのrpmパッケージとそのパッケージの依存パッケージをダウンロードする

RHELで、yumレポジトリに接続できない環境のRHELを、最新版でない特定バージョンのカーネルにあげたいという話があり検証した結果です。

1.検証概要

  • やること:隔離された環境のRHEL7.2(3.10.0-327.el7)をRHEL7.5相当のカーネル(3.10.0-862.14.4)にアップデートする
  • 検証利用AMI:RHEL-7.2_HVM_GA-20151112-x86_64-1-Hourly2-GP2

検証概要:代替えインスタンスでRHUIからrpmをyumdownloaderでダウンロードして、転送してrpmコマンドでアップロードする

2.手順

2.1 代替えインスタンでのrpmパッケージダウンロード

(1)作業用インスタンスとして、RHEL7.2のインスタンスを作成する

インターネット接続が可能なVPCのパブリックサブネット状に、コミュニティAMI(RHEL-7.2_HVM_GA-20151112-x86_64-1-Hourly2-GP2 )からインスタンスを作成する。

(2) yumdownloaderのインストール

代替えインスタンスログイン後、まずは必要なコマンドをインストールする

sudo yum -y install yum-utils
(3) rpm作業用ディレクトリ作成
mkdir update_packages
cd update_packages && pwd
(4) 対象カーネルrpmを確認

(a) アップデートしたいカーネルバージョンがRHUIにあるかを確認

sudo yum --showduplicate list kernel
  • "--showduplicate"はリポジトリで利用可能な全てのバージョンを表示するオプションです(通常は最新バージョンのみ表示)

(b) 該当バージョンのパッケージ名称の確認

sudo yum list kernel-3.10.0-862.14.4.el7
(5)対象rpmパッケージをダウンロードする
sudo yumdownloader --resolve kernel-3.10.0-862.14.4.el7
  • "--resolve”が、依存関係をチェックして必要なパッケージをまとめてダウンロードするオプションです。
(6)対象rpmパッケージを対象インスタンスに転送
cd ..
tar czf update_packages.tar.gz update_packages

なんらかの方法で作成したupdate_packages.tar.gzを、アップデート対象インスタンスに持ち込む

2.2 アップデート対象インスタンでアップデート

(1)現状のカーネルバージョンの確認

アップデート対象インスタンスログイン後に、

cat /proc/version 
Linux version 3.10.0-327.el7.x86_64 (mockbuild@x86-034.build.eng.bos.redhat.com) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Thu Oct 29 17:29:29 EDT 2015
(2)rpmパッケージの準備
tar xzf update_packages.tar.gz 
cd update_packages
(3) カーネルアップデート
sudo rpm -U *.rpm
(4) リブートしてバージョンを確認
sudo shutdown -r 0
<再ログイン後>
cat /proc/version
Linux version 3.10.0-862.14.4.el7.x86_64 (mockbuild@x86-040.build.eng.bos.redhat.com) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) ) #1 SMP Fri Sep 21 09:07:21 UTC 2018