FAQ-4.2/23
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#navi(FAQ-4.2)
カテゴリー: アプリケーション
* Plamo Linux 的パッケージ作成方法 [#je1ddd39]
RIGHT:2006-06-18 (日) 18:10:39投稿
RIGHT:登録者: Plamodocs Project
----
Plamo の世界では rpm や deb のような洗練されたパッケージ...
本稿では,このテンプレートスクリプトについて,その使い方...
PlamoBuild.template は configure スクリプトによって環境を...
逆に Autoconf にきちんと対応していないソフトウェアの場合...
#contents
**事前準備 (テンプレートスクリプトの入手 ) [#w8a84256]
+テンプレートスクリプトの入手~
テンプレートスクリプトは ftp://plamo.linet.gr.jp/pub/Plam...
+パッケージ化したいソフトウェアの入手と展開,事前チェック~
パッケージ化したいソフトウェアをダウンロードして適当なデ...
っているか) を確認しておく方がいいでしょう.~
もしヘッダファイルやライブラリ等が不足しているようならば...
**実際の作成方法 [#j0a275b4]
~以下では http://prdownloads.sourceforge.net/linux-diag/s...
+ビルドスクリプトの準備~
何というソフトウェアを作るためのスクリプトかが一目で分る...
% mv PlamoBuild.template PlamoBuild.sysfsutils-2.0.0
ビルドスクリプトはパッケージ化したいソフトウェアの一つ上...
mv の場合 PlamoBuild.template は PlamoBuild.sysfsutils-2....
+ビルドスクリプトの修正~
エディタ等で PlamoBuild.sysfsutils-2.0.0 を開くと,先頭に...
#!/bin/sh
###################
url=
src=
pkgbase=
vers=
arch=
build=P1
pkg=`echo $pkgbase"-"$vers"-"$arch"-"$build".tgz"`
DOCS="README ../PlamoBuild.$src"
OPT_CONFIG=''
###################
凝ったことをする必要が無い場合,この #### で囲った部分に...
url=
そのソフトウェアの入手先.無くても構いませんが,記録に残...
src=
ソフトウェアのバージョン込みの名称
(/usr/share/docs 以下にドキュメントファイルを作る際に利用)
pkgbase=
ソフトウェアのバージョン抜きの名称
(Plamo的にはパッケージのベース名./var/log/packages 以下...
vers=
ソフトウェアのバージョン
arch=
アーキテクチャ名(CPUの種類)の指定
Plamo の場合,アーキテクチャ名の意味は以下の通り.
i386 : ix86 系の CPU ではたいてい動くはず
i586 : Pentium 以降じゃないと動かない
i686 : Coppermine(PentiumIII/Celeron あたり)以降じゃ...
noarch : バイナリではなくテキストや設定ファイル等
build=
ビルド番号.同じパッケージを作り直した時の識別用
pkg=
上記情報から生成されるパッケージのフルネーム.通常は設定...
DOCS=
ソフトウェアに含まれているドキュメントファイル群.ここで...
/usr/share/$src 以下に格納される.ドキュメントにどのファ...
まりはありませんが,最低限 README と Copyright 関係のフ...
しておきましょう.
OPT_CONFIG=
./configure 実行時に --enable-gui 等,別途指定したいオプ...
今回パッケージ化しようとしている sysfsutils-2.0.0 の場合...
###################
url=http://prdownloads.sourceforge.net/linux-diag/sysfsu...
src=sysfsutils-2.0.0
pkgbase=sysfsutils
vers=2.0.0
arch=i386
build=P1
pkg=`echo $pkgbase"-"$vers"-"$arch"-"$build".tgz"`
DOCS="AUTHORS COPYING CREDITS ChangeLog INSTALL NEWS REA...
OPT_CONFIG=''
###################
+ビルドスクリプトの実行~
PlamoBuild スクリプトは config と build, package の 3 つ...
引数として config を指定すると ./configure スクリプトを実...
build を指定するとmake を実行し,package を指定すると mak...
ソフトウェアによってはインストール時の DESTDIR= の指定を...
てパッケージを再度作る (ファイルの所有者が root 等の正し...
以下,実際に実行される様子を順を追って説明します.
% cd sysfsutils-2.0.0
% sh ../PlamoBuild.sysfsutils-2.0.0
sh ../PlamoBuild.sysfsutils-2.0.0
Making clean in test
make[1]: Entering directory `/mnt/Srcs/S/sysfsutils-2.0....
rm -f dlist_test dlist_test
rm -f get_device get_device
sysfsutils-2.0.0 を展開したディレクトリに移って,一つ上の...
make[1]: Leaving directory `/mnt/Srcs/S/sysfsutils-2.0.0'
checking for a BSD-compatible install... /usr/bin/instal...
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
まず ./configure が走り環境をチェックし,問題なければ必要...
make[1]: Entering directory `/mnt/Srcs/S/sysfsutils-2.0.0'
Making all in lib
make[2]: Entering directory `/mnt/Srcs/S/sysfsutils-2.0....
if /bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE...
-I../include -Wall -W -Wstrict-prototypes -g -O2 -MT ...
-MD -MP -MF ".deps/libsysfs_la-sysfs_utils.Tpo" -c -o li...
`test -f 'sysfs_utils.c' || echo './'`sysfs_utils.c; \th...
".deps/libsysfs_la-sysfs_utils.Tpo" ".deps/libsysfs_la-s...
else rm -f ".deps/libsysfs_la-sysfs_utils.Tpo"; exit 1; fi
make が終ると make install DESTDIR=`pwd`/work が実行され...
Making install in lib
make[1]: Entering directory `/mnt/Srcs/S/sysfsutils-2.0....
make[2]: Entering directory `/mnt/Srcs/S/sysfsutils-2.0....
test -z "/usr/lib" || mkdir -p -- "/mnt/Srcs/S/sysfsutil...
/bin/sh ../libtool --mode=install /usr/bin/install -c '...
/mnt/Srcs/S/sysfsutils-2.0.0/work/usr/lib/libsysfs.la' /...
.libs/libsysfs.so.2.0.0 /mnt/Srcs/S/sysfsutils-2.0.0/wor...
make install が終了すると,インストール済みのバイナリファ...
make[1]: Leaving directory `/mnt/Srcs/S/sysfsutils-2.0.0'
compressing /mnt/Srcs/S/sysfsutils-2.0.0/work/usr/lib
j:libsysfs.so
j:libsysfs.so.2
j:libsysfs.so.2.0.0
stripping -g libsysfs.so.2.0.0
ranlib and stripping -g libsysfs.a
compressing /mnt/Srcs/S/sysfsutils-2.0.0/work/lib
compressing /mnt/Srcs/S/sysfsutils-2.0.0/work/usr/bin
最後に work/ ディレクトリで /sbin/makepkg sysfsutils-2.0....
There are symbolic links in this package.
Do you want to convert the symbolic links in this packag...
script named "/install/doinst.sh"? If you do, the symbol...
removed. You can get them back easily, though, by typing
...
./usr/lib/libsysfs.so
./usr/lib/libsysfs.so.2
Making sysfsutils-2.0.0-i386-P1.tgz...
作成されたパッケージの内容をチェック (この時点では各ファ...
% tar tvzpf work/sysfsutils-2.0.0-i386-P1.tgz
tar tvzpf work/sysfsutils-2.0.0-i386-P1.tgz
drwxr-xr-x kojima/users 0 2006-06-05 15:43:54 usr/
drwxr-xr-x kojima/users 0 2006-06-05 15:43:54 usr/b...
-rwxr-xr-x kojima/users 6952 2006-06-05 15:43:54 usr/b...
-rwxr-xr-x kojima/users 3520 2006-06-05 15:43:54 usr/b...
-rwxr-xr-x kojima/users 4572 2006-06-05 15:43:54 usr/b...
-rwxr-xr-x kojima/users 4136 2006-06-05 15:43:54 usr/b...
パッケージが正しく作成されていることを確認したら,root 権...
% su
root's password: ********
# sh ../PlamoBuild.sysfsutils-2.0.0 package
Making install in lib
make[1]: Entering directory `/mnt/Srcs/S/sysfsutils-2.0....
make[2]: Entering directory `/mnt/Srcs/S/sysfsutils-2.0....
こうすれば各ファイルの所有者が root (あるいは root 以外の...
確認してみましょう.
# tar tvzpf work/sysfsutils-2.0.0-i386-P1.tgz
drwxr-xr-x root/root 0 2006-06-05 15:50:12 usr/
drwxr-xr-x root/root 0 2006-06-05 15:50:13 usr/b...
-rwxr-xr-x root/root 6952 2006-06-05 15:50:13 usr/b...
-rwxr-xr-x root/root 3520 2006-06-05 15:50:13 usr/b...
-rwxr-xr-x root/root 4572 2006-06-05 15:50:13 usr/b...
-rwxr-xr-x root/root 4136 2006-06-05 15:50:13 usr/b...
これで sysfsutils-2.0.0 をパッケージ化した work/sysfsutil...
このパッケージは /sbin/installpkg や /sbin/removepkg でイ...
PlamoBuild.template 自体は簡単なシェルスクリプトになって...
また,パッケージ作成時に用いた PlamoBuild スクリプトは /u...
**改造版テンプレートスクリプトの使用法 [#le106727]
~新しいテンプレートスクリプトと,実際の作成例として TiMid...
- ftp://plamo.linet.gr.jp//pub/Plamo-src/admin/PlamoBuild...
- ftp://plamo.linet.gr.jp/pub/Plamo-src/contrib/Sound/tim...
パッケージ作成の基本的な流れは,上記と大きく変わっていま...
-前方互換性のためのinstall2関数を追加~
Plamo-4.2 に入っている最近の install ( coreutils 5.2.1由...
これは,インストール先ファイルにコピーするために必要な全...
ます.~
そこで,-D オプションに相当する機能を install2 に埋め込み...
なお,-p オプション (インストール先ファイルのタイムスタン...
[使用例]
# install -D -m 644 $srcfile $destfile
# install -pD -m 644 $srcfile $destfile
↓
# install2 $srcfile $destfile
# install2 $srcfile $destfile ; touch -r $srcfile $destf...
-ディレクトリ一括 strip/gzip 処理を compress から分離独立~
--compress 関数は,{ bin,lib,info,man } の標準的なディ...
--また,何も考えずに普通に圧縮すると,ディレクトリ内ファ...
--上記の理由から,インストール直後の単体ファイルを圧縮す...
--%%今のところ,対象ファイルがハードリンクになっている場...
-パッケージ化したいソフトウェアのダウンロードの自動化~
せっかく url= という情報があるのだから,パッケージ化した...
これにともない,スクリプトに download 引数を新設しました...
$ ./Plamobuild.hoge download config build
$ su
# ./Plamobuild.hoge package
でパッケージが作成できるので便利です.
--http://prdownloads.sourceforge.net/linux-diag/sysfsutil...
ちなみに,このスクリプトで作った Plamo パッケージは,同じ...
(ファイルにタイムスタンプ埋め込みなどが無い限り) ,バイナ...
----
この件に関して追加情報などありましたら、以下にどうぞ;
-gzip_dir関数の中のrmには、-f オプションを付けた方がいい...
-url="ftp://jaist.dl.sourceforge.net/pub/sourceforge/t/tc...
-PREFIX=/usr などとして、/usr を$PREFIX に置き換えるよう...
-fscheck関数の中で使われているtarはバージョン1.15以降、デ...
-荒らし防止のためか長文が打ちづらいのが難点ですね。 -- [[...
-「コメントの挿入」は一行分しか入力ウィンドウがでないけど...
-ちょっと壊しそうで恐いですが、「編集」にすれば何でも書き...
-tarをバージョンアップするとfscheck関数の動作がおかしくな...
-ついでに,coreutils-5.96にバージョンアップすると,gzip_d...
-ところで,gzip_dir関数の中のrmに-fオプションを付けた方が...
-おお、tar-1.15.xのバグだったんですか。gzip_dir関数のrmの...
-ふみ,PlamoBuildの実行途中で“Do you want to package as r...
-man9とmannの圧縮を追加する件ですが,man9はLinux独自のカ...
#navi(FAQ-4.2)
終了行:
#navi(FAQ-4.2)
カテゴリー: アプリケーション
* Plamo Linux 的パッケージ作成方法 [#je1ddd39]
RIGHT:2006-06-18 (日) 18:10:39投稿
RIGHT:登録者: Plamodocs Project
----
Plamo の世界では rpm や deb のような洗練されたパッケージ...
本稿では,このテンプレートスクリプトについて,その使い方...
PlamoBuild.template は configure スクリプトによって環境を...
逆に Autoconf にきちんと対応していないソフトウェアの場合...
#contents
**事前準備 (テンプレートスクリプトの入手 ) [#w8a84256]
+テンプレートスクリプトの入手~
テンプレートスクリプトは ftp://plamo.linet.gr.jp/pub/Plam...
+パッケージ化したいソフトウェアの入手と展開,事前チェック~
パッケージ化したいソフトウェアをダウンロードして適当なデ...
っているか) を確認しておく方がいいでしょう.~
もしヘッダファイルやライブラリ等が不足しているようならば...
**実際の作成方法 [#j0a275b4]
~以下では http://prdownloads.sourceforge.net/linux-diag/s...
+ビルドスクリプトの準備~
何というソフトウェアを作るためのスクリプトかが一目で分る...
% mv PlamoBuild.template PlamoBuild.sysfsutils-2.0.0
ビルドスクリプトはパッケージ化したいソフトウェアの一つ上...
mv の場合 PlamoBuild.template は PlamoBuild.sysfsutils-2....
+ビルドスクリプトの修正~
エディタ等で PlamoBuild.sysfsutils-2.0.0 を開くと,先頭に...
#!/bin/sh
###################
url=
src=
pkgbase=
vers=
arch=
build=P1
pkg=`echo $pkgbase"-"$vers"-"$arch"-"$build".tgz"`
DOCS="README ../PlamoBuild.$src"
OPT_CONFIG=''
###################
凝ったことをする必要が無い場合,この #### で囲った部分に...
url=
そのソフトウェアの入手先.無くても構いませんが,記録に残...
src=
ソフトウェアのバージョン込みの名称
(/usr/share/docs 以下にドキュメントファイルを作る際に利用)
pkgbase=
ソフトウェアのバージョン抜きの名称
(Plamo的にはパッケージのベース名./var/log/packages 以下...
vers=
ソフトウェアのバージョン
arch=
アーキテクチャ名(CPUの種類)の指定
Plamo の場合,アーキテクチャ名の意味は以下の通り.
i386 : ix86 系の CPU ではたいてい動くはず
i586 : Pentium 以降じゃないと動かない
i686 : Coppermine(PentiumIII/Celeron あたり)以降じゃ...
noarch : バイナリではなくテキストや設定ファイル等
build=
ビルド番号.同じパッケージを作り直した時の識別用
pkg=
上記情報から生成されるパッケージのフルネーム.通常は設定...
DOCS=
ソフトウェアに含まれているドキュメントファイル群.ここで...
/usr/share/$src 以下に格納される.ドキュメントにどのファ...
まりはありませんが,最低限 README と Copyright 関係のフ...
しておきましょう.
OPT_CONFIG=
./configure 実行時に --enable-gui 等,別途指定したいオプ...
今回パッケージ化しようとしている sysfsutils-2.0.0 の場合...
###################
url=http://prdownloads.sourceforge.net/linux-diag/sysfsu...
src=sysfsutils-2.0.0
pkgbase=sysfsutils
vers=2.0.0
arch=i386
build=P1
pkg=`echo $pkgbase"-"$vers"-"$arch"-"$build".tgz"`
DOCS="AUTHORS COPYING CREDITS ChangeLog INSTALL NEWS REA...
OPT_CONFIG=''
###################
+ビルドスクリプトの実行~
PlamoBuild スクリプトは config と build, package の 3 つ...
引数として config を指定すると ./configure スクリプトを実...
build を指定するとmake を実行し,package を指定すると mak...
ソフトウェアによってはインストール時の DESTDIR= の指定を...
てパッケージを再度作る (ファイルの所有者が root 等の正し...
以下,実際に実行される様子を順を追って説明します.
% cd sysfsutils-2.0.0
% sh ../PlamoBuild.sysfsutils-2.0.0
sh ../PlamoBuild.sysfsutils-2.0.0
Making clean in test
make[1]: Entering directory `/mnt/Srcs/S/sysfsutils-2.0....
rm -f dlist_test dlist_test
rm -f get_device get_device
sysfsutils-2.0.0 を展開したディレクトリに移って,一つ上の...
make[1]: Leaving directory `/mnt/Srcs/S/sysfsutils-2.0.0'
checking for a BSD-compatible install... /usr/bin/instal...
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
まず ./configure が走り環境をチェックし,問題なければ必要...
make[1]: Entering directory `/mnt/Srcs/S/sysfsutils-2.0.0'
Making all in lib
make[2]: Entering directory `/mnt/Srcs/S/sysfsutils-2.0....
if /bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE...
-I../include -Wall -W -Wstrict-prototypes -g -O2 -MT ...
-MD -MP -MF ".deps/libsysfs_la-sysfs_utils.Tpo" -c -o li...
`test -f 'sysfs_utils.c' || echo './'`sysfs_utils.c; \th...
".deps/libsysfs_la-sysfs_utils.Tpo" ".deps/libsysfs_la-s...
else rm -f ".deps/libsysfs_la-sysfs_utils.Tpo"; exit 1; fi
make が終ると make install DESTDIR=`pwd`/work が実行され...
Making install in lib
make[1]: Entering directory `/mnt/Srcs/S/sysfsutils-2.0....
make[2]: Entering directory `/mnt/Srcs/S/sysfsutils-2.0....
test -z "/usr/lib" || mkdir -p -- "/mnt/Srcs/S/sysfsutil...
/bin/sh ../libtool --mode=install /usr/bin/install -c '...
/mnt/Srcs/S/sysfsutils-2.0.0/work/usr/lib/libsysfs.la' /...
.libs/libsysfs.so.2.0.0 /mnt/Srcs/S/sysfsutils-2.0.0/wor...
make install が終了すると,インストール済みのバイナリファ...
make[1]: Leaving directory `/mnt/Srcs/S/sysfsutils-2.0.0'
compressing /mnt/Srcs/S/sysfsutils-2.0.0/work/usr/lib
j:libsysfs.so
j:libsysfs.so.2
j:libsysfs.so.2.0.0
stripping -g libsysfs.so.2.0.0
ranlib and stripping -g libsysfs.a
compressing /mnt/Srcs/S/sysfsutils-2.0.0/work/lib
compressing /mnt/Srcs/S/sysfsutils-2.0.0/work/usr/bin
最後に work/ ディレクトリで /sbin/makepkg sysfsutils-2.0....
There are symbolic links in this package.
Do you want to convert the symbolic links in this packag...
script named "/install/doinst.sh"? If you do, the symbol...
removed. You can get them back easily, though, by typing
...
./usr/lib/libsysfs.so
./usr/lib/libsysfs.so.2
Making sysfsutils-2.0.0-i386-P1.tgz...
作成されたパッケージの内容をチェック (この時点では各ファ...
% tar tvzpf work/sysfsutils-2.0.0-i386-P1.tgz
tar tvzpf work/sysfsutils-2.0.0-i386-P1.tgz
drwxr-xr-x kojima/users 0 2006-06-05 15:43:54 usr/
drwxr-xr-x kojima/users 0 2006-06-05 15:43:54 usr/b...
-rwxr-xr-x kojima/users 6952 2006-06-05 15:43:54 usr/b...
-rwxr-xr-x kojima/users 3520 2006-06-05 15:43:54 usr/b...
-rwxr-xr-x kojima/users 4572 2006-06-05 15:43:54 usr/b...
-rwxr-xr-x kojima/users 4136 2006-06-05 15:43:54 usr/b...
パッケージが正しく作成されていることを確認したら,root 権...
% su
root's password: ********
# sh ../PlamoBuild.sysfsutils-2.0.0 package
Making install in lib
make[1]: Entering directory `/mnt/Srcs/S/sysfsutils-2.0....
make[2]: Entering directory `/mnt/Srcs/S/sysfsutils-2.0....
こうすれば各ファイルの所有者が root (あるいは root 以外の...
確認してみましょう.
# tar tvzpf work/sysfsutils-2.0.0-i386-P1.tgz
drwxr-xr-x root/root 0 2006-06-05 15:50:12 usr/
drwxr-xr-x root/root 0 2006-06-05 15:50:13 usr/b...
-rwxr-xr-x root/root 6952 2006-06-05 15:50:13 usr/b...
-rwxr-xr-x root/root 3520 2006-06-05 15:50:13 usr/b...
-rwxr-xr-x root/root 4572 2006-06-05 15:50:13 usr/b...
-rwxr-xr-x root/root 4136 2006-06-05 15:50:13 usr/b...
これで sysfsutils-2.0.0 をパッケージ化した work/sysfsutil...
このパッケージは /sbin/installpkg や /sbin/removepkg でイ...
PlamoBuild.template 自体は簡単なシェルスクリプトになって...
また,パッケージ作成時に用いた PlamoBuild スクリプトは /u...
**改造版テンプレートスクリプトの使用法 [#le106727]
~新しいテンプレートスクリプトと,実際の作成例として TiMid...
- ftp://plamo.linet.gr.jp//pub/Plamo-src/admin/PlamoBuild...
- ftp://plamo.linet.gr.jp/pub/Plamo-src/contrib/Sound/tim...
パッケージ作成の基本的な流れは,上記と大きく変わっていま...
-前方互換性のためのinstall2関数を追加~
Plamo-4.2 に入っている最近の install ( coreutils 5.2.1由...
これは,インストール先ファイルにコピーするために必要な全...
ます.~
そこで,-D オプションに相当する機能を install2 に埋め込み...
なお,-p オプション (インストール先ファイルのタイムスタン...
[使用例]
# install -D -m 644 $srcfile $destfile
# install -pD -m 644 $srcfile $destfile
↓
# install2 $srcfile $destfile
# install2 $srcfile $destfile ; touch -r $srcfile $destf...
-ディレクトリ一括 strip/gzip 処理を compress から分離独立~
--compress 関数は,{ bin,lib,info,man } の標準的なディ...
--また,何も考えずに普通に圧縮すると,ディレクトリ内ファ...
--上記の理由から,インストール直後の単体ファイルを圧縮す...
--%%今のところ,対象ファイルがハードリンクになっている場...
-パッケージ化したいソフトウェアのダウンロードの自動化~
せっかく url= という情報があるのだから,パッケージ化した...
これにともない,スクリプトに download 引数を新設しました...
$ ./Plamobuild.hoge download config build
$ su
# ./Plamobuild.hoge package
でパッケージが作成できるので便利です.
--http://prdownloads.sourceforge.net/linux-diag/sysfsutil...
ちなみに,このスクリプトで作った Plamo パッケージは,同じ...
(ファイルにタイムスタンプ埋め込みなどが無い限り) ,バイナ...
----
この件に関して追加情報などありましたら、以下にどうぞ;
-gzip_dir関数の中のrmには、-f オプションを付けた方がいい...
-url="ftp://jaist.dl.sourceforge.net/pub/sourceforge/t/tc...
-PREFIX=/usr などとして、/usr を$PREFIX に置き換えるよう...
-fscheck関数の中で使われているtarはバージョン1.15以降、デ...
-荒らし防止のためか長文が打ちづらいのが難点ですね。 -- [[...
-「コメントの挿入」は一行分しか入力ウィンドウがでないけど...
-ちょっと壊しそうで恐いですが、「編集」にすれば何でも書き...
-tarをバージョンアップするとfscheck関数の動作がおかしくな...
-ついでに,coreutils-5.96にバージョンアップすると,gzip_d...
-ところで,gzip_dir関数の中のrmに-fオプションを付けた方が...
-おお、tar-1.15.xのバグだったんですか。gzip_dir関数のrmの...
-ふみ,PlamoBuildの実行途中で“Do you want to package as r...
-man9とmannの圧縮を追加する件ですが,man9はLinux独自のカ...
#navi(FAQ-4.2)
ページ名: