FreeBSD ports と暮らす(2): port 作成編

24
FreeBSD ports と暮らす(2) port 作成編 Hirohisa Yamaguchi @umq 1 2012421日土曜日

description

K*BUG 2012年4月研究会 http://www.zusaar.com/event/264001 での発表

Transcript of FreeBSD ports と暮らす(2): port 作成編

Page 1: FreeBSD ports と暮らす(2): port 作成編

FreeBSD ports と暮らす(2)port 作成編Hirohisa Yamaguchi

@umq

12012年4月21日土曜日

Page 2: FreeBSD ports と暮らす(2): port 作成編

発表者について• ネットエージェント株式会社

•http://www.netagent.co.jp

• プロダクト事業部

• 関西 *BSD ユーザ会 (K*BUG)

•http://www.kbug.gr.jp

22012年4月21日土曜日

Page 3: FreeBSD ports と暮らす(2): port 作成編

FreeBSD ports/packages• FreeBSD でアプリケーション導入を支援するフレームワーク

• packages = バイナリパッケージ

• ports = パッケージ作成フレームワーク

• 現在だいたい24,400登録されている

☆NetBSD では port といえばマシンアーキテクチャごとのディストリビューション

32012年4月21日土曜日

Page 4: FreeBSD ports と暮らす(2): port 作成編

Packages collection今回は略

42012年4月21日土曜日

Page 5: FreeBSD ports と暮らす(2): port 作成編

Ports collection

52012年4月21日土曜日

Page 6: FreeBSD ports と暮らす(2): port 作成編

パッケージ作成フレームワーク

62012年4月21日土曜日

Page 7: FreeBSD ports と暮らす(2): port 作成編

パッケージをビルドする

• ソース取得からビルドまでをガイド

• Red Hat Linux の RPM でいう nosrc.rpm

72012年4月21日土曜日

Page 8: FreeBSD ports と暮らす(2): port 作成編

野良ビルドとどこが違うの

• 依存関係をパッケージを使って解決できる

• バージョンアップ時に古いファイルが不用意に残らない

• パッケージにして別マシンに展開できる

82012年4月21日土曜日

Page 9: FreeBSD ports と暮らす(2): port 作成編

ports を使う• portsnap fetch extract

• 特に設定をしていなければ /usr/ports 以下にツリーが展開される

• portsnap fetch update

• 展開したツリーを更新する

• make -C /usr/ports/foo/bar build install

• foo カテゴリの bar port をインストールする

• pkg_version -vL ‘>=’

• 導入済パッケージそれぞれについて、ツリーの方が新しい場合表示する

92012年4月21日土曜日

Page 10: FreeBSD ports と暮らす(2): port 作成編

ports を使ってパッケージ更新

#cd /usr/ports/foo/bar

#make build

#pkg_delete bar-x.x.x

#make install

#make clean

• ports-mgmt/portmaster を使うと1行でできる

102012年4月21日土曜日

Page 11: FreeBSD ports と暮らす(2): port 作成編

port を作ってみる

• 支援ツールを入れる

• Porter’s Handbook を読む

• わからなかったら ports/Mk/bsd.*.mk を読む

112012年4月21日土曜日

Page 12: FreeBSD ports と暮らす(2): port 作成編

支援ツール

• ports-mgmt/portaudit

• ports-mgmt/portmaster

• ports-mgmt/porttools

• ports-mgmt/portlint

• ports-mgmt/distilator

• ports-mgmt/portscout

122012年4月21日土曜日

Page 13: FreeBSD ports と暮らす(2): port 作成編

Porter’s Handbook

http://www.freebsd.org/doc/en/books/porters-handbook/

132012年4月21日土曜日

Page 14: FreeBSD ports と暮らす(2): port 作成編

port skeleton

• Makefile

• pkg-descr

• pkg-plist

• distinfo

142012年4月21日土曜日

Page 15: FreeBSD ports と暮らす(2): port 作成編

Makefile

• 基本情報

• ソース取得先

• ビルド関連情報

• ライセンス情報(*)

152012年4月21日土曜日

Page 16: FreeBSD ports と暮らす(2): port 作成編

pkg-descr

• 簡単な説明

• 本家サイトの URI

162012年4月21日土曜日

Page 17: FreeBSD ports と暮らす(2): port 作成編

pkg-plist

• インストールされるファイル一覧

• 生成されるディレクトリ一覧

172012年4月21日土曜日

Page 18: FreeBSD ports と暮らす(2): port 作成編

distinfo

• 取得するソースの情報

• サイズ

• sha256 チェックサム

182012年4月21日土曜日

Page 19: FreeBSD ports と暮らす(2): port 作成編

port 作成 step-by-step• cd /usr/ports/foo

• port create bar

• cd bar

• vi Makefile pkg-descr

• make fetch -DNO_CHECKSUM

• make makesum

• FreeBSD porter’s Handbook の ``Automated Package List Creation’’http://www.freebsd.org/doc/en/books/porters-handbook/plist-autoplist.html に従って pkg-plist を作る

• portlint -abt

192012年4月21日土曜日

Page 20: FreeBSD ports と暮らす(2): port 作成編

ports ツリーに取込んでもらう(1/4)

• アーカイブを作成

$ cd /usr/ports

$ shar `find foo/bar` > /tmp/foo_bar.shar

• send-pr(1)

• emacs を使っている場合は

# cd /usr/src/gnu/usr.bin/send-pr

# make send-pr.el

202012年4月21日土曜日

Page 21: FreeBSD ports と暮らす(2): port 作成編

ports ツリーに取込んでもらう(2/4)

• Category: ports

• Class: change-request

• Synopsis には、追加する port 名を

• Description には追加するアプリケーションの説明を

• Fix: の部分に作ったアーカイブを貼る

• e-mail で送る場合、アーカイブを添付する場合は text/* もしくは application/shar にする

212012年4月21日土曜日

Page 22: FreeBSD ports と暮らす(2): port 作成編

ports ツリーに取込んでもらう(3/4)

• send-pr が正しく行われたらgnats番号がアサインされる ports/xxxxxx

• freebsd-ports-bugs ML に流れる

• http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/xxxxxx

222012年4月21日土曜日

Page 23: FreeBSD ports と暮らす(2): port 作成編

ports ツリーに取込んでもらう(4/4)

• 誰か ports committer が拾ってくれて問題なければ取り込んでくれる

• 問題があれば指摘を受けてなおす

• pr に更新がある場合は、gnats からきたメールの返信として、bug-followup@ に送る

• Subject: ports/xxxxxx: から始まる文を保持すると正しく自動処理される

• freebsd-gnats-submit@ や freebsd-ports-bugs@ に同報する必要はない

• すぐに拾ってもらえなくても気にしない

232012年4月21日土曜日

Page 24: FreeBSD ports と暮らす(2): port 作成編

まとめ

• FreeBSD ports collection の使い方を説明した

• 自分だけで使うアプリケーションも port にすると、楽

242012年4月21日土曜日