Linux Serverのオフラインアップデート
わけがあり、オフラインのCentOSをアップデートをすることになりました。
ここでまずやらないといけないことは、
オフラインのCentOSの構成情報と、パッチ取得用の構成情報を合わせないといけないことです。
#yum list updated
コマンドを実行したが、コマンドの性質上オンラインリポジトリに確認しにいき、ダメだったらそのまま処理が終わるというyumの仕様だった。
#yum -C list updated
次はこれを実行だが、結果が期待通りでない。おそらくだが、UPDATE対象のCentOSはyumで一回もUPDATEをしていない処女CentOSだったのだ。
ムムム。と思いつつ。RPMでとりあえずリストを取ることにした。
#rpm -qa --qf "%{NAME}-%{VERSION}¥n" > src_rpm.txt
こんな感じで、名前とバージョンを取る。なぜパッケージ名ーバージョンという形にするかというと、YUMでバージョンを指定してインストールする場合は、バージョン情報がいるからだ。
これで取得した。そして、USBに先ほど取得したデータを入れパッチ取得用PCにマウントさせてLet's Update!
さっき取得したファイルは、
rpm-XXXXXXX
yum-XXXXXXX
みたいな感じでパッケージ-バージョンで1行ずつに書かれている。
バッチを作って一括で適用!!
ここで注意するのは、オフラインリポジトリを作るために、パッケージをダウンロードするということだ。
ちなみにCentOS6.2では、最初からインストールされていなかったので下記のコマンドでインストール
#yum install yum-plugin-downloadonly
#!bin/bash
while read line
yum install --downloadonly $line
do < /mnt/usb/src_rpm.txt
これでとりあえず、ダウンロード完了したってことで /etc/cache/yum/のなかにあるパッケージを見てみよう。
見てみると、CentOSの系統>ビット表示>パッチデータとなっている。
baseとかupdateとか書いてある。
ここまで確認したら、次はローカルリポジトリを作成する。
インストールされていない場合は、下記のコマンドでインストール
#yum install createrepo
これで、リポジトリを作成
#createrepo .
実行した後、lsでディレクトリをみるとrepoっていうディレクトリができている。
これでうまくできたので、今度はyumの設定を変えていく。
/etc/yum_/repos.d/centos.repo
今回は、CentOSにしているが.repoの名前はなんでもいい。自動的にyumが読み込んでくれる。
#vi /etc/yum_/repos.d/centos.repo
ファイルの中身は、こんな感じ
name=CENTOS
baseurl=file:// ←ここにリポジトリのあるパスを絶対パスで書く
metadata_expire=-1
gpgcheck=0
enabled=1
これが終わったら
#yum install
これでとりあえず、構成情報はオフラインのものと同じものが入った。
そしたら、今度は、さっき作ったファイルをリネームかして一回ローカルリポジトリを無効にしよう。
#rename /etc/yum_/repos.d /etc/yum/reposss.d
そしたら、ダウンロードのみでupdateコマンド実行
#yum update --downloadonly
updateが終わったらもう一回、名前を直す。
#rename /etc/yum/reposss.d /etc/yum_/repos.d
そして、
#yum update
これで ついに終わった。
あとは、オフライン機にも適用をして
コングラッチレーション!!