Mandriva Linux 2009.0上で別パーティションにインストール済みの2009.1環境をchroot環境としてRPMパッケージをビルドするためのメモ
2009年6月現在、Mandriva Linux 2009.1にて幾つかの解決困難な問題*1に直面しているので、とりあえず2009.0環境を別のパーティションにインストールしてマルチブートにしているのだが、Pythonアプリケーションなど、これまでに作成してきたRPMパッケージの中で2009.0向けに作成したものが2009.1上でそのまま使用できないものが出てしまったため、2009.1向けに再ビルドする必要が出たものがあるのだが、できることなら2009.0環境上から2009.1向けのパッケージも作成できるようにしたいと思ったので、既存の2009.1環境を活かしつつ2009.1向けのパッケージが作成できるように作業を行った。
これにより、別館のソフトウェアを2009.0と2009.1の両方に対応させる手間を減らすことに成功し、RPMパッケージも一通り更新した。
(2014/10/12)配布ページは削除済み。
なお、本記事の内容は自分向けの部分がかなり強く、他の人の参考にはあまりならないかもしれない。
前提
- x86_64版の2009.1環境の「/」のパーティションが/media/2009.1-rootfs/にマウントされている・更に「/var」など、分けたパーティションがあれば/media/2009.1-rootfs/varのように下の階層にマウントしておく
- その「/」のパーティションの中、/media/2009.1-rootfs/opt/i586-chroot/以下にはi586版向けのchroot環境が作成済み
x86_64上でi586版パッケージをビルドできるようにするためのchroot環境の作成については「x86_64版Mandriva Linux上でi586版のchroot環境を作成(RPMパッケージ作成用途)」で書いている。
なお、Fedoraではx86_64上のx86_32版パッケージの作成にはMock(fedoraproject.org/wiki/Projects/Mock)というツールが使用できる*2ようだが、扱う予定はない。
chroot環境に入るためのスクリプト
いずれも管理者権限で実行する。別パーティションのx86_64版2009.1環境に入るスクリプト
[任意]ファイル名: chroot-2009.1-x86_64.sh#! /bin/sh TARGET_ROOT=/media/2009.1-rootfs CHROOT_DIR=${TARGET_ROOT} for D in dev proc sys tmp home; do mount -o bind /${D} ${CHROOT_DIR}/${D}; done linux64 chroot ${CHROOT_DIR} /bin/bash for D in dev proc sys tmp home; do umount ${CHROOT_DIR}/${D}; done
linux64コマンドを挟んでいるが、下のi586版と体裁を合わせる程度で深い意味はない。
x86_64版2009.1環境の中に作成済みのi586版chroot環境に入るスクリプト
[任意]ファイル名: chroot-2009.1-i586.sh#! /bin/sh TARGET_ROOT=/media/2009.1-rootfs CHROOT_DIR=${TARGET_ROOT}/opt/i586-chroot for D in dev proc sys tmp home; do mount -o bind /${D} ${CHROOT_DIR}/${D}; done linux32 chroot ${CHROOT_DIR} /bin/bash for D in dev proc sys tmp home; do umount ${CHROOT_DIR}/${D}; done
chroot外からのメディアの追加作業例
(x86_64版) $ sudo urpmi.addmedia --distrib --urpmi-root /media/2009.1-rootfs [ミラー上のx86_64のディレクトリ] (i586版) $ sudo urpmi.addmedia --distrib --urpmi-root /media/2009.1-rootfs/opt/i586-chroot [ミラー上のi586のディレクトリ]
ミラーサーバのURL例は
- x86_64版: ftp.kddilabs.jp/Linux/packages/Mandriva/official/2009.1/x86_64
- i586版: ftp.kddilabs.jp/Linux/packages/Mandriva/official/2009.1/i586
などとなる(実際には「http://」や「ftp://」を付ける)。
サーバはWikiの一覧から選べる。
chroot外からのパッケージインストール作業例
(x86_64版のパッケージ) $ sudo urpmi --urpmi-root /media/2009.1-rootfs [パッケージ名...] (i586版のパッケージ) $ sudo urpmi --urpmi-root /media/2009.1-rootfs/opt/i586-chroot [パッケージ名...]
関連URL: