とはいえ最新のパッケージを適用することもセキュリティ上重要なので、以下の様な手順にて実施することを考える。
①一台、yum用のインターネットに接続するLinuxを構築
②上記のLinuxにてyumを利用して最新のrpmパッケージをダウンロード
③ダウンロードしたrpmパッケージを実際に適用するサーバーへコピー
④ローカルディレクトリをyumリポジトリとして登録し、パッケージを適用
# (2016/5/15追記)
# 上記④についてもっと簡単な方法があった。詳細は別記事参照。
ただし、上記方法はyum用のLinuxサーバを別に構築する必要があって、それなりの手間が発生してしまう。さらに、RHELの場合はサブスクリプションが1台分余計に用意する必要があるということで、コスト面でもデメリットがある点に注意。
(RHELのみ)サブスクリプション登録
RHELの場合はyumを利用する場合は最初にサブスクリプションの登録作業が必要となる。今回30日の評価版サブスクリプションにて実施する。まず、何もしていない状態でyumを実行すると「サブスクリプションが登録されてないよ」というエラーが出力される。
# yum check-update
--------------------------
読み込んだプラグイン:product-id, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
--------------------------
以下コマンドにてサブスクリプションの確認を行うと、状態が不明となっていることがわかる。
# subscription-manager list
--------------------------
+-------------------------------------------+
インストール済み製品のステータス
+-------------------------------------------+
製品名: Red Hat Enterprise Linux Server
製品 ID: 69
バージョン: 6.7
アーキテクチャー: x86_64
状態: 不明
状態の詳細:
開始:
終了:
--------------------------
まずは、サブスクリプションが紐づくRed Hatアカウントの登録を行う。
--------------------------
ユーザー名: <Red Hatアカウント名>
パスワード: <上記のパスワード>
このシステムは次の ID で登録されました: 6956a621-f62a-4fcd-97cb-xxxxxxxxxxxx
--------------------------
再度確認。今度は状態が「サブスクライブしていません」になる。
# subscription-manager list
--------------------------
+-------------------------------------------+
インストール済み製品のステータス
+-------------------------------------------+
製品名: Red Hat Enterprise Linux Server
製品 ID: 69
バージョン: 6.7
アーキテクチャー: x86_64
状態: サブスクライブしていません
状態の詳細: 有効なサブスクリプションでサポートされていません
開始:
終了:
--------------------------
次に利用可能なサブスクリプション一覧を確認する。評価版の30日サブスクリプションが存在することがわかる。赤字箇所の「プールID」をコピーしておく。
--------------------------
+-------------------------------------------+
利用可能なサブスクリプション
+-------------------------------------------+
サブスクリプション名: 30 Day Red Hat Enterprise Linux Server Self-Supported
Evaluation
提供: Red Hat Container Images Beta
Red Hat Beta
Red Hat Enterprise Linux Atomic Host Beta
Oracle Java (for RHEL Server)
Red Hat Container Images
Red Hat Enterprise Linux Server
Red Hat Enterprise Linux Atomic Host
SKU: RH00065
契約: 10947308
プール ID: 8a85f981542c878e0154xxxxxxxxxxxx
管理の提供: いいえ
数量: 2
推奨: 1
サービスレベル: Self-Support
サービスタイプ: L1-L3
サブスクリプションタイプ: インスタンスベース
終了: 2016年05月19日
システムタイプ: 物理
--------------------------
先ほど確認したプールIDを指定して、サブスクリプションの割り当てを実施。
--------------------------
サブスクリプションが正しく割り当てられました: 30 Day Red Hat Enterprise Linux Server Self-Supported Evaluation
--------------------------
最後に確認。状態が「サブスクライブ済み」となればOK。
--------------------------
+-------------------------------------------+
インストール済み製品のステータス
+-------------------------------------------+
製品名: Red Hat Enterprise Linux Server
製品 ID: 69
バージョン: 6.7
アーキテクチャー: x86_64
状態: サブスクライブ済み
状態の詳細:
開始: 2016年04月19日
終了: 2016年05月19日
--------------------------
yumの設定
ダウンロードしたrpmファイルを消さない設定をするため、yum.confを編集する。/etc/yum.conf
--------------------------
cachedir=/var/cache/yum/$basearch/$releasever ←★ダウンロードしたrpmの保存先。確認だけしておく
keepcache=1 ←★ダウンロードしたrpmを消さない設定。0→1へ変更
--------------------------
# yum repolist all
--------------------------
読み込んだプラグイン:product-id, security, subscription-manager
リポジトリー ID リポジトリー 状態
rhel-6-server-beta-debug-rpms Red Hat Enter 無効
rhel-6-server-beta-rpms Red Hat Enter 無効
~(中略)~
rhel-6-server-optional-rpms Red Hat Enter 無効 ←★ここを有効化する
~(中略)~
rhel-6-server-rpms Red Hat Enter 有効: 16,856
~(中略)~
rhel-source Red Hat Enter 無効
rhel-source-beta Red Hat Enter 無効
repolist: 16,856
--------------------------
# yum-config-manager --enable rhel-6-server-optional-rpms
再度確認。
# yum repolist all
--------------------------
読み込んだプラグイン:product-id, security, subscription-manager
リポジトリー ID リポジトリー 状態
rhel-6-server-beta-debug-rpms Red Hat Enter 無効
rhel-6-server-beta-rpms Red Hat Enter 無効
~(中略)~
rhel-6-server-optional-rpms Red Hat Enter 有効: 9,520 ←★有効化された
~(中略)~
rhel-6-server-rpms Red Hat Enter 有効: 16,856
~(中略)~
rhel-source Red Hat Enter 無効
rhel-source-beta Red Hat Enter 無効
repolist: 26,376
--------------------------
yumの実行
yumにてパッケージをインストールせずダウンロードだけするには「downloadonly」のオプションを付与する。# yum update --downloadonly
--------------------------
読み込んだプラグイン:product-id, security, subscription-manager
更新処理の設定をしています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package SDL.x86_64 0:1.2.14-6.el6 will be 更新
---> Package SDL.x86_64 0:1.2.14-7.el6_7.1 will be an update
---> Package bash.x86_64 0:4.1.2-33.el6 will be 更新
---> Package bash.x86_64 0:4.1.2-33.el6_7.1 will be an update
~(中略)~
udev x86_64 147-2.63.el6_7.1 rhel-6-server-rpms 355 k
zip x86_64 3.0-1.el6_7.1 rhel-6-server-rpms 259 k
依存性関連でのインストールをします。:
pcsc-lite-libs x86_64 1.5.2-15.el6 rhel-6-server-rpms 28 k
トランザクションの要約
================================================================================
インストール 2 パッケージ
アップグレード 123 パッケージ
総ダウンロード容量: 214 M
これでいいですか? [y/N]y
パッケージをダウンロードしています:
(1/125): SDL-1.2.14-7.el6_7.1.x86_64.rpm | 193 kB 00:00
(2/125): bash-4.1.2-33.el6_7.1.x86_64.rpm | 908 kB 00:00
(3/125): bind-libs-9.8.2-0.37.rc1.el6_7.7.x86_64.rpm | 887 kB 00:00
~(中略)~
(123/125): tzdata-java-2016d-1.el6.noarch.rpm | 180 kB 00:00
(124/125): udev-147-2.63.el6_7.1.x86_64.rpm | 355 kB 00:00
(125/125): zip-3.0-1.el6_7.1.x86_64.rpm | 259 kB 00:00
--------------------------------------------------------------------------------
合計 801 kB/s | 214 MB 04:33
exiting because --downloadonly specified ←★このメッセージが表示される
--------------------------
ダウンロードされたrpmパッケージは以下ディレクトリに保存されているので、別のディレクトリに退避するなどして保存しておくこと。
/var/cache/yum/x86_64/6Server/rhel-6-server-rpms/packages/
/var/cache/yum/x86_64/6Server/rhel-6-server-optiional-rpms/packages/
ちなみに、ダウンロードしたパッケージを削除する場合は以下コマンド。
# yum clean packages
--------------------------
読み込んだプラグイン:product-id, security, subscription-manager
リポジトリーを清掃しています: rhel-6-server-optional-rpms rhel-6-server-rpms
5 packageファイルを削除しました
--------------------------
ローカルディレクトリをyumのリポジトリにする
例として/root/update_rpmsをリポジトリとして設定する。先ほどダウンロードしたrpmパッケージを事前にこのディレクトリにコピーしておくこと。試しに、このディレクトリに移動して、単純にrpmですべてを適用しようとしても、エラーで弾かれてしまった。# rpm -ivh *
--------------------------
ファイル /usr/bin/zip (パッケージ zip-3.0-1.el6_7.1.x86_64 から) は、パッケージ zip-3.0-1.el6.x86_64 からのファイルと競合しています。
ファイル /usr/bin/zipcloak (パッケージ zip-3.0-1.el6_7.1.x86_64 から) は、パッケージ zip-3.0-1.el6.x86_64 からのファイルと競合しています。
ファイル /usr/bin/zipnote (パッケージ zip-3.0-1.el6_7.1.x86_64 から) は、パッケージ zip-3.0-1.el6.x86_64 からのファイルと競合しています。
ファイル /usr/bin/zipsplit (パッケージ zip-3.0-1.el6_7.1.x86_64 から) は、パッケージ zip-3.0-1.el6.x86_64 からのファイルと競合しています。
--------------------------
しかし、yumであれば依存関係を考慮して一括で適用してくれるのでメリットがある。
まずは、createrepoのパッケージをインストールする。事前にyumでインストールするか、rpmパッケージで個別にインストールしておくこと。私の環境では、依存関係があるパッケージが追加で2つインストールされた。
# yum install createrepo
--------------------------
~(中略)~
インストール:
createrepo.noarch 0:0.9.9-22.el6
依存性関連をインストールしました:
deltarpm.x86_64 0:3.5-0.5.20090913git.el6
python-deltarpm.x86_64 0:3.5-0.5.20090913git.el6
完了しました!
--------------------------
createrepoコマンドにて、リポジトリとして必要な処理を行う。
# createrepo /root/update_rpms
--------------------------
Spawning worker 0 with 125 pkgs
Workers Finished
Gathering worker results
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
--------------------------
以下ファイルを新規作成し、local-repositoryという名前でリポジトリを設定する。
/etc/yum.repos.d/local.repo
--------------------------
[local-repository]
name=local repository
baseurl=file:///root/update_rpms/
gpgcheck=0
enabled=1
--------------------------
上記完了後、yumを実行してみる
# yum clean all ←★一旦yumを綺麗にしておく
# yum repolist all ←★リポジトリの一覧を確認
--------------------------
リポジトリー ID リポジトリー 状態
local-repository local reposit 有効: 125 ←★有効になっている
--------------------------
# yum check-update ←★check-updateの実行でlocal-repositoryが参照されていればOK
--------------------------
~(中略)~
tzdata.noarch 2016d-1.el6 local-repository
tzdata-java.noarch 2016d-1.el6 local-repository
udev.x86_64 147-2.63.el6_7.1 local-repository
zip.x86_64 3.0-1.el6_7.1 local-repository
--------------------------
0 件のコメント:
コメントを投稿