pkgsrc BOF
第1部 Zoularis - pkgsrc for non-NetBSD systems -
* pkgsrc on MacOS X 山野さん
-> 資料あり
compileできるのは300くらい
問題点
sys.mk が間違ってる。
libtool はFinkから持ってくる
dlopen ぱちる
cpp は apple のもの。precompileできる。
-> gccのcppを使うように
デフォルトはアップルの precompiled header に対応した cpp。
しろやまさんの話だと、Next 時代の遺産なので /usr/include に
あるものしか使わないのなら GNU の cpp をデフォルトにしても
OK なはずらしいです。
しろやまさんに聞いた話で、関数のネームスペース問題があるかも。
ライブラリの中にある関数をおきかえるために自前で関数を用意
した場合、ライブラリのほうが使われちゃってうまくいかない場合が
あるとのこと。これも ld? のオプションで制御可能らしいです。
ld, strip のoptionが違う。
HFS+ はcase insensitive
shared libraryのnaming conventionが違う
-> bsd.pkg.mk
agcが1.6に向けてがんばるらしい
* pkgsrc on Solaris 原岡さん
-> 資料あり
利点
pkgsrcを使って管理コストを下げられる
ソースonlyでしか配付できないものをpkgsrcで管理
gensolpkgでsolaris native pkgを作ることができる
-> make packageのときにinstallするのが問題ちゃ問題
問題点
solaris用のパッケージと二重管理になって嫌
zoularisをcompileするのは面倒だけどbinary kitがあるから良い
野望
Solaris8, AIX true64, BSD/OSなどに対応
NSUG CD-ROMに突っ込む
課題
patchなどをOS依存/非依存考慮すべし
* pkgsrc on Linux 坂本
binary kitが古い。RedHatは 5.2, 6.0用。
othersrc/zoularisをcompileするにはNetBSD src treeが必要。
必要なものは限られているが、分離して配付してない。
zoularis自体updateされてないから
lchownとか新し目のsystem callが入ってない。
mtreeが正しく動かない。
BSD make前提patch freewnnとか。
標準で使うMAKEをbmakeにしちゃえばよさげ。
当然ながらLinux固有のpatchがあたってない。
どのrpmが必要かよくわからない。
仕方がないとは言え nativeのpackageを使う方式がpkgsrcにない。
.if exists(/usr/bin/pax)とかをそれぞれのpkgにいれていくしかない。
使ってる人いないぞ。
* MacOS Xのパッケージシステム しろやまさん
-> 資料あり
NeXT由来のパッケージは対応してない
Darwin開発者はOpenPackagesを使おうとしている
-> 開発どうなってるの?
事実上止まっている様子。
他のパッケージ
EasyPackage
開発終了(作者による継続が行われていない)
日本人作者で日本では比較的人気があった?
PineApple
rpmベース
Fink
debianベース
GNU-Darwin
FreeBSD portsベース
Core OS である Darwin を含めた distribution 全体を
GNU-Darwin と呼ぶ。パッケージシステム自体の呼称は無い。
ぷらっとホームで売ってる。
パッケージシステムのインストール時に openssh を
上書きしてくれるので要注意。(GUI から有効/無効の
操作不能になる。)
Mac OS X の UNIX 的アプローチ(Terminal.app 等)はあんまり使われて
ないかも。
ほとんど MacOS9 以前の互換を実現する classic 環境の利用が主。
でもコマンドラインを使う層も現れて来ているらしい。
Darwin1.4.1 を改めてインストールしてて気がついたの
ですが、Darwin 自体は、.deb なパッケージを使っているので、
いまだ dpkg を使っているらしい。
* make packages on Darwin OGATA
-> 資料あり
iBook G3 500MHz
HFS+
MacOS X 10.1.3
基本システムのコマンドを入れ換えてる tarなど
7日10時間
distfiles 4.6GB
317/2700 11% compile可能
* enabling IPv6 in MacOS X OGATA
-> 資料あり
pkgsrc の利用事例としての紹介。
オリジナルは http://www.kame.net/newsletter/20020322/
BIND8 からのライブラリと openssh 作成に pkgsrc を使う。
kernel作り直す
library作り直す
KAMEのlibrary,pkgsrcも使う
第2部 pkgsrc 全般
elf/aout は mac68k が elf になることで全ての arch が elf になることで解決?
pkgsrc 的には elf 前提、Mac OS X は elf じゃない(Mach-O)けど幸せになれる?
64bit, endian は pkgsrc 化するソフト依存で pkgsrc 自身は問題無し。
Linux emul, FreeBSD emul, Win32(PEACE) も特に問題無し。
compat_darwin を用意すればエミュレーション可能?
いけてる点
いちいち ./configure やるよりは簡単。
いけてない点
作るのが手間。手で入れたほうが早い。
ライブラリのごくわずかの upgrade でも依存するパッケージが全部入れ直しに
なる。
make print-PLIST: PLIST 作成コマンド
make install
make print-PLIST > /tmp/PLIST
のようにする。
${FIND} ${PREFIX}/. -newer ${EXTRACT_COOKIE}で検索してPLISTを表示してくれる。
基本的な環境変数の置換も行ってくれるらしい。
mount_union も併用するとより良い。
mount_union /a/pkg /usr/pkg
(cd /usr/pkgsrc/foo/bar; make install)
find /a/pkg -type f -or -type l > /tmp/plist2
(cd /usr/pkgsrc/foo/bar; make deinstall)
umount /usr/pkg
make tarup: tarball 作って update してくれる?
pkg_tarup パッケージ名 でも可。
完全ではなかったはずですが、
インストール済パッケージから binary packageを作ってくれる。
試してないですが、
make replace
てので使ってるらしい。