試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

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)配布ページは削除済み。
なお、本記事の内容は自分向けの部分がかなり強く、他の人の参考にはあまりならないかもしれない。

  1. 前提
  2. chroot環境に入るためのスクリプト
    1. 別パーティションのx86_64版2009.1環境に入るスクリプト
    2. x86_64版2009.1環境の中に作成済みのi586版chroot環境に入るスクリプト
  3. chroot外からのメディアの追加作業例
  4. 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環境の中に作成済みのi586chroot環境に入るスクリプト
[任意]ファイル名: 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例は

などとなる(実際には「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:

*1:再現性のない原因不明(手がかりなし)/突然のOSフリーズ現象を含む

*2:Fedora以外のディストリ上でFedora向けのRPMパッケージを作成するのにも使えるようだ