メディア(isoファイル)から簡単にローカルのリポジトリーを作成する方法

もう既にいろんなところに転がっていそうだけどはてダのリハビリがてら.

前書き

CentOS 6.0が出た記念に自宅でも入れてみようか…と思ったけど引越し直後,自宅の環境がいろいろな理由で貧弱になっており,ネットワークにつながらないATOMなマシンが1台…仕方なしにunetbootinを使って入れてみました.が,ネットワークにつながらない状況とはいえyumも使えないと面倒くさいので,ローカルでyumが使える環境を作ってみました.

やることの概要

簡単にいうと,インストール メディア内の/Packages/と/repodata/を1つのディレクトリー内にかき集めます.
難しく書いても大体そんな感じです(何

事前準備

CentOS 6.0(CentOS 5系も)は/etc/yum.repos.d/CentOS-Media.repoというリポジトリーの設定ファイルがあり,これは「/media/CentOS/」「/media/cdrom/」「/media/cdrecorder/」のいずれかにリポジトリーがあることを期待した設定になっています.今回はこの中から「/media/CentOS/」をリポジトリーの作成先にします.

disc1のコピー処理をする.

適当にマウントしてください.
今回は/mnt/cdmediaがメディア,isoファイルのマウント先と仮定します.isoファイルはディレクトリー/home/elf/isos/に既に保存していると仮定します.
もしかしたら読者の方は違うところにマウントをしたいかもしれないし,isoファイルは別のディレクトリーに保存しているかもしれませんが,よしなに読み替えてください.

isoファイルをマウントする場合

# mount -o loop /home/elf/isos/CentOS-6.0-x86_64-bin-DVD1.iso /mnt/cdmedia

#-t noneとか-oはもっといろいろ付ける方がお行儀がいい?(何

CD/DVDメディアをマウントする場合(多分)

# mount /dev/hdc /mnt/cdmedia

ディレクトリーのコピーをします.

# rsync -av /mnt/cdmedia/Packages /media/CentOS/.
# rsync -av /mnt/cdmedia/repodata /media/CentOS/.

#別にcpでもいいですよ

disc1の作業はこれで終わりです.マウントを解除します.

# umount /mnt/cdmedia

引き続きdisc2の作業に移ります.

disc2(CDメディアの場合は2〜6)のコピー処理をする.

たいしてやることは変わりありません.

isoファイルをマウントする場合

# mount -o loop /home/elf/isos/CentOS-6.0-x86_64-bin-DVD2.iso /mnt/cdmedia

CD/DVDメディアをマウントする場合(多分)

# mount /dev/hdc /mnt/cdmedia

ディレクトリーのコピーをします.

# rsync -av /mnt/cdmedia/Packages /media/CentOS/.

#repodataはdisc1にしか存在しません.

disc2の作業はこれで終わりです.マウントを解除します.

# umount /mnt/cdmedia

CDメディアの場合,disc6まで同様の作業を行います.
これで最低限の作業は完了です.

今構築したリポジトリーを使えるか確認する.

まず知っておかなければいけない注意点は,「/etc/yum.repos.d/CentOS-Media.repo」はそのままでは無効になるように設定されています.
今回は動作確認をしたいだけなので,設定ファイルは編集せずに確認をします.確認時は設定ファイルに書かれているように「yum --disablerepo=\* --enablerepo=c6-media [command]」という感じでコマンドを実行します.

# yum --disablerepo=\* --enablerepo=c6-media check-update
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * c6-media: 

上記のようにエラー風のメッセージが出てこなければ利用できると考えてよさそうです(厳密にいうと,repodataが正しく読めることが確認できただけですが).
もし利用できないときは下記のようにエラーが出ると思います.

# yum --disablerepo=\* --enablerepo=c6-media check-update
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * c6-media: 
file:///media/CentOS1/repodata/repomd.xml: [Errno 14] Could not open/read file:///media/CentOS/repodata/repomd.xml
Trying other mirror.
file:///media/cdrecorder/repodata/repomd.xml: [Errno 14] Could not open/read file:///media/cdrecorder/repodata/repomd.xml
Trying other mirror.
file:///media/cdrom/repodata/repomd.xml: [Errno 14] Could not open/read file:///media/cdrom/repodata/repomd.xml
Trying other mirror.

さてさて.しかしいつもオプション--enablerepoをつけるのは面倒ですね.ってことで気になる人は設定ファイルを変更しましょう.

[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
        file:///media/cdrom/
        file:///media/cdrecorder/
gpgcheck=1
enabled=1    ★「0」を「1」にする
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

あとは適当にyum listやyum installなどが期待通り動くか確認するといいでしょう.

補足

細かいことが気になる人は,CentOS-Base.repoの[base]でenabled=0を追加しておくと,/media/CentOS/で事足りる部分は完全にネットワークへ参照しに行かなくなります.

あとがき

一緒にcentos.orgやfedoraproject.orgで活動する仲間を募集しています.
興味がある方は適当な手段で連絡をお願いします!!

#ちゃんと書けと突込みが…

この辺にお願いします!!