著者:飯坂剛一 (いいさかごういち)

Release: 2007/12/07

はじめに

この資料ではCenOSのミラーサイトからISOイメージや、 レポジトリ、Updatesパッケージを入手するための スクリプトを紹介します。

Makefile での処理

通常はコンパイルやリンクなどプログラム開発で使用されるmakeコマンドですが、 あらかじめ登録しておいたコマンド群をコマンドラインから指示して 実行させることもできます。

次のような行をMakefile中に記述することが多いはずです。

clean:
        @rm -f *.o *~

makeコマンドは引数に与えた文字列にマッチするコマンド群を実行します。

$ make clean

rmコマンドの前にアットマーク記号(@)があれば、 そのコマンドラインをエコー表示しません。

makeを使ってメニュー機能を提供する

makeコマンドを利用してメニューのような動作をさせています。

default: help

.PHONY: help
help: shorthelp
        @echo

.PHONY: shorthelp
shorthelp:
        @echo
        @echo "    CentOS-$(DISTVER) mirror utility"
        @echo "    -------------------------------------------------"
        @echo "    make help              -- Short help"
        @echo "    make longhelp          -- Long help"
        @echo "    make setup             -- Setup directory tree"
        @echo "    make clean             -- Clean unused index.html"
        @echo "    -------------------------------------------------"
        @echo "    make update            -- Mirror updates"
        @echo "    make update-iso-all    -- Create ISO images of updates"
        @echo "    make get-isos          -- Get ISO images"
        @echo "    make get-extras        -- Get extra packages"

.PHONY: longhelp
longhelp: shorthelp
        @echo "    -------------------------------------------------"
        @echo "    make update-iso-i386   -- Create ISO image for i386 updates"
        @echo "    make update-iso-x86_64 -- Create ISO image for x86_64 updates"
        @echo "    make update-iso-SRPMS  -- Create ISO image for SRPMS updates"
        @echo "    make md5sums           -- Create MD5SUMS of ISO image for updates"
        @echo "    -------------------------------------------------"
        @echo "    make get-iso-i386      -- Get ISO image for i386"
        @echo "    make get-iso-x86_64    -- Get ISO image for x86_64"
        @echo "    make get-extras-i386   -- Get extra RPMS packages for i386"
        @echo "    make get-etxras-x86_64 -- Get extra RPMS packages for x86_64"
        @echo "    make get-etxras-SRPMS  -- Get SRPMS fo extra packages"
        @echo "    make get-centosplus-i386   -- Get extra RPMS packages for i386"
        @echo "    make get-centosplus-x86_64 -- Get extra RPMS packages for x86_64"
        @echo "    make get-centosplus-SRPMS  -- Get SRPMS fo extra packages"
        @echo

こう記述しておくと、引数がなく単に make とだけ実行するか、 make help と実行すると次のようなにメニューを表示するような 動作をさせることができます。

[iisaka@IisakaLaptop Linux]$ make help

    CentOS-Linux mirror utility
    -------------------------------------------------
    make help              -- Short help
    make longhelp          -- Long help
    make setup             -- Setup directory tree
    make clean             -- Clean unused index.html
    -------------------------------------------------
    make update            -- Mirror updates
    make update-iso-all    -- Create ISO images of updates
    make get-isos          -- Get ISO images
    make get-extras        -- Get extra packages

使い方

はじめにここから CentOS-mirror.mk をダウンロードして、 適当なディレクトリに保存しておきます。

CentOS-mirror.mk

次にディレクトリを作成することになりますが、 このディレクトリをリリースバージョンと同じにします。

そこに保存しておいたCentOS-mirror.mk を Makefile として コピーします。

次の実行例はCentOS-4.5のダウンロードを行うときのものです。

$ mkdir -p 4.5
$ cp /home/iisaka/util/CentOS-mirror.mk  4.5/Makefile
$ cd 4.5
$ ls
Makefile
$ make setup
$ ls
Makefile  centosplus/  extras/  i386/  updates/  x86_64/
$ make setup
$ make get-isos

CentOSミラーサイトがリリースバージョンを ディレクトリで区別しているのを利用しています。

このMakefileは自分が置かれたディレクトリ名と同じ、 ディレクトリつまりリリースバージョンをダウンロードしますので、 ディレクトリ名を帰ることでダウンロードする対象が変わります。

つまり、同じMakefileがCentOS-4.5でもCentOS-5.1でも使えます。