2009年6月2日火曜日

lxcのパッケージを作ってみる


/var/src/pnunt$ pnut initpkg lxc-0.6.2
Not found src.def.
set --- src.def ---

src.def and lxc.conf were made in /var/src/pnuts/lxc.0_6_2.
If not need,delete it,or edit it.


src_home_urlとsrc_file_urlを編集


src_home_url="http://lxc.sourceforge.net"
src_file_url="$src_home_url/download/lxc/$src_file"


ソース取得


/var/src/pnuts/lxc.0_6_2$ pnut getsrc
--2009-05-27 03:53:29-- http://lxc.sourceforge.net/download/lxc/lxc-0.6.2.tar.gz
Resolving lxc.sourceforge.net... 216.34.181.96
Connecting to lxc.sourceforge.net|216.34.181.96|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 450189 (440K) [application/x-gzip]
Saving to: `lxc-0.6.2.tar.gz'

100%[======================================>] 450,189 165K/s in 2.7s

2009-05-27 03:53:32 (165 KB/s) - `lxc-0.6.2.tar.gz' saved [450189/450189]


ファイルを展開
/var/src/pnuts/lxc.0_6_2$ pnut setsrc

/var/src/work/lxc.0_6_2-1/build/srcに展開されます。

再度 src.defを編集。
ソースからライセンスは LGPL2.1のようなので src.defのsrc_licenseをLGPL2.1に設定
それから、SRC_makesrc()を作る

SRC_makesrc(){
##compile from source
config_opt="--prefix=/usr"
./configure $config_opt
make
}


/var/src/pnuts/lxc.0_6_2$ pnut makesrc で コンパイルするが依存ファイルがあるようだ

src.defを編集。src_build_debを設定
src_build_deb=libcap2-dev

/var/src/pnuts/lxc.0_6_2$ pnut makesrc を実行して完了

Makefileをみると $DESTDIRにインストールするっぽいので、src.def のSRC_mksrctree()の部分のコメントアウトを消す。


SRC_mksrctree(){
make -C $NUTS_WORK_BUILD/$src_file_dir install DESTDIR=$NUTS_WORK_PKG/$src_name.src
}


/var/src/pnuts/lxc.0_6_2$ pnut mksrctree を実行すると
/var/src/work/lxc.0_6_2-1/pkg/lxc.src にインストールディレクトリが作られる。

/usr/var/lib,/usr/libexec,/usr/etcが気に入らないので configureのオプションをかえて
src.defのSRC_makesrc()の config-optを変更

config_opt="--prefix=/usr --localstatedir=/var --libexecdir=/usr/lib/lxc --sysconfdir=/etc"

コンパイルが通ることは分かっているので pnut src で全部実行する
/var/src/pnuts/lxc.0_6_2$ pnut src を実行する

展開したファイル一覧:

/var/src/work/lxc.0_6_2-1/pkg$ find lxc.src/
lxc.src/
lxc.src/etc
lxc.src/etc/lxc
lxc.src/etc/lxc/lxc-phys.conf
lxc.src/etc/lxc/lxc-no-netns.conf
lxc.src/etc/lxc/lxc-veth.conf
lxc.src/etc/lxc/lxc-macvlan.conf
lxc.src/etc/lxc/lxc-complex-config
lxc.src/etc/lxc/lxc-empty-netns.conf
lxc.src/var
lxc.src/var/lib
lxc.src/var/lib/lxc
lxc.src/usr
lxc.src/usr/bin
lxc.src/usr/bin/lxc-unfreeze
lxc.src/usr/bin/lxc-monitor
lxc.src/usr/bin/lxc-ps
lxc.src/usr/bin/lxc-setcap
lxc.src/usr/bin/lxc-wait
lxc.src/usr/bin/lxc-sshd
lxc.src/usr/bin/lxc-debian
lxc.src/usr/bin/lxc-console
lxc.src/usr/bin/lxc-start
lxc.src/usr/bin/lxc-info
lxc.src/usr/bin/lxc-version
lxc.src/usr/bin/lxc-cgroup
lxc.src/usr/bin/lxc-checkconfig
lxc.src/usr/bin/lxc-fedora
lxc.src/usr/bin/lxc-checkpoint
lxc.src/usr/bin/lxc-stop
lxc.src/usr/bin/lxc-netstat
lxc.src/usr/bin/lxc-freeze
lxc.src/usr/bin/lxc-destroy
lxc.src/usr/bin/lxc-create
lxc.src/usr/bin/lxc-execute
lxc.src/usr/bin/lxc-unshare
lxc.src/usr/bin/lxc-ls
lxc.src/usr/bin/lxc-restart
lxc.src/usr/share
lxc.src/usr/share/man
lxc.src/usr/share/man/man1
lxc.src/usr/share/man/man7
lxc.src/usr/share/man/man5
lxc.src/usr/lib
lxc.src/usr/lib/liblxc.a
lxc.src/usr/lib/liblxc-0.6.2.so
lxc.src/usr/lib/liblxc.la
lxc.src/usr/lib/lxc
lxc.src/usr/lib/lxc/lxc-init
lxc.src/usr/lib/liblxc.so
lxc.src/usr/include
lxc.src/usr/include/lxc
lxc.src/usr/include/lxc/namespace.h
lxc.src/usr/include/lxc/utils.h
lxc.src/usr/include/lxc/log.h
lxc.src/usr/include/lxc/monitor.h
lxc.src/usr/include/lxc/lock.h
lxc.src/usr/include/lxc/conf.h
lxc.src/usr/include/lxc/lxc.h
lxc.src/usr/include/lxc/cgroup.h
lxc.src/usr/include/lxc/error.h
lxc.src/usr/include/lxc/state.h
lxc.src/usr/include/lxc/list.h


実行に必要なのは、/etc /var /usr/bin /usr/libのようなので
lxc.confを編集、おそらくlibcap2ライブラリも必要,
設定ファイルもあるので3行編集

pkg_configs="/etc/lxc"
...
pkg_depends="libcap2"
...
copy_dirs="etc usr/bin usr/lib var"



/var/src/pnuts/lxc.0_6_2$ pnut mkpkgtree

package: lxc
Package config is /etc/lxc
Package depends is libcap2
License is "LGPL2.1"
Package copy directory is etc usr/bin usr/lib var
/var/src/work/lxc.0_6_2-1/pkg
/var/src/work/lxc.0_6_2-1/pkg
.
./etc
./etc/lxc
./etc/lxc/lxc-phys.conf
... 省略
./usr/lib/lxc/lxc-init
./usr/lib/liblxc.so
lxc package tree was made.

パッケージの作成

/var/src/pnuts/lxc.0_6_2$ pnut mklrp

package: lxc
lxc: size - 1096 kB
write mklrp=date to var/lib/lrpkg/lxc.info
etc/
etc/lxc/
etc/lxc/lxc-phys.conf
etc/lxc/lxc-no-netns.conf
... 省略
Verify var/lib/lrpkg/lxc.dep
Verify var/lib/lrpkg/lxc.conf

Check lrpkg file: lxc.0_6_2-1_001-i386.lrp
package directory: lxc
Information:There is not var/lib/lrpkg/lxc.list.
CONFIG LIST:
/etc/lxc
VERSION:
0_6_2-1_001-i386
Warning:There is not var/lib/lrpkg/lxc.help.
Information:There is not var/lib/lrpkg/lxc.mod.
Information:There is not var/lib/lrpkg/lxc.data.
Information:var/lib/lrpkg/lxc.info exists.
Information:var/lib/lrpkg/lxc.dep exists.
libcap2
Information:There is not var/lib/lrpkg/lxc.kdep.
Information:There is not var/lib/lrpkg/lxc.cro.
Information:There is not var/lib/lrpkg/lxc.exclude.
.//lxc.0_6_2-1_001-i386.lrp was made.
/var/src/work/lxc.0_6_2-1/pkg/lxc.0_6_2-1_001-i386.lrp
make /var/src/work/lxc.0_6_2-1/pkg/lxc.lenny for
lxc:00:lxc.0_6_2-1_001-i386.lrp:91a331db165e5d58ee30f7c3f68e5602:libcap2
lxc:10:lxc.0_6_2-1


/var/src/work/lxc.0_6_2-1/pkg にパッケージが作られる。

テストしながら起動スクリプトなど考えることにする

0 件のコメント: