CentOS のアップデート用 ISO ファイルを自動生成する

前回のエントリーでは、自動生成のところまでは行けなかったのだけど、自動生成するところまでやってみたよ。

とりあえず、これでできることが判ったので〜、ミラーサーバからのパッケージダウンロードから先の手順をスクリプト化しておいて、1日1回実行しておけば、手軽に最新のアップデート用 ISO ファイルを準備する、ってことも出来るわけです。

[From アップデートサーバにダイレクトアクセス出来ない環境下で、CentOS をアップデート - Soukaku's HENA-CHOKO Blog]

やってることは、前回書いたことを、bash で実行するスクリプトにしただけなので、大したことはやってないんですけど…。
簡単に説明しておくと、

  1. アップデートされたパッケージがないか、CentOS の mirrorサイトをチェック
  2. アップデートがあったら、それをダウンロード → リポジトリ化 → ISO ファイル生成(アーキテクチャごとに繰り返し)

という流れ。


#!/bin/bash
set -o xtrace
OURCE_DIR="/opt/centos/6.4"
TARGET_DIR="/opt/C6-Update"
cd $SOURCE_DIR
/usr/bin/lftp -e 'open http://ftp.iij.ad.jp/pub/linux/centos/6.4/ && mirror -c --delete --log=/opt/updateCheck.log updates && exit'
if [ -s /opt/updateCheck.log ] ; then
    RUNDATE=`/bin/date +%Y%m%d`
    for ARCH in i386 x86_64 ; do
        /usr/bin/rsync --progress --delete --exclude=drpms -av $SOURCE_DIR/updates/${ARCH}/ $TARGET_DIR/${ARCH}/
        /usr/bin/createrepo $TARGET_DIR/${ARCH}/
        /usr/bin/mkisofs -r -R -J -T -v -V "CentOS 6.4 ${ARCH} Update" -x "lost+found" -o /opt/C6-Update-${ARCH}_$RUNDATE.iso $TARGET_DIR/${ARCH}/
    done
fi

このスクリプトを、一週間おきとか一ヶ月おきとかに流しておけば、自動的に ISO ファイルが生成されますです、ハイ。

一応、9 行目の lftp コマンドの実行で、ダウンロードが行われたかどうかは、ログファイルとして指定した "/opt/updateCheck.log" のファイルサイズでチェックしています。ダウンロードが行われないと、このファイルのサイズは 0 バイトなので、0 バイトでなかったらレポジトリ化以降の処理を行う、と。

要らないデータ( updates/ 以下の各アーキテクチャディレクトリの中の drpms/ )は最初からダウンロードしないとか、場合によっては i386 、 x86_64 のどちらか一方あればいいということもあると思うので、そのへんは利用する方の事情に合わせていただければよいかと…。
#参考までに、updates ディレクトリを丸々ダウンロードしておくと40GB近く、 i386 と x86_64 両方のアップデート ISO が生成される毎に 5GB 強のディスクを消費します。

トラックバック(0)

コメントする