Upload
hirohisa-yamaguchi
View
1.902
Download
1
Embed Size (px)
DESCRIPTION
K*BUG 2012年4月研究会 http://www.zusaar.com/event/264001 での発表
Citation preview
FreeBSD ports と暮らす(2)port 作成編Hirohisa Yamaguchi
@umq
12012年4月21日土曜日
発表者について• ネットエージェント株式会社
•http://www.netagent.co.jp
• プロダクト事業部
• 関西 *BSD ユーザ会 (K*BUG)
•http://www.kbug.gr.jp
22012年4月21日土曜日
FreeBSD ports/packages• FreeBSD でアプリケーション導入を支援するフレームワーク
• packages = バイナリパッケージ
• ports = パッケージ作成フレームワーク
• 現在だいたい24,400登録されている
☆NetBSD では port といえばマシンアーキテクチャごとのディストリビューション
32012年4月21日土曜日
Packages collection今回は略
42012年4月21日土曜日
Ports collection
52012年4月21日土曜日
パッケージ作成フレームワーク
62012年4月21日土曜日
パッケージをビルドする
• ソース取得からビルドまでをガイド
• Red Hat Linux の RPM でいう nosrc.rpm
72012年4月21日土曜日
野良ビルドとどこが違うの
• 依存関係をパッケージを使って解決できる
• バージョンアップ時に古いファイルが不用意に残らない
• パッケージにして別マシンに展開できる
82012年4月21日土曜日
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日土曜日
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日土曜日
port を作ってみる
• 支援ツールを入れる
• Porter’s Handbook を読む
• わからなかったら ports/Mk/bsd.*.mk を読む
112012年4月21日土曜日
支援ツール
• ports-mgmt/portaudit
• ports-mgmt/portmaster
• ports-mgmt/porttools
• ports-mgmt/portlint
• ports-mgmt/distilator
• ports-mgmt/portscout
122012年4月21日土曜日
Porter’s Handbook
http://www.freebsd.org/doc/en/books/porters-handbook/
132012年4月21日土曜日
port skeleton
• Makefile
• pkg-descr
• pkg-plist
• distinfo
142012年4月21日土曜日
Makefile
• 基本情報
• ソース取得先
• ビルド関連情報
• ライセンス情報(*)
152012年4月21日土曜日
pkg-descr
• 簡単な説明
• 本家サイトの URI
162012年4月21日土曜日
pkg-plist
• インストールされるファイル一覧
• 生成されるディレクトリ一覧
172012年4月21日土曜日
distinfo
• 取得するソースの情報
• サイズ
• sha256 チェックサム
182012年4月21日土曜日
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日土曜日
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日土曜日
ports ツリーに取込んでもらう(2/4)
• Category: ports
• Class: change-request
• Synopsis には、追加する port 名を
• Description には追加するアプリケーションの説明を
• Fix: の部分に作ったアーカイブを貼る
• e-mail で送る場合、アーカイブを添付する場合は text/* もしくは application/shar にする
212012年4月21日土曜日
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日土曜日
ports ツリーに取込んでもらう(4/4)
• 誰か ports committer が拾ってくれて問題なければ取り込んでくれる
• 問題があれば指摘を受けてなおす
• pr に更新がある場合は、gnats からきたメールの返信として、bug-followup@ に送る
• Subject: ports/xxxxxx: から始まる文を保持すると正しく自動処理される
• freebsd-gnats-submit@ や freebsd-ports-bugs@ に同報する必要はない
• すぐに拾ってもらえなくても気にしない
232012年4月21日土曜日
まとめ
• FreeBSD ports collection の使い方を説明した
• 自分だけで使うアプリケーションも port にすると、楽
242012年4月21日土曜日