x86_64版Mandriva Linux上でi586版のchroot環境を作成(RPMパッケージ作成用途)
x86_64版Mandriva上でRPMパッケージを作成すると通常はx86_64向けのものが出来上がるが、i586版のパッケージも作成したいときがある。そのときは「一般ユーザでrpmbuildを行うための準備とエイリアスメモ」の「rpmbuild-spec2rpm-586」を使用することで作成できる場合があるのだが、作成するパッケージによってはビルドに必要な幾つかのパッケージ(lib[名前]-devel)は何故かx86_64版とぶつかってインストールできず、パッケージは作成できない。
しかし、そのような場合でも、i586向けchroot環境を作成することでi586向けパッケージが作成できる。
chroot環境作成スクリプト
下のスクリプトは、パッケージをシステムに追加するときに使われるのと同じurpmiコマンドにより、システムとは別のディレクトリ(下のスクリプトでは変数CHROOT_DIR)以下にi586版chroot環境を作成する。[任意]ファイル名: make-chroot-586.sh
#! /bin/sh CHROOT_DIR=/opt/i586-chroot MANDRIVA_MIRROR=[ミラーサーバURL] PACKAGES="basesystem urpmi locales-ja rpm-build" # ここで追加のパッケージを記述する PACKAGES="${PACKAGES} libalsa2-devel libncurses-devel libgtk+2.0_0-devel libwxgtku2.6-devel" sudo mkdir ${CHROOT_DIR} -p sudo urpmi.addmedia --distrib --urpmi-root ${CHROOT_DIR} ${MANDRIVA_MIRROR} sudo urpmi --urpmi-root ${CHROOT_DIR} ${PACKAGES} # /etc/以下の幾つかのファイルをコピー・場合によっては他のファイルも必要? yes | sudo cp -a /etc/{passwd,group,shadow,localtime} ${CHROOT_DIR}/etc/
(2009/1/26)/etc/localtimeもコピーするように修正
変数MANDRIVA_MIRRORには国内ミラーサーバのofficial/[OSバージョン]/i586/ディレクトリを指定する。2009/1/21現在
- ftp.kddlabs.co.jp/Linux/distributions/Mandrake/official/2009.0/i586/
- ftp.riken.go.jp/Linux/mandrake/official/2009.0/i586/
- ftp.nara.wide.ad.jp/pub/Linux/Mandrakelinux/official/2009.0/i586/
が利用できる。
途中、カーネルなど、複数のパッケージ候補から1つを選択してEnterする場面がある。
chroot環境へのパッケージ追加インストール方法
パッケージの追加は、chroot環境の外からsudo urpmi --urpmi-root /opt/i586-chroot [パッケージ名...]
を実行することで行う。「/opt/i586-chroot」の部分は上のスクリプト内のCHROOT_DIRに合わせる。
chrootラッパースクリプト
下のスクリプトは、システム上の幾つかのディレクトリをchroot内の同じ場所へ結びつける(bindマウント)作業の後にこの環境へ入り、作業完了(chroot環境からのログアウト)後にその後始末をして終了する。[任意]ファイル名: chroot-586.sh
#! /bin/sh CHROOT_DIR=/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
(2009/6/22)「/」などの微調整・機能は同じ
このスクリプトを管理者権限で実行するとchroot環境に入る。
$ sudo [chroot-586.shの場所] [root]# su [rpmbuild用ユーザ] [rpmbuild用ユーザ]$
あとは通常と同じようにパッケージの作成作業を行う。
参考URL: