diary/Kojima/2009-01-10
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[diary/Kojima]]
・How to make packages? その 1
以前から書かないといけないと思いつつ放置していたPlamoBuil...
MLに流すのは長すぎるし、修正等も入ると思うのでとりあえず...
公式サイトの方に登録してもらおう。
====================================================
Plamo Linux が採用している tgz 形式のパッケージは,
インストールするファイルを適切なディレクトリに配置して
tar + gzip で圧縮しているだけなので,
rpm や deb のような専用のスクリプトを使わなくても容易に作...
しかしながら,configure 時に指定したオプションやパッケー...
PlamoBuild と呼ばれるシェルスクリプトを使って作成し,その...
ディレクトリ(/usr/share/doc 以下)に保存しておくことが推奨...
最近のソフトウェアでは,たいてい GNU autoconf/automake に...
用意されています.この configure スクリプトが用意されてい...
必要な作業がほぼ決まっているので,ビルド用スクリプトも汎...
それを使い回すことができます.
PlamoBuild スクリプトは,統一された書式が決まっているわけ...
私が使っているテンプレートは
ftp://plamo.linet.gr.jp/pub/Plamo-src/admin/PlamoBuild.te...
に置いています.このスクリプトでは先頭部分の各種設定を書...
たいていのソフトウェアに対応できるようになっています.
########################################################...
url=""
pkgbase=
vers=
arch=i586
build=P1
src=$pkgbase-$vers
OPT_CONFIG=""
DOCS="README"
########################################################...
以下,この定義部分の各行について,zsh-4.3.4 を例にして紹...
url=".." の部分は,パッケージのソースコードの入手元を記述...
このデータは必須ではありませんが,記述しておけば備忘録と...
pkgbase=.. の部分はパッケージのベース名を記述します.zsh-...
pkgbase=zsh となります.
vers=.. はパッケージのバージョン名を記述します.zsh-4.3.4...
vers=4.3.4 となります.
arch はパッケージの対応CPUを示します.i586 になっているパ...
CPU では動かない可能性がありますが,どこまで依存性がある...
このフィールドは現在のインストーラではチェックしていませ...
古い CPU 環境にインストールする際はユーザー自身が注意して...
build はパッケージのビルド番号を示します.configure スク...
同じバージョンのソフトウェアを再ビルドした際の区別に使い...
ユーザー自身が注意してください.
src はソースコードが展開されているディレクトリ名の指定で...
たいてい上記のように $pkgbase-$vers(zsh の例では zsh-4.3....
なっていますが,中にはこのルールに従っていないソフトウェ...
OPT_CONFIG=.. の部分は configure スクリプトに渡したいオプ...
汎用的な --prefix=/usr 等のオプションはスクリプト中であら...
ここで記述するのはそのパッケージに独自の configure オプシ...
zsh の場合,--enable-multibyte というオプションでマルチバ...
OPT_CONFIG="--enable-multibyte" としておきます.
DOC="README" の部分はインストールするドキュメントファイル...
デフォルトでは README だけを指定していますが,
パッケージによって ChangeLog や INSTALL 等,インストール...
ドキュメントファイルがありますので,それらを適宜指定しま...
zsh の場合,ソースコードに含まれる以下のドキュメントファ...
DOCS="ChangeLog FEATURES INSTALL LICENCE MACHINES META-FA...
以上の修正を施した結果,PlamoBuild.zsh-4.3.4 の先頭部分は...
########################################################...
url="http://downloads.sourceforge.net/zsh/zsh-4.3.4.tar....
pkgbase=zsh
vers=4.3.4
arch=i586
build=P1
src=$pkgbase-$vers
OPT_CONFIG="--enable-multibyte"
DOCS="ChangeLog FEATURES INSTALL LICENCE MACHINES META-F...
########################################################...
PlamoBuild.template を元にした PlamoBuild スクリプトは co...
3つの引数を取ります.何も引数を指定しないと,config, buil...
なお,package は build に,build は config に依存している...
build せずに package しても正しいパッケージは作成されませ...
config を指定すると,作業用の build ディレクトリをクリア...
src で指定された $pkgbase-$vers ディレクトリ以下のファイ...
build ディレクトリにコピーし,build ディレクトリに cd して,
OPT_CONFIG に指定したパラメータを用いて configure スクリ...
build ディレクトリは,config を実行する度にクリア(rm -rf ...
ソースコードに修正を加えたり,大規模なソフトウェアをパッ...
build を指定すると,build ディレクトリに cd して make を...
make でエラーが出る際は,build 以下に展開されているソース...
build ディレクトリで make を実行するか,元のディレクトリ...
続きからビルドが進行します.この際,config すると修正した...
削除されるのでご注意ください.
加えた修正はそのままでは次回以降に反映されないので,パッ...
PlamoBuild スクリプトに組み込んでしまうのがいいでしょう....
package を指定すると build ディレクトリに移動した上で,pr...
make install が実行されます.その際,root 権限で実行する...
テスト時は一般ユーザーで実行してインストール先が正しいか...
ソフトウェアによっては make install 時に prefix 指定を見...
インストールしようとするもの散見されますが,make install ...
書き込もうとするとエラーになりますので,チェック可能です.
そのようなソースコードでは,build ディレクトリの Makefil...
調整するか,PlamoBuild スクリプト中で cp コマンド等でパ...
インストールされるパッケージが全て prefix に指定したディ...
インストールされることが確認できたら,PlamoBuild.XXX pack...
今度は root 権限を指定し,インストールされるファイルの所...
以下に,libcap-2.16 というソフトウェアを元に,PlamoBuild....
手順を紹介します.
1) パッケージ作成用のディレクトリ(Libcap)を作る
% mkdir Libcap ; cd Libcap
2) 必要なソースコードのダウンロードと展開
% wget http://www.kernel.org/pub/linux/libs/security/lin...
tar xvf libpcap-2.16.tar.gz
3) PlamoBuild スクリプトの作成
% cp ~/PlamoBuild.template ./PlamoBuild.libpcap-2.16 ; v...
修正後のヘッダー部分はこんな感じ
########################################################...
url=http://www.kernel.org/pub/linux/libs/security/linux-...
pkgbase=libcap
vers=2.16
arch=i586
build=P1
src=libcap-2.16
OPT_CONFIG=''
DOCS='CHANGELOG License README'
########################################################...
4) PlamoBuild.libcap-2.16 の実行
% ./PlamoBuild.libcap-2.16
rm -f *~ core
make -C libcap clean
make[1]: ディレクトリ `/home/kojima/Libcap/build/libcap'...
rm -f *~ core
...
make[1]: ディレクトリ `/home/kojima/Libcap/build/progs' ...
gcc -O2 -Dlinux -fPIC -Wall -Wwrite-strings -Wpointer-ar...
-Wstrict-prototypes -Wmissing-prototypes -Wnested-exte...
-I/home/kojima/Libcap/build/progs/../libcap/include \
-I/home/kojima/Libcap/build/progs/../libcap/include -c...
...
Do you want to package as root? [y/N] n
make -C libcap install
make[1]: ディレクトリ `/home/kojima/Libcap/build/libcap'...
...
pruning symlink in /home/kojima/Libcap/work/usr/share/ma...
pruning symlink in /home/kojima/Libcap/work/usr/share/ma...
pruning symlink in /home/kojima/Libcap/work/usr/share/ma...
Making ../libcap-2.16-i586-P1.tgz...
Do you want to keep work files? [y/N] n
%
エラーが出なければ,カレントディレクトリの work/ 以下のデ...
必要なファイルがインストールされた上でパッケージ(libcap-2...
work 以下のディレクトリを確認したり,tar tvf でパッケージ...
5) PlamoBuild.libcap-2.16 package の実行
インストールされたパッケージに問題がないようでしたら,再...
オプションを付けて実行します.今度は root になってパッケ...
% ./PlamoBuild.libcap-2.16 package
Do you want to package as root? [y/N] y
パスワード: XXXXXXX
make -C libcap install
make[1]: ディレクトリ `/home/kojima/Libcap/build/libcap'...
....
Making ../libcap-2.16-i586-P1.tgz...
Do you want to keep work files? [y/N] y
%
最後の質問に y と答えれば,work や pivot,i.et, i.st と言...
削除されます.
こうして作ったパッケージは,通常のパッケージと同様,insta...
removepkg でアンインストールできるので,個人で使うソフト...
インストールするようにすれば管理が楽になります.
-ごめんなさい自分はftp://plamo.linet.gr.jp/pub/Plamo-src/...
-tamuです。ご無沙汰してます。
url=".." の部分は,パッケージのソースコードの入手元を記...
このデータは必須ではありませんが,記述しておけば備忘録と...
上記の手順にあるように,パッケージ作成用のディレクトリ上...
必要なソースコードのダウンロードと展開を済ませておけば,u...
が使われることはありませんが,ダウンロードと展開が未だの...
記述されている入手元から,資材(パッチ含む)を自動的に引っ...
すなわち,パッケージ作成用のディレクトリとPlamoBuildスク...
ば,ビルド可能となります。なお,PlamoBuildスクリプトの引...
指定すると,url=の定義部分に記述された資材のダウンロード...
ます。
DOC="README" の部分はインストールするドキュメントファイ...
デフォルトでは README だけを指定していますが,
パッケージによって ChangeLog や INSTALL 等,インストール...
ドキュメントファイルがありますので,それらを適宜指定しま...
-DOC="doc/README"などのように,ディレクトリを含めることが...
-DOC="README* ChangeLog.[123]"などのように,パス名展開を...
できます。パス名展開されたドキュメントは,アルファベット...
ージに格納されます。
-DOC="`echo ChangeLog.{Jan,Feb,Mar,Apr}08`"などのようにす...
ース展開を含めることができます。この場合,ブレース展開の...
ージに格納されます。
package を指定すると build ディレクトリに移動した上で,p...
make install が実行されます.
prefix=`pwd`/workではなく,DESTDIR=`pwd`/workですね。:-)
あと,関連した小さい複数のソフトウェアをまとめて一つのパ...
たい場合には,定義部分のsrc,OPT_CONFIG,DOCSについて,そ...
として記述すれば良いです。修正後のヘッダ部分はこんな感じ。
########################################################...
url="http://jaist.dl.sourceforge.net/sourceforge/hoge/ho...
http://jaist.dl.sourceforge.net/sourceforge/fuga/fug...
http://jaist.dl.sourceforge.net/sourceforge/piyo/piy...
pkgbase=hogehoge
vers=1.0.0
arch=i386
build=P1
src[0]=hoge-1.0.0
src[1]=fuga-1.0.0
src[2]=piyo-1.0.0
OPT_CONFIG[0]="--enable-hoge"
OPT_CONFIG[1]="--enable-fuga"
OPT_CONFIG[2]="--enable-piyo"
DOCS[0]="README AUTHORS COPYING ChangeLog INSTALL NEWS"
DOCS[1]="NEWS README AUTHORS INSTALL ChangeLog COPYING"
DOCS[2]="NEWS TODO README THANKS AUTHORS INSTALL ChangeL...
########################################################...
~-- [[tamu]] &new{2009-02-05 (木) 17:00:00};
#comment
終了行:
[[diary/Kojima]]
・How to make packages? その 1
以前から書かないといけないと思いつつ放置していたPlamoBuil...
MLに流すのは長すぎるし、修正等も入ると思うのでとりあえず...
公式サイトの方に登録してもらおう。
====================================================
Plamo Linux が採用している tgz 形式のパッケージは,
インストールするファイルを適切なディレクトリに配置して
tar + gzip で圧縮しているだけなので,
rpm や deb のような専用のスクリプトを使わなくても容易に作...
しかしながら,configure 時に指定したオプションやパッケー...
PlamoBuild と呼ばれるシェルスクリプトを使って作成し,その...
ディレクトリ(/usr/share/doc 以下)に保存しておくことが推奨...
最近のソフトウェアでは,たいてい GNU autoconf/automake に...
用意されています.この configure スクリプトが用意されてい...
必要な作業がほぼ決まっているので,ビルド用スクリプトも汎...
それを使い回すことができます.
PlamoBuild スクリプトは,統一された書式が決まっているわけ...
私が使っているテンプレートは
ftp://plamo.linet.gr.jp/pub/Plamo-src/admin/PlamoBuild.te...
に置いています.このスクリプトでは先頭部分の各種設定を書...
たいていのソフトウェアに対応できるようになっています.
########################################################...
url=""
pkgbase=
vers=
arch=i586
build=P1
src=$pkgbase-$vers
OPT_CONFIG=""
DOCS="README"
########################################################...
以下,この定義部分の各行について,zsh-4.3.4 を例にして紹...
url=".." の部分は,パッケージのソースコードの入手元を記述...
このデータは必須ではありませんが,記述しておけば備忘録と...
pkgbase=.. の部分はパッケージのベース名を記述します.zsh-...
pkgbase=zsh となります.
vers=.. はパッケージのバージョン名を記述します.zsh-4.3.4...
vers=4.3.4 となります.
arch はパッケージの対応CPUを示します.i586 になっているパ...
CPU では動かない可能性がありますが,どこまで依存性がある...
このフィールドは現在のインストーラではチェックしていませ...
古い CPU 環境にインストールする際はユーザー自身が注意して...
build はパッケージのビルド番号を示します.configure スク...
同じバージョンのソフトウェアを再ビルドした際の区別に使い...
ユーザー自身が注意してください.
src はソースコードが展開されているディレクトリ名の指定で...
たいてい上記のように $pkgbase-$vers(zsh の例では zsh-4.3....
なっていますが,中にはこのルールに従っていないソフトウェ...
OPT_CONFIG=.. の部分は configure スクリプトに渡したいオプ...
汎用的な --prefix=/usr 等のオプションはスクリプト中であら...
ここで記述するのはそのパッケージに独自の configure オプシ...
zsh の場合,--enable-multibyte というオプションでマルチバ...
OPT_CONFIG="--enable-multibyte" としておきます.
DOC="README" の部分はインストールするドキュメントファイル...
デフォルトでは README だけを指定していますが,
パッケージによって ChangeLog や INSTALL 等,インストール...
ドキュメントファイルがありますので,それらを適宜指定しま...
zsh の場合,ソースコードに含まれる以下のドキュメントファ...
DOCS="ChangeLog FEATURES INSTALL LICENCE MACHINES META-FA...
以上の修正を施した結果,PlamoBuild.zsh-4.3.4 の先頭部分は...
########################################################...
url="http://downloads.sourceforge.net/zsh/zsh-4.3.4.tar....
pkgbase=zsh
vers=4.3.4
arch=i586
build=P1
src=$pkgbase-$vers
OPT_CONFIG="--enable-multibyte"
DOCS="ChangeLog FEATURES INSTALL LICENCE MACHINES META-F...
########################################################...
PlamoBuild.template を元にした PlamoBuild スクリプトは co...
3つの引数を取ります.何も引数を指定しないと,config, buil...
なお,package は build に,build は config に依存している...
build せずに package しても正しいパッケージは作成されませ...
config を指定すると,作業用の build ディレクトリをクリア...
src で指定された $pkgbase-$vers ディレクトリ以下のファイ...
build ディレクトリにコピーし,build ディレクトリに cd して,
OPT_CONFIG に指定したパラメータを用いて configure スクリ...
build ディレクトリは,config を実行する度にクリア(rm -rf ...
ソースコードに修正を加えたり,大規模なソフトウェアをパッ...
build を指定すると,build ディレクトリに cd して make を...
make でエラーが出る際は,build 以下に展開されているソース...
build ディレクトリで make を実行するか,元のディレクトリ...
続きからビルドが進行します.この際,config すると修正した...
削除されるのでご注意ください.
加えた修正はそのままでは次回以降に反映されないので,パッ...
PlamoBuild スクリプトに組み込んでしまうのがいいでしょう....
package を指定すると build ディレクトリに移動した上で,pr...
make install が実行されます.その際,root 権限で実行する...
テスト時は一般ユーザーで実行してインストール先が正しいか...
ソフトウェアによっては make install 時に prefix 指定を見...
インストールしようとするもの散見されますが,make install ...
書き込もうとするとエラーになりますので,チェック可能です.
そのようなソースコードでは,build ディレクトリの Makefil...
調整するか,PlamoBuild スクリプト中で cp コマンド等でパ...
インストールされるパッケージが全て prefix に指定したディ...
インストールされることが確認できたら,PlamoBuild.XXX pack...
今度は root 権限を指定し,インストールされるファイルの所...
以下に,libcap-2.16 というソフトウェアを元に,PlamoBuild....
手順を紹介します.
1) パッケージ作成用のディレクトリ(Libcap)を作る
% mkdir Libcap ; cd Libcap
2) 必要なソースコードのダウンロードと展開
% wget http://www.kernel.org/pub/linux/libs/security/lin...
tar xvf libpcap-2.16.tar.gz
3) PlamoBuild スクリプトの作成
% cp ~/PlamoBuild.template ./PlamoBuild.libpcap-2.16 ; v...
修正後のヘッダー部分はこんな感じ
########################################################...
url=http://www.kernel.org/pub/linux/libs/security/linux-...
pkgbase=libcap
vers=2.16
arch=i586
build=P1
src=libcap-2.16
OPT_CONFIG=''
DOCS='CHANGELOG License README'
########################################################...
4) PlamoBuild.libcap-2.16 の実行
% ./PlamoBuild.libcap-2.16
rm -f *~ core
make -C libcap clean
make[1]: ディレクトリ `/home/kojima/Libcap/build/libcap'...
rm -f *~ core
...
make[1]: ディレクトリ `/home/kojima/Libcap/build/progs' ...
gcc -O2 -Dlinux -fPIC -Wall -Wwrite-strings -Wpointer-ar...
-Wstrict-prototypes -Wmissing-prototypes -Wnested-exte...
-I/home/kojima/Libcap/build/progs/../libcap/include \
-I/home/kojima/Libcap/build/progs/../libcap/include -c...
...
Do you want to package as root? [y/N] n
make -C libcap install
make[1]: ディレクトリ `/home/kojima/Libcap/build/libcap'...
...
pruning symlink in /home/kojima/Libcap/work/usr/share/ma...
pruning symlink in /home/kojima/Libcap/work/usr/share/ma...
pruning symlink in /home/kojima/Libcap/work/usr/share/ma...
Making ../libcap-2.16-i586-P1.tgz...
Do you want to keep work files? [y/N] n
%
エラーが出なければ,カレントディレクトリの work/ 以下のデ...
必要なファイルがインストールされた上でパッケージ(libcap-2...
work 以下のディレクトリを確認したり,tar tvf でパッケージ...
5) PlamoBuild.libcap-2.16 package の実行
インストールされたパッケージに問題がないようでしたら,再...
オプションを付けて実行します.今度は root になってパッケ...
% ./PlamoBuild.libcap-2.16 package
Do you want to package as root? [y/N] y
パスワード: XXXXXXX
make -C libcap install
make[1]: ディレクトリ `/home/kojima/Libcap/build/libcap'...
....
Making ../libcap-2.16-i586-P1.tgz...
Do you want to keep work files? [y/N] y
%
最後の質問に y と答えれば,work や pivot,i.et, i.st と言...
削除されます.
こうして作ったパッケージは,通常のパッケージと同様,insta...
removepkg でアンインストールできるので,個人で使うソフト...
インストールするようにすれば管理が楽になります.
-ごめんなさい自分はftp://plamo.linet.gr.jp/pub/Plamo-src/...
-tamuです。ご無沙汰してます。
url=".." の部分は,パッケージのソースコードの入手元を記...
このデータは必須ではありませんが,記述しておけば備忘録と...
上記の手順にあるように,パッケージ作成用のディレクトリ上...
必要なソースコードのダウンロードと展開を済ませておけば,u...
が使われることはありませんが,ダウンロードと展開が未だの...
記述されている入手元から,資材(パッチ含む)を自動的に引っ...
すなわち,パッケージ作成用のディレクトリとPlamoBuildスク...
ば,ビルド可能となります。なお,PlamoBuildスクリプトの引...
指定すると,url=の定義部分に記述された資材のダウンロード...
ます。
DOC="README" の部分はインストールするドキュメントファイ...
デフォルトでは README だけを指定していますが,
パッケージによって ChangeLog や INSTALL 等,インストール...
ドキュメントファイルがありますので,それらを適宜指定しま...
-DOC="doc/README"などのように,ディレクトリを含めることが...
-DOC="README* ChangeLog.[123]"などのように,パス名展開を...
できます。パス名展開されたドキュメントは,アルファベット...
ージに格納されます。
-DOC="`echo ChangeLog.{Jan,Feb,Mar,Apr}08`"などのようにす...
ース展開を含めることができます。この場合,ブレース展開の...
ージに格納されます。
package を指定すると build ディレクトリに移動した上で,p...
make install が実行されます.
prefix=`pwd`/workではなく,DESTDIR=`pwd`/workですね。:-)
あと,関連した小さい複数のソフトウェアをまとめて一つのパ...
たい場合には,定義部分のsrc,OPT_CONFIG,DOCSについて,そ...
として記述すれば良いです。修正後のヘッダ部分はこんな感じ。
########################################################...
url="http://jaist.dl.sourceforge.net/sourceforge/hoge/ho...
http://jaist.dl.sourceforge.net/sourceforge/fuga/fug...
http://jaist.dl.sourceforge.net/sourceforge/piyo/piy...
pkgbase=hogehoge
vers=1.0.0
arch=i386
build=P1
src[0]=hoge-1.0.0
src[1]=fuga-1.0.0
src[2]=piyo-1.0.0
OPT_CONFIG[0]="--enable-hoge"
OPT_CONFIG[1]="--enable-fuga"
OPT_CONFIG[2]="--enable-piyo"
DOCS[0]="README AUTHORS COPYING ChangeLog INSTALL NEWS"
DOCS[1]="NEWS README AUTHORS INSTALL ChangeLog COPYING"
DOCS[2]="NEWS TODO README THANKS AUTHORS INSTALL ChangeL...
########################################################...
~-- [[tamu]] &new{2009-02-05 (木) 17:00:00};
#comment
ページ名: