Linux Serverのオフラインアップデート

わけがあり、オフラインのCentOSをアップデートをすることになりました。

ここでまずやらないといけないことは、

オフラインのCentOSの構成情報と、パッチ取得用の構成情報を合わせないといけないことです。

#yum list updated

コマンドを実行したが、コマンドの性質上オンラインリポジトリに確認しにいき、ダメだったらそのまま処理が終わるというyumの仕様だった。

#yum -C list updated

次はこれを実行だが、結果が期待通りでない。おそらくだが、UPDATE対象のCentOSyumで一回も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


これで ついに終わった。


あとは、オフライン機にも適用をして


コングラッチレーション!!