source: projects/web/trunk/vlmagazine/20100814.dat @ 1654

Revision 1654, 7.7 KB checked in by daisuke, 14 years ago (diff)

fix typo

Line 
1<date>
22010,08,14
3
4<title>
5vbuilder で RPM パッケージングをはじめよう
6
7<description>
8vbuilder は公開してからかれこれ 1 年になりました。
9vbuilder は RPM パッケージングツールとして、
10もはや欠かせないツールの 1 つとなりつつあります。
11<br />
12これまで vbuilder をご利用下さった開発者の皆様から
13たくさんのフィードバックを得ました。
14vbuilder への要望やコメントがあるごとに、
15どんどん機能を追加したり、修正、改良をしているうちに、
16vbuilder は公開当初から比べると、ずいぶんと多機能になりました。
17<br />
18これまで vbuilder を使ったことのない方でも、
19vbuilder を使いこなして頂けるように、
20基本的な使い方をまとめたいと思います。
21
22<h2>vbuilder とは?</h2>
23<p>
24vbuilder は、(chroot という)子環境に Vine Linux の最小環境から構築し、
25RPM パッケージの依存関係などの解決をしてからパッケージのビルドするツールです。
26</p>
27<p>
28vbuilder に関する詳細は、以下の URL に記載されています。
29<br />
30<a href="http://trac.vinelinux.org/wiki/VineBootstrap">http://trac.vinelinux.org/wiki/VineBootstrap</a>
31</p>
32<p>
33vbuilder は vbootstrap パッケージに格納されています。
34</p>
35<pre class="screen">
36$ sudo apt -get install vbootstrap
37</pre>
38
39<h2>vbuilder の基本操作</h2>
40<p>
41基本的な流れは以下の通りです。
42</p>
43<pre class="screen">
44$ sudo vbuilder clean  (過去に構築した子環境を削除)
45$ sudo vbuilder build  (子環境に最小環境を構築)
46$ sudo vbuilder build-rpm hoge-1.0-1vl5.src.rpm
47</pre>
48<p>
49vbuilder にこれらのアクションを一度に渡すこともできます。
50以下のようにすれば、順次 clean → build → build-rpm のように実行します。
51</p>
52<pre class="screen">
53$ sudo vbuilder clean build build-rpm hoge-1.0-1vl5.src.rpm
54</pre>
55この場合、build を省略できます。
56<pre class="screen">
57$ sudo vbuilder clean build-rpm hoge-1.0-1vl5.src.rpm
58</pre>
59<p>
60子環境で生成された hoge-1.0-1vl5.{i386,src}.rpm は、
61vbuilder を実行したユーザの $HOME/rpm/vbuilder 以下の場所に、
62hoge-1.0-1vl5.src.rpm と同じ所有者、同じグループとしてコピーされます。
63</p>
64<pre class="screen">
65/home/foo/rpm/vbuilder/5.1/
66/home/foo/rpm/vbuilder/5.1/RPMS
67/home/foo/rpm/vbuilder/5.1/RPMS/i386/hoge-1.0-1vl5.i386.rpm
68/home/foo/rpm/vbuilder/5.1/RPMS/ppc
69/home/foo/rpm/vbuilder/5.1/RPMS/noarch
70/home/foo/rpm/vbuilder/5.1/RPMS/x86_64
71/home/foo/rpm/vbuilder/5.1/SRPMS/hoge-1.0-1vl5.src.rpm
72</pre>
73<p>
74なお、$ sudo vbuilder --version 5.1 clean build を実行すると、
75約 600MB 程度の容量を消費します。
76vbuilder を実行する際には、ハードディスクの容量にご注意下さい。
77</p>
78
79<h2>vbuilder の引数補完</h2>
80<p>
81vbuilder にはたくさんのオプションとアクションがあります。
82入力する手間を軽減するために、シェル補完を利用します。
83</p>
84
85<h3>bash</h3>
86<p>
87${HOME}/.bashrc などに、以下の行を追加します。
88</p>
89<pre class="screen">
90. /etc/bash_completion.d/vbuilder
91</pre>
92
93<h3>zsh</h3>
94<p>
95zsh-completion-vine パッケージをインストールします。
96</p>
97
98<h2>--unionfs オプションの利用</h2>
99<p>
100いくつもの RPM パッケージを vbuilder に投げてビルドするときに、
101$ sudo vbuilder build により毎回ベース環境を構築するのが面倒になります。
102unionfs と利用することで、一度構築した最小のベース環境に変更を加えずに、
103その上に変更のみを被せることができます。
104</p>
105<p>
106まず、最小のベース環境を構築します。
107</p>
108<pre class="screen">
109$ sudo vbuilder clean build
110</pre>
111<p>
112以後、unionfs でベース環境をカバーし、hoge-1.0-1vl5.src.rpm のビルドを行います。
113</p>
114<pre class="screen">
115$ sudo vbuilder --unionfs build-rpm hoge-1.0-1vl5.src.rpm
116</pre>
117<p>
118--unionfs を保ったまま clean を実行すると、最小のベース環境は消えません。
119</p>
120<pre class="screen">
121$ sudo vbuilder --unionfs clean
122</pre>
123<p>
124引き続き、foo-1.0-1vl5.src.rpm をすぐさまビルドできます。
125$ sudo vbuilder --unionfs build-rpm foo-1.0-1vl5.src.rpm
126</p>
127
128<h2>--show-info オプションの活用</h2>
129<p>
130--show-info オプションは、
131ターゲットにしている vbuilder で構築した環境に対して、
132実行した詳細な手順、設定を出力します。
133</p>
134<pre class="screen">
135$ sudo vbuilder --show-info
136======================================================================
137VBUILDER REPORT
138DATE:           Thu Aug 12 16:30:42 JST 2010
139HOSTNAME:       seed64.local
140OS:             Vine Linux 6.0 (+VineSeed) (Haut Brion)
141%_arch:         x86_64
142
143--version: VineSeed
144--arch: x86_64
145--category: main,plus,nonfree
146
147
148
149--bootstrap-dir: /dev/shm/vbootstrap
150--cache-dir: /var/local/vbootstrap/cache
151--built-rpms-dir: /home/munepi/rpm/vbuilder
152======================================================================
153
154[/etc/vbootstrap/vbuilder.conf]
155##
156## vbuilder configuration file
157##
158## This configuration is read at the begin of vbuilder.
159
160## Default version for chroot
161## default: DEFAULT_VERSION=VineSeed
162DEFAULT_VERSION=VineSeed
163
164## Default categories for chroot
165## default: CATEGORIES=main,plus,nonfree
166CATEGORIES=main,plus,nonfree
167
168## The top dirctory for vbootstrap
169## default: VBOOTSTRAP_DIR=/var/local/vbootstrap
170VBOOTSTRAP_DIR=/dev/shm/vbootstrap
171
172## Default directory to cache rpms of /var/cache/apt/archives in chroot
173## default: CACHE_DIR=/var/local/vbootstrap/cache
174CACHE_DIR=/var/local/vbootstrap/cache
175
176## Default directory to store built rpms
177## default: BUILT_RPMS_DIR=${HOME}/rpm/vbuilder
178BUILT_RPMS_DIR=${HOME}/rpm/vbuilder
179
180## end of file
181
182[History]
183build
184build-rpm /home/munepi/rpm/SRPM/hoge-1.0-1vl5.src.rpm
185</pre>
186
187<h2>その他のオプション</h2>
188<p>
189vbuilder のその他のオプションをいくつか紹介します。
190</p>
191
192<dl>
193<dt>--version</dt>
194<dd>
195子環境の Vine Linux のバージョンを指定します。
196デフォルトは親環境と同じバージョンです。
197例えば、VineSeed 上で、5.1 子環境を構築したいときに、
198--version 5.1 と指定します。
199</dd>
200
201<dt>--arch</dt>
202<dd>
203子環境のアーキテクチャを指定します。
204デフォルトは親環境と同一アーキテクチャです。
205例えば、x86_64 上で子環境のアーキテクチャを i386 にしたいときに、
206--arch i386 と指定します。
207</dd>
208
209<dt>--category</dt>
210<dd>
211ベース環境内の apt リポジトリのカテゴリを指定します。
212デフォルトは、main,plus,nonfree です。
213例えば、main カテゴリのみのビルド依存であるかどうかをチェックしたいときに、
214--category main と指定します。
215</dd>
216
217<dt>--target</dt>
218子環境内でビルドする rpmbuild --target のターゲットを指定します。
219<dd>
220</dd>
221
222<dt>--rpmbuild-with</dt>
223<dd>
224子環境内でビルドするときの rpmbuild --with を指定します。
225例えば、spec ファイルに記述した %bcond_with などを vbuilder から扱えます。
226</dd>
227
228<dt>--sign</dt>
229<dd>
230$ sudo vbuilder build-rpm ... でビルドした rpm を SUDO_USER により鍵署名をします。
231</dd>
232
233<dt>--no-install</dt>
234<dd>
235build-rpm によりビルドした rpm は、通常 chroot 内に install もします。
236このオプションを指定すると、ビルドされた rpm を chroot 内に install しません。
237例えば、あるパッケージをマイナーバージョンアップさせたときに、
238以前のバージョンとの ldd などの差分を取るときに便利なオプションです。
239</dd>
240
241</dl>
Note: See TracBrowser for help on using the repository browser.