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

Revision 2154, 7.7 KB checked in by daisuke, 13 years ago (diff)

add <author> tag

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