source: people/munepi/documents/11/lms201107r-js.tex @ 4356

Revision 4356, 23.8 KB checked in by munepi, 13 years ago (diff)

added lms201107r-js.{tex,pdf}

Line 
1%% -*- coding: utf-8-unix -*-
2%#!platex lms201107r-js
3% %% && xdvi -watchfile 0.5 -xoffset -1 -yoffset -3.4 -geometry 980x1200-200+0
4%% && xdvi -watchfile 0.5 -xoffset 1 -yoffset -1 -geometry 980x1200-200+0
5% #LPR dvipdfmx -p a4 -x 0in -y 0in %s && acroread lms201107r.pdf
6%#LPR dvipdfmx -p a4 %s && acroread lms201107r-js.pdf
7\newif\ifHyperref
8        \Hyperreftrue
9%       \Hyperreffalse
10%%\documentclass[mentuke,cameraready]{vlart}%mentuke, %Proof,tombo, grayscale
11\documentclass{jsarticle}
12%%<forjsarticle>
13\usepackage{graphicx}
14\usepackage{color}
15\definecolor{Xgray}{gray}{0.9}%     10%
16\makeatletter
17\let\subtitle\@gobble
18\let\vlversion\@gobble
19\let\decotype\@gobble
20\makeatother
21%%</forjsarticle>
22\usepackage{mathpazo}
23\usepackage{listings,jlisting}%
24%%\usepackage{vlart-cameraready}
25
26\title{RPMパッケージ作成ハンズオン\hskip1zw 入門編}
27\subtitle{\xkanjiskip.5\xkanjiskip 
28  LILO 2011.07 Monthly Seminar,第6回Vine Linuxユーザの集い}
29\author{山本\hskip1zw 宗宏 {\ttfamily <munepi@vinelinux.org>}}
30\date{2011年7月17日@株式会社グッデイ}
31\vlversion{6.0}%
32\decotype{B}%
33
34%% <localmacros>
35\def\ddash{\hbox to 1.5zw{---\hss ---}}% \let\doubledash\ddash
36
37\def\lstlistingname{リスト}
38\lstset{language=bash,%
39        basicstyle=\small\ttfamily,%
40        commentstyle=\textsl,%\textit
41        classoffset=1,%
42        keywordstyle=\bfseries,%
43        xrightmargin=2zw,%.5zw
44        xleftmargin=2zw,%.5zw
45        numbersep=1zw,%
46        frame=trbl,framesep=.5zw,%
47        backgroundcolor=\color{Xgray},
48        showstringspaces=false,%
49        breaklines=true,%default: false
50        breakindent=20pt,%20pt
51        numbers=left,stepnumber=1,numberstyle=\scriptsize\itshape%
52        }%
53
54\ifHyperref
55 \ifnum 42146=\euc"A4A2 %"
56  \AtBeginDvi{\special{pdf:tounicode EUC-UCS2}}%
57 \else
58  \AtBeginDvi{\special{pdf:tounicode 90ms-RKSJ-UCS2}}%
59 \fi
60  \usepackage[%
61   dvipdfmx,%
62   pdfstartview={FitH -32768},% 描画領域の幅に合わせる[default は全体表示]
63   bookmarks=true,%             しおり付き[default は false]
64%%!! bookmarksnumbered=true,%   章や節の番号をふる[default は false]
65   bookmarkstype=toc,%          目次情報のファイル[拡張子 toc]を参照
66   colorlinks=false,%           ハイパーリンクを色文字ではなく色枠に[default]
67   linkbordercolor={0 0 1},%    link の枠の色 aqua [default は red {1 0 0}]
68   citebordercolor={0 1 0},%    cite の枠の色 lime [default]
69   urlbordercolor={0 0 1}%      url の枠の色 blue [default]
70  ]{hyperref}
71\fi
72%% </localmacros>
73
74\begin{document}
75\maketitle
76
77\begin{abstract}
78RPMパッケージになっていないサンプルソフトウェアを通して,
79RPMパッケージの作成を体験するセミナーです.
80入門編では,RPMパッケージ作成に関わる
81パッケージのビルドやテスト,
82vbuilderを使ったsrc.rpmのビルドテストなどの一連の作業を学べます.
83\end{abstract}
84
85\section*{入門編の流れ}
86
87入門編の進行は,スライドにそって解説しながら1つ1つ作業をしました.
88以下のスライドのpdfも合わせてご参考下さい.
89
90{\ttfamily http://trac.vinelinux.org/repos/people/munepi/documents/11/lms201107b.pdf}
91
92\begin{enumerate}
93 \item 
94準備
95
96 \item 
97サンプルソフトウェアのコンパイル
98
99 \item 
100雛形specファイルの編集
101
102 \item 
103パッケージのビルド
104
105 \item 
106パッケージのインストール,アンインストール
107
108 \item 
109パッケージのビルドテスト
110\end{enumerate}
111
112\section{準備}
113
114手元にVine Linux~5またはVine Linux~6が
115インストールされた計算機を用意して下さい.
116このレジュメでは,Vine Linux~6 i686を前提として解説しています.
117もしppc, x86\_64を用意している方は,
118適時読み替えてコマンドを実行して下さい.
119
120\subsection{\~{}/.rpmmacrosの編集}
121
122RPMパッケージを作成するための最低限の設定をしましょう.
123適当なテキストエディタを用いて,
124{\ttfamily \~{}/.rpmmacros}を開いて下さい.
125
126\subsubsection*{Vine Linux 6}
127
128\begin{lstlisting}
129# %packager Your Name   <your mail address>
130# %packager     Munehiro Yamamoto <munepi@vinelinux.org>
131%packager       munepi
132
133# GnuPG によるパッケージ署名を行う
134# %_signature gpg
135# %_gpg_name Your Name <your mail address>
136
137# ソースファイル置き場をパッケージ別にする
138%_sourcedir %{_topdir}/SOURCES/%{name}
139\end{lstlisting}
140
141\subsubsection*{Vine Linux 5}
142
143\begin{lstlisting}
144%_topdir ${HOME}/rpm
145
146# %packager Your Name   <your mail address>
147# %packager     Munehiro Yamamoto <munepi@vinelinux.org>
148%packager       munepi
149
150# gpg signing
151# %_signature gpg
152# %_gpg_name Your Name <your mail address>
153
154# more useful macros
155%_sourcedir     %{_topdir}/SOURCES/%{name}
156\end{lstlisting}
157
158
159\begin{itemize}
160 \item 
161{\ttfamily \%packager}
162あなたのID(半角英数字の文字列)を入力して下さい.
163あなたのハンドルネームやニックネームで構いません.
164特に,そのようなIDをお持ちでない方や分からない方は,
165上記の例を参考に,名前とメールアドレスを入力して下さい.
166
167 \item 
168今回は作成していただいたRPMパッケージにGPG署名をしません.
169
170 \item 
171{\ttfamily \%\_sourcedir \%\{\_topdir\}/SOURCES/\%\{name\}}
172パッケージごとにソースやパッチなどの格納ディレクトリを設けます.
173パッケージごとにディレクトリを分けておくと,
174複数のパッケージをメンテナンスするときに,
175それぞれのファイルたちが混ざりません.
176デフォルトでは,
177{\ttfamily \%\_sourcedir \%\{\_topdir\}/SOURCES}となっています.
178\end{itemize}
179
180
181\subsection{sudoの設定}
182
183{\sffamily sudo}
184一般ユーザに特定のコマンドをroot権限で実行させるためのコマンドです.
185{\sffamily su}コマンドからrootになってもよいのですが,
186今回は積極的に{\sffamily sudo}を使います.
187
188\subsubsection*{Vine Linux 6}
189
190あなたはおそらく手元の計算機の管理者です.
191念のために,{\sffamily id}コマンドを実行して,
192wheelグループに所属しているか確認して下さい.
193\begin{lstlisting}
194$ id
195uid=1000(munepi) gid=1000(munepi) groups=1000(munepi),10(wheel)
196\end{lstlisting}%$
197
198
199\subsubsection*{Vine Linux 5}
200
201あなたはおそらく手元の計算機の管理者です.
202{\sffamily sudo}をインストールします.
203\begin{lstlisting}
204$ su -c "apt-get install sudo"
205\end{lstlisting}%$
206
207あなたのアカウントをsudoersに追加しましょう.
208\begin{lstlisting}
209$ su -c /usr/sbin/visudo
210\end{lstlisting}%$
211
212{\sffamily vi}の操作に不馴れな方は,
213環境変数{\ttfamily EDITOR}に{\sffamily gedit}などの
214使いなれたテキストエディタを代入して,以下を実行して下さい.
215\begin{lstlisting}
216$ EDITOR=gedit su -c /usr/sbin/visudo
217\end{lstlisting}%$
218
219以下の例を参考にしながら,
220``{\ttfamily \#\# Allow root to run any commands anywhere}''
221と書かれた行の下に,自分のアカウントを追加して保存します.
222\begin{lstlisting}
223## Allow root to run any commands anywhere
224root    ALL=(ALL)       ALL
225munepi  ALL=(ALL)       ALL
226\end{lstlisting}
227
228
229\section{パッケージングしてみよう}
230
231\subsection{サンプルを動かす}
232
233今回のRPMパッケージハンズオンのために,
234echowlvlというサンプルソフトウェアを用意しました.
235このサンプルソフトウェアをRPMパッケージにしてみましょう.
236
237\subsubsection{サンプルをダウンロード}
238
239{\sffamily wget}コマンドを用いて,
240echowlvl-0.1.tar.gzをダウンロードします.
241
242\begin{lstlisting}
243$ wget http://trac.vinelinux.org/repos/people/munepi/documents/11/echowlvl-0.1.tar.gz
244\end{lstlisting}%$
245
246\subsubsection{サンプルをコンパイル}
247
248ソフトウェアをビルドするための最小限の開発環境を整えます.
249\begin{lstlisting}
250$ sudo apt-get install build-essential
251\end{lstlisting}%$
252
253先ほどダウンロードしたサンプル
254echowlvl-0.1.tar.gzを展開して,
255``いつもの呪文''%
256{\ttfamily ./configure \&\& make \&\& make install}のこと)を
257唱えてみましょう.
258\begin{lstlisting}
259$ tar xvf echowlvl-0.1.tar.gz
260$ cd echowlvl-0.1
261$ ./configure
262$ make
263$ ./echowlvl
264\end{lstlisting}%$
265
266コンパイルしてできた実行ファイル{\sffamily echowlvl}を実行すると,
267どうなったでしょうか?\hskip.5zw
268みなさんで一斉に叫んでみましょう!
269
270\subsection{specファイルを書く}
271
272{\sffamily echowlvl}が ``いつもの呪文'' を唱えてビルドできたので,
273RPMパッケージを作成するための
274ソースコードともいうべきspecファイルを書きましょう.
275
276\subsubsection{雛形specファイルのダウンロード}
277
278echowlvlのRPMパッケージ作成にすぐさまとりかかれるように,
279specファイルの雛形を用意しました.
280{\sffamily wget}コマンドを用いて,
281echowlvl-vl.specをダウンロードして下さい.
282\begin{lstlisting}
283$ wget http://trac.vinelinux.org/repos/people/munepi/documents/11/echowlvl-vl.spec
284\end{lstlisting}%$
285
286ダウンロードしたechowlvl-vl.specを{\ttfamily \~{}/rpm/SPECS/}へ移動します.
287\begin{lstlisting}
288$ mv echowlvl-vl.spec ~/rpm/SPECS/
289\end{lstlisting}%$
290
291\subsubsection{specファイルの構成}
292
293specファイルは主に4つの部分から構成されています.
294\begin{enumerate}
295 \item 
296パッケージ情報
297
298 \item 
299スクリプト
300
301 \item 
302ファイルリスト
303
304 \item 
305更新履歴
306\end{enumerate}
307各部を順番に見ながら埋めていきましょう.
308
309\paragraph{パッケージ情報}
310
311パッケージの基本情報はすべてここに凝縮されています.
312特にパッケージ依存関係は,
313{\sffamily rpm}や{\sffamily apt}に正しい情報を伝えるために重要になります.
314
315\begin{lstlisting}
316## -*- coding: utf-8-unix -*-
317## This is a template spec file for LILO 2011.07 Monthly Seminar.
318Name:           echowlvl
319Version:        0.1
320Release:        1%{?_dist_release}
321Summary:        Sample program for RPM making hands-on (lms201107)
322Summary(ja):    RPM パッケージ作成ハンズオン (lms201107) 用サンプルプログラム
323Group:          Applications/Other
324License:        GPLv3+
325URL:            http://trac.vinelinux.org/wiki/OfflineMeeting/20110711
326Source0:        http://trac.vinelinux.org/repos/people/munepi/documents/11/%{name}-%{version}.tar.gz
327
328BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root
329
330Distribution:   YOUR LINUX DISTRIBUTION
331Vendor:         YOUR VENDOR
332Packager:       YOUR NAME (or YOUR ID)
333
334%description
335echowlvl is a sample program for RPM making hands-on (lms201107).
336
337%description -l ja
338echowlvlは RPM パッケージ作成ハンズオン (lms201107) 用サンプルプログラムです.
339\end{lstlisting}
340
341\begin{itemize}
342 \item 
343{\ttfamily Name}:
344パッケージ名です.
345{\ttfamily \%\{name\}}というマクロで参照できます.
346今回は,{\ttfamily echowlvl}として下さい.
347
348 \item 
349{\ttfamily Version}:
350ソフトウェアのバージョンです.
351{\ttfamily \%\{version\}}というマクロで参照できます.
352今回は,{\ttfamily 0.1}としてください.
353
354 \item 
355{\ttfamily Release}:
356リリース番号とVine Linuxのバージョンを組み合せて書きます.
357リリース番号は,同じバージョンで何回目のリリースになるかを意味します.
358{\ttfamily \%\{?\_dist\_release\}}は,
359Vine Linuxのバージョンに置き換えられます.
360例えば,Vine Linux~6の場合は,
361{\ttfamily 1\%\{?\_dist\_release\}}は{\ttfamily 1vl6}となります.
362{\ttfamily \%\{release\}}というマクロで参照できます.
363
364 \item 
365{\ttfamily Summary}, {\ttfamily Summary(ja)}:
366パッケージの概要です.
367パッケージの概要をそれぞれ英語と日本語で記入して下さい.
368
369 \item 
370{\ttfamily Group}:
371ソフトウェアの種類です.
372今回は{\ttfamily Applications/Other}にします.
373
374 \item 
375{\ttfamily License}:
376ソフトウェアのライセンスです.
377今回は{\ttfamily GPLv3+}にします.
378
379 \item 
380{\ttfamily \%description}, {\ttfamily \%description -l ja}:
381{\ttfamily Summary}よりも詳しいパッケージの解説を書きます.
382\end{itemize}
383
384
385\paragraph{スクリプト}
386
387ソフトウェアのソースアーカイブを展開し,必要であればパッチを当て,
388コンパイル,インストールの一連の作業を記述します.
389
390\begin{lstlisting}
391%prep
392%setup -q
393
394%build
395%configure
396%__make %{?_smp_mflags}
397
398%install
399%__rm -rf $RPM_BUILD_ROOT
400%__make install DESTDIR=$RPM_BUILD_ROOT
401
402%clean
403%__rm -rf $RPM_BUILD_ROOT
404\end{lstlisting}
405
406``いつもの呪文'' をざっくりspecファイルに記述すると,
407このようになります.
408echowlvlのrpm化はこれで十分なので,今回はこのままにしておきます.
409
410
411\paragraph{ファイルリスト}
412
413実際にインストールされるファイルリストを書きます.
414
415\begin{lstlisting}
416%files
417%defattr(-,root,root,-)
418
419\end{lstlisting}
420
421さて,何を書けばよいのでしょう?\hskip.5zw
422一旦,保留にしておきます.
423
424\paragraph{更新履歴}
425
426更新履歴は,パッケージのメンテナだけでなく,
427パッケージに興味のある人が見るかもしれません.
428他の人が見てよいように,
429できるだけ分かりやすく記述するように心掛けましょう.
430
431あなたの名前とメールアドレスを埋めて下さい.
432\begin{lstlisting}
433%changelog
434* Sun Jul 17 2011 YOUR NAME <YOUR E-MAIL ADDRESS> 0.1-1
435- first release
436
437## end of file
438\end{lstlisting}
439
440
441\subsection{パッケージのビルド}
442
443さきほどダウンロードしたechowlvl-0.1.tar.gzを
444{\ttfamily \~{}/rpm/SOURCES/echowlvl}に移します.
445
446\begin{lstlisting}
447$ mkdir ~/rpm/SOURCES/echowlvl
448$ mv echowlvl-0.1.tar.gz ~/rpm/SOURCES/echowlvl/
449\end{lstlisting}
450
451では,{\sffamily rpmbuild -ba}でパッケージをビルドしてみます.
452
453\begin{lstlisting}
454$ rpmbuild -ba ~/rpm/SPECS/echowlvl-vl.spec
455\end{lstlisting}%$
456
457そういえば,
458{\ttfamily \%files}のファイルリストを埋めていませんでした.
459早速,/usr/bin/echowlvlをファイルリストに追加しましょう.
460\begin{lstlisting}
461%files
462%defattr(-,root,root,-)
463%doc AUTHORS COPYING ChangeLog INSTALL NEWS README
464%{_bindir}/echowlvl
465\end{lstlisting}
466
467{\ttfamily \%doc}に入れたドキュメントファイルは,
468{\ttfamily /usr/share/doc/\%\{name\}-\%\{version\}}に格納されます.
469
470再び,{\sffamily rpmbuild -ba}でechowlvlパッケージをビルドして下さい.
471今度はechowlvlパッケージができあがっていませんか?
472
473\subsection{パッケージのインストール}
474
475echowlvlパッケージができたら,インストールをします.
476echowlvlパッケージが期待した通りにインストールできて,
477動作することを確認します.
478
479\begin{lstlisting}
480$ sudo apt-get install ~/rpm/RPMS/i686/echowlvl-0.1-1vl6.i686.rpm
481\end{lstlisting}%$
482
483{\sffamily echowlvl}コマンドを実行して動作確認をしましょう.
484先ほどを同じ挙動をしているでしょうか?
485
486
487\subsection{パッケージのアンインストール}
488
489今度は,echowlvlパッケージをアンインストールしてみます.
490\begin{lstlisting}
491$ sudo apt-get remove echowlvl
492\end{lstlisting}%$
493
494{\sffamily echowlvl}コマンドを実行できてしまったりしないか,
495確認してみましょう.
496\begin{lstlisting}
497$ echowlvl
498bash: echowlvl: コマンドが見つかりません
499$ which echowlvl
500/usr/bin/which: no echowlvl in (/home/munepi/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin)
501\end{lstlisting}
502
503\section{さらにパッケージングしてみよう}
504
505\subsection{サンプルが更新されたようです!}
506
507{\sffamily wget}コマンドを用いて,
508echowlvl-0.2.tar.gzをダウンロードして下さい.
509\begin{lstlisting}
510$ wget http://trac.vinelinux.org/repos/people/munepi/documents/11/echowlvl-0.2.tar.gz
511\end{lstlisting}%$
512
513新しくなったechowlvlをコンパイルして,
514動作することを確認して下さい.
515
516\subsubsection{ビルドに必要なライブラリを追加}
517
518もしechowlvlをコンパイルできなかった方は,
519エラーメッセージを見ながら,原因を追究してみましょう.
520
521今回は,curses.hというヘッダファイルがコンパイルに必要だったようです.
522/usr/include/curses.hは,
523ncurces-develパッケージに格納されています.
524{\sffamily apt-get}を使ってncurses-develパッケージをインストールします.
525\begin{lstlisting}
526$ sudo apt-get install ncurses-devel
527\end{lstlisting}%$
528
529
530\subsubsection{specファイルを更新}
531
532echowlvlの新しいバージョンに合わせて,
533echowlvl-vl.specを編集しましょう.
534{\ttfamily Version}はバージョンを{\ttfamily 0.2}にして下さい.
535{\ttfamily \%changelog}
536ソフトウェアが更新されたことを記します.
537
538\begin{lstlisting}
539## -*- coding: utf-8-unix -*-
540## This is a template spec file for LILO 2011.07 Monthly Seminar.
541Name:           echowlvl
542Version:        0.2
543Release:        1%{?_dist_release}
544...
545
546%changelog
547* Sun Jul 17 2011 YOUR NAME <YOUR E-MAIL ADDRESS> 0.2-1
548- new upstream release
549
550* Sun Jul 17 2011 YOUR NAME <YOUR E-MAIL ADDRESS> 0.1-1
551- first release
552
553## end of file
554\end{lstlisting}
555
556\subsubsection{パッケージを更新}
557
558{\sffamily rpmbuild -ba}でパッケージのビルドを試みて下さい.
559新しいバージョンに対応したechowlvlパッケージはできましたでしょうか?
560echowlvlパッケージができた場合は,
561パッケージのインストール,テスト,アンインストールもお忘れなく!
562
563
564\section{ビルドテストしましょう}
565
566パッケージができたら,パッケージのビルドテストをしましょう.
567いつでもどんな環境でもパッケージングできた方が嬉しいですよね.
568%「あの人の環境ではビルドできるけど,私の環境ではビルドできないよ?」,
569「あの人の環境ではビルドできるけど,私の環境ではビルドできひんよ?」,
570%「私の環境でもビルドできたけど,この機能が使えないよ?」
571「私の環境でもビルドできたけど,この機能が使えへんよ?」
572といったことが起こると不都合ですよね.
573
574パッケージのビルドテストには,{\sffamily vbuilder}を使います.
575{\sffamily vbuilder}は,
576(chrootという)子環境に
577Vine Linuxの最小環境から構築し,
578パッケージの依存関係などのチェックをしてから
579パッケージのビルドするツールです.
580
581vbootstrap, vbuilderに関する詳細は,以下のURLに記載されています.
582
583{\ttfamily http://trac.vinelinux.org/wiki/VineBootstrap}
584
585\subsection{vbuilderの基本操作}
586
587{\sffamily vbuilder}はvbootstrapパッケージに格納されています.
588
589\begin{lstlisting}
590$ sudo apt-get install vbootstrap
591\end{lstlisting}%$
592
593基本的な流れは以下の通りです.
594\begin{enumerate}
595\item 
596必要があれば,過去に構築した子環境を削除
597\begin{lstlisting}
598$ sudo vbuilder clean
599\end{lstlisting}%$
600
601\item 
602子環境に最小環境を構築
603\begin{lstlisting}
604$ sudo vbuilder build
605\end{lstlisting}%$
606
607\item 
608子環境上でsrc.rpmをビルド
609\begin{lstlisting}
610$ sudo vbuilder build-rpm hoge-1.0-1vl6.src.rpm
611\end{lstlisting}%$
612\end{enumerate}
613
614vbuilderにこれらのアクションを一度に渡すこともできて,
615以下のようにすれば,
616順次 clean → build → build-rpm のように実行します.
617\begin{lstlisting}
618$ sudo vbuilder clean build build-rpm hoge-1.0-1vl6.src.rpm
619\end{lstlisting}%$
620この場合,buildを省略できます.
621\begin{lstlisting}
622$ sudo vbuilder clean build-rpm hoge-1.0-1vl6.src.rpm
623\end{lstlisting}%$
624
625なお,{\ttfamily \$ sudo vbuilder clean build}を実行すると,
626デフォルトで/var/local/vbootstrap/6.0\_i386が
627約600\,MB程度の容量を消費します.
628{\sffamily vbuilder}を実行する際には,
629ハードディスクの容量にご注意下さい.
630
631\subsection{src.rpmをvbuilderに投げてみる}
632
633echowlvl-0.2-1vl6.i686.rpmといっしょに,
634もう1つechowlvl-0.2-1vl6.src.rpmというrpmができていました.
635src.rpmは,
636ソフトウェアのソースアーカイブやパッチファイルなど,
637specファイルをまとめたソースパッケージです.
638echowlvl-0.2-1vl6.src.rpmからechowlvl-0.2-1vl6.i686.rpmを
639ビルドできます.
640
641{\sffamily vbuilder}にechowlvl-0.2-1vl6.src.rpmを投げてみましょう.
642一度{\sffamily vbuilder}を実行すると,
643一連の作業が終わるまでしばらくかかります.
644果たして{\sffamily vbuilder}
645echowlvl-0.2-1vl6.i686.rpmを返してくれるでしょうか?
646\begin{lstlisting}
647$ sudo vbuilder clean build-rpm ~/rpm/SRPMS/echowlvl-0.2-1vl6.src.rpm
648\end{lstlisting}%$
649
650
651\subsection{依存関係を解決する}
652
653{\sffamily vbuilder}にechowlvl-0.2-1vl6.src.rpmを投げたら,
654``curses.hがありません'' と言われてしまいました.
655echowlvl-0.2-1vl6.src.rpmはソースパッケージとして不完全のようです.
656
657/usr/include/curses.hはncurses-develパッケージに格納されています.
658ncurses-develパッケージを事前にインストールしていると,
659echowlvl-0.2-1vl6.src.rpmがビルドできそうです.
660
661早速,試してみましょう.
662さきほど{\sffamily vbuilder}で作った子環境上に
663ncurses-develパッケージをインストールします.
664\begin{lstlisting}
665$ sudo vbuilder install-rpm ncurses-devel
666\end{lstlisting}%$
667
668再び,{\sffamily vbuilder}にechowlvl-0.2-1vl6.src.rpmを投げてみます.
669echowlvl-0.2-1vl6.i686.rpmを返してくれるでしょうか?
670\begin{lstlisting}
671$ sudo vbuilder build-rpm ~/rpm/SRPMS/echowlvl-0.2-1vl6.src.rpm
672\end{lstlisting}%$
673
674\subsubsection{specファイルを更新}
675
676echowlvl-vl.specを編集しましょう.
677{\ttfamily Release}はリリース番号を{\ttfamily 2}にして下さい.
678{\ttfamily BuildRequires: ncurses-devel}を追加します.
679{\ttfamily \%changelog}に
680{\ttfamily BuildRequires: ncurses-devel}を追加したことを記します.
681\begin{lstlisting}
682## -*- coding: utf-8-unix -*-
683## This is a template spec file for LILO 2011.07 Monthly Seminar.
684Name:           echowlvl
685Version:        0.2
686Release:        2%{?_dist_release}
687...
688Source0:        http://trac.vinelinux.org/repos/people/munepi/documents/11/%{name}-%{version}.tar.gz
689
690BuildRequires:  ncurses-devel
691
692BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root
693...
694
695%changelog
696* Sun Jul 17 2011 YOUR NAME <YOUR E-MAIL ADDRESS> 0.2-2
697- added BuildRequires: ncurses-devel
698
699* Sun Jul 17 2011 YOUR NAME <YOUR E-MAIL ADDRESS> 0.2-1
700- new upstream release
701
702* Sun Jul 17 2011 YOUR NAME <YOUR E-MAIL ADDRESS> 0.1-1
703- first release
704
705## end of file
706\end{lstlisting}
707
708
709\subsubsection{パッケージのビルドテスト}
710
711再び,{\sffamily rpmbuild -ba}でechowlvlパッケージをビルドして下さい.
712echowlvl-0.2-2vl6.i686.rpm, echowlvl-0.2-2vl6.src.rpmが生成されるはずです.
713
714今度は,{\sffamily vbuilder}にechowlvl-0.2-2vl6.src.rpmを投げてみましょう.
715一旦,{\sffamily vbuilder clean}で小環境を削除します.
716{\sffamily vbuilder build-rpm}で小環境を再構築し,
717echowlvl-0.2-2vl6.src.rpmをビルドします.
718echowlvl-0.2-2vl6.i686.rpmを返してくれたら,
719パッケージのビルドテストに成功です.
720\begin{lstlisting}
721$ sudo vbuilder clean build-rpm ~/rpm/SRPMS/echowlvl-0.2-2vl6.src.rpm
722\end{lstlisting}%$
723
724{\sffamily vbuilder}が返してくれたechowlvl-0.2-2vl6.i686.rpmの
725パッケージをテストして下さい.
726パッケージのインストール,動作確認,アンインストールに問題なければ,
727入門編は終了です.お疲れ様でした.
728
729
730%\appendix
731%\section{{\sffamily rpmbuild}コマンドのヘルプ}
732%
733%\section{vbuilderコマンドのヘルプ}
734
735
736
737\end{document}
738
Note: See TracBrowser for help on using the repository browser.