Version 12 (modified by munepi, 14 years ago) (diff) |
---|
Vine Linux 上で Vine Linux のベースシステムを作成するためのスクリプト。
選択肢としては以下のもの。
2.a. 案で現在 VineSeed に vbootstrap-0.0.3 投入済み。
vbootstrap は大雑把には以下のような手順で chroot 環境を用意している。 詳しくはスクリプトを参照してほしい。(実際には前処理後処理なども含まれる)
INSTALLDIR=/path/to/root # rpmdb の初期化 mkdir -p $INSTALLDIR/var/lib/rpm rpm --initdb --root $INSTALLDIR # apt データベースの更新 apt-get -o RPM::RootDir=$INSTALLDIR update # 基本のパッケージをインストール for i in setup glibc coreutils bash rpm apt rootfiles do apt-get -y -o RPM::RootDir=$INSTALLDIR install $i done # vine-keyring を再インストール(上でいれた apt に再度読み込ませる) apt-get -y -q --reinstall -o RPM::RootDir=$INSTALLDIR install vine-keyring # resolv.conf をホストからコピー cp -a /etc/resolv.conf $INSTALLDIR/etc/
違うバージョンの chroot を作る場合は、apt に別の sources.list を読み込ませる。
rpm http://updates.vinelinux.org/apt 4.2/i386 main plus updates
-o Dir::Etc::sourcelist=/tmp/sources.list.4.2
rm -f $INSTALLDIR/var/lib/rpm/__db.00* chroot $INSTALLDIR rpm --rebuilddb
vbootstrap を利用して chroot 環境の構築をサポートするスクリプトです。
特に、src.rpm を投げて chroot 環境上で自動的に rpm をビルドし、さらにインストールまでできるのが特徴です。
主な用途としては、ある src.rpm が必要とする BuildRequires?: や Requires: の漏れを検証するために利用できます。例えば、self-build パッケージのような、ほとんどの環境でビルド可能なパッケージを作成するときに、BR: 検証を協力にサポートしてくれます。
簡単な実行例をヘルプで出すようにしていますが、 主な使い方は src.rpm を vbuilder へ投げて、ビルドできて、なおかつ、 インストールまでできるかをチェックすることです。
[vbootstrap-0.0.3 に同梱されている vbuilder]
$ /usr/sbin/vbuilder Usage: vbuilder {--version [version]} {--arch [arch]} {--with-compat32} {--build-rpm [src.rpm]|--install-rpm [arch.rpm]|--remove-rpm [package]|--build|--clean} --version: set [version] (default: VineSeed) --arch: set [arch] (default: x86_64) --with-compat32: build with compat32 on boostrap --build-rpm: build [src.rpm] on boostrap --install-rpm: install [arch.rpm] on boostrap --remove-rpm: remove [package] on boostrap --build: build boostrap of [version] --clean: clean boostrap of [version] For example, * make a clean/plain build environment on the current archtecture: vbuilder --clean --build * build source RPM: vbuilder --build-rpm [src.rpm] * make a plain build environment for Vine Linux 4.2: vbuilder --version 4.2 --clean --build * make a i386 chroot on x86_64: vbuilder --arch i386 --clean --build * build compat32: vbuilder --arch i386 --with-compat32 --build-rpm [src.rpm]
基本的な流れは以下の通りです。
$ sudo vbuilder --clean ← 必要であれば、あらかじめ chroot 環境を削除する。 $ sudo vbuilder --build $ sudo vbuilder --build-rpm hoge.src.rpm
これらは一度に渡すこともできて、 以下のようにすれば、順次 --clean → --build → --build-rpm のように実行します。
$ sudo vbuilder --clean --build --build-rpm hoge.src.rpm
例えば、hoge.src.rpm を vbuilder へ投げます。
$ sudo vbuilder --clean --build --build-rpm hoge.src.rpm
ところが、すでにリポジトリにある foo-devel, bar-devel パッケージと、 まだリポジトリに上がっていないが手元にビルド済みの fuga.arch.rpm が ビルド依存に必要だったために、 hoge.src.rpm のビルドが失敗してしまいました。
foo-devel, bar-devel, fuga.arch.rpm を chroot 環境へインストールしてから、hoge.src.rpm のビルドを再度実行してみます。
$ sudo vbuilder --install-rpm foo-devel --install-rpm bar-devel --install-rpm /some/where/fuga.arch.rpm --build-rpm hoge.src.rpm
また、fuga.arch.rpm に別の修正を加えたために、hoge.src.rpm のリビルドが再度チェックする必要が出てきました。fuga.src.rpm の検証も兼ねて、vbuilder でテストしてみます。
$ sudo vbuilder --clean --build --build-rpm /some/where/fuga.src.rpm --build-rpm hoge.src.rpm
など。
$ sudo vbuilder --clean --build --build-rpm hoge.src.rpm
のうち、--build-rpm hoge.src.rpm は、 事前に vbuilder を当てる chroot 環境の / の存在をチェックしていますので、 実は、--build は省略して以下のように実行しても構いません。
$ sudo vbuilder --clean --build-rpm hoge.src.rpm
ユーザ foo が hoge-1.0-1vl5.src.rpm(所有者:foouser, グループ:foogrp)を vbuilder に投げたとします。
$ sudo vbuilder --clean --build-rpm hoge.src.rpm
このとき、chroot 環境で生成された hoge-1.0-1vl6.{i386,src}.rpm は、 foo の $HOME/rpm/vbuilder 以下の場所に、 hoge-1.0-1vl5.src.rpm と同じ所有者、同じグループとしてコピーされます。
/home/foo/rpm/vbuilder/ /home/foo/rpm/vbuilder/RPMS /home/foo/rpm/vbuilder/RPMS/i386/hoge-1.0-1vl6.i386.rpm /home/foo/rpm/vbuilder/RPMS/ppc /home/foo/rpm/vbuilder/RPMS/noarch /home/foo/rpm/vbuilder/RPMS/x86_64 /home/foo/rpm/vbuilder/SRPMS/hoge-1.0-1vl6.src.rpm
当面の TODO は以下のとおりです: