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 てので使ってるらしい。