狠狠撸

狠狠撸Share a Scribd company logo
FreeBSD ports と暮らす(2)
                     port 作成編
                     Hirohisa Yamaguchi
                           @umq




2012年4月21日土曜日                             1
発表者について
                ? ネットエージェント株式会社
                 ?http://
                  www.netagent.co.jp

                 ? プロダクト事業部

                ? 関西 *BSD ユーザ会 (K*BUG)
                 ?http://www.kbug.gr.jp

2012年4月21日土曜日                             2
FreeBSD ports/packages
            ? FreeBSD でアプリケーション導入を支援するフレー
                ムワーク

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

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

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

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


2012年4月21日土曜日                                3
今回は略
                Packages collection




2012年4月21日土曜日                         4
Ports collection




2012年4月21日土曜日                      5
パッケージ作成
                フレームワーク



2012年4月21日土曜日             6
パッケージをビルドする



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

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




2012年4月21日土曜日                                     7
野良ビルドとどこが违うの


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

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

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


2012年4月21日土曜日                        8
ports を使う
            ?   portsnap fetch extract

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

            ?   portsnap fetch update

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

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

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

            ?   pkg_version -vL ‘>=’

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



2012年4月21日土曜日                                               9
ports を使ってパッケージ更新

            # cd /usr/ports/foo/bar

            # make build

            # pkg_delete bar-x.x.x

            # make install

            # make clean

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


2012年4月21日土曜日                                    10
port を作ってみる


            ? 支援ツールを入れる

            ? Porter’s Handbook を読む

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



2012年4月21日土曜日                                  11
支援ツール

            ? ports-mgmt/portaudit
            ? ports-mgmt/portmaster
            ? ports-mgmt/porttools
            ? ports-mgmt/portlint
            ? ports-mgmt/distilator
            ? ports-mgmt/portscout

2012年4月21日土曜日                         12
Porter’s Handbook




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




2012年4月21日土曜日                                                 13
port skeleton


            ? Make?le
            ? pkg-descr
            ? pkg-plist
            ? distinfo



2012年4月21日土曜日                             14
Make?le

            ? 基本情報

            ? ソース取得先

            ? ビルド関連情報

            ? ライセンス情報(*)


2012年4月21日土曜日                    15
pkg-descr



            ? 簡単な説明

            ? 本家サイトの URI




2012年4月21日土曜日                     16
pkg-plist



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

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




2012年4月21日土曜日                   17
distinfo


            ? 取得するソースの情報

                ? サイズ

                ? sha256 チェックサム



2012年4月21日土曜日                       18
port 作成 step-by-step
            ?   cd /usr/ports/foo

            ?   port create bar

            ?   cd bar

            ?   vi Make?le 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


2012年4月21日土曜日                                                                     19
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


2012年4月21日土曜日                                               20
ports ツリーに取込んでもらう(2/4)

            ? Category: ports
            ? Class: change-request
            ? Synopsis には、追加する port 名を

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

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

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


2012年4月21日土曜日                                      21
ports ツリーに取込んでもらう(3/4)


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

            ? freebsd-ports-bugs ML に流れる

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



2012年4月21日土曜日                                            22
ports ツリーに取込んでもらう(4/4)

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

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

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

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

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

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


2012年4月21日土曜日                                                                 23
まとめ


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

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




2012年4月21日土曜日                                      24

More Related Content

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

Chromium androidビルド
Chromium androidビルドChromium androidビルド
Chromium androidビルド
Hiroshi Sakate
?
Yesod on Heroku
Yesod on HerokuYesod on Heroku
Yesod on Heroku
Takahiro Himura
?
Docker handson
Docker handsonDocker handson
Docker handson
koda3
?
第1回 Open Build Service 道場
第1回 Open Build Service 道場第1回 Open Build Service 道場
第1回 Open Build Service 道場
Fuminobu Takeyama
?
公式サイトとオンラインマニュアル(Wiki)の認証連携 ~ NetCommons meets MediaWiki with OpenID ~
公式サイトとオンラインマニュアル(Wiki)の認証連携 ~ NetCommons meets MediaWiki with OpenID ~公式サイトとオンラインマニュアル(Wiki)の認証連携 ~ NetCommons meets MediaWiki with OpenID ~
公式サイトとオンラインマニュアル(Wiki)の認証連携 ~ NetCommons meets MediaWiki with OpenID ~
Toshiya TSURU
?
Unbound/NSD最新情報(OSC 2014 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2014 Tokyo/Spring)Unbound/NSD最新情報(OSC 2014 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2014 Tokyo/Spring)
Takashi Takizawa
?
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけねGitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
Naoto TAKAHASHI
?
FreeBSDで行こう for small server
FreeBSDで行こう for small serverFreeBSDで行こう for small server
FreeBSDで行こう for small server
Tatsumi Naganuma
?
DOSBox for beginners はじめてのDOSBox
DOSBox for beginners はじめてのDOSBoxDOSBox for beginners はじめてのDOSBox
DOSBox for beginners はじめてのDOSBox
Netwalker lab kapper
?
ロボットシステムのつくりかた ?Robot Operating Systemというアプローチ?
ロボットシステムのつくりかた ?Robot Operating Systemというアプローチ?ロボットシステムのつくりかた ?Robot Operating Systemというアプローチ?
ロボットシステムのつくりかた ?Robot Operating Systemというアプローチ?
Hideki Takase
?
NVIDIA GPUで作るHeadless X11 Linux
NVIDIA GPUで作るHeadless X11 LinuxNVIDIA GPUで作るHeadless X11 Linux
NVIDIA GPUで作るHeadless X11 Linux
Tomoki SHISHIKURA
?
Mac Ports
Mac PortsMac Ports
Mac Ports
Naoya Nakazawa
?
Seeed Studioで基板を作ろう
Seeed Studioで基板を作ろうSeeed Studioで基板を作ろう
Seeed Studioで基板を作ろう
Hirohide Shimoguchi
?
Carton について何か話す
Carton について何か話すCarton について何か話す
Carton について何か話す
Masaki Nakagawa
?
Debian Next Release Goal: Multiarch
Debian Next Release Goal: MultiarchDebian Next Release Goal: Multiarch
Debian Next Release Goal: Multiarch
Youhei SASAKI
?
NetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry PiNetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry Pi
tokudahiroshi
?
俺の搁补颈濒蝉开発环境
俺の搁补颈濒蝉开発环境俺の搁补颈濒蝉开発环境
俺の搁补颈濒蝉开発环境
joker1007
?
Functions
FunctionsFunctions
Functions
do_aki
?
OpenDocument interoperability test workshop
OpenDocument interoperability test workshopOpenDocument interoperability test workshop
OpenDocument interoperability test workshop
Makoto Takizawa
?
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
Fuminobu Takeyama
?
Chromium androidビルド
Chromium androidビルドChromium androidビルド
Chromium androidビルド
Hiroshi Sakate
?
Docker handson
Docker handsonDocker handson
Docker handson
koda3
?
第1回 Open Build Service 道場
第1回 Open Build Service 道場第1回 Open Build Service 道場
第1回 Open Build Service 道場
Fuminobu Takeyama
?
公式サイトとオンラインマニュアル(Wiki)の認証連携 ~ NetCommons meets MediaWiki with OpenID ~
公式サイトとオンラインマニュアル(Wiki)の認証連携 ~ NetCommons meets MediaWiki with OpenID ~公式サイトとオンラインマニュアル(Wiki)の認証連携 ~ NetCommons meets MediaWiki with OpenID ~
公式サイトとオンラインマニュアル(Wiki)の認証連携 ~ NetCommons meets MediaWiki with OpenID ~
Toshiya TSURU
?
Unbound/NSD最新情報(OSC 2014 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2014 Tokyo/Spring)Unbound/NSD最新情報(OSC 2014 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2014 Tokyo/Spring)
Takashi Takizawa
?
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけねGitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
Naoto TAKAHASHI
?
FreeBSDで行こう for small server
FreeBSDで行こう for small serverFreeBSDで行こう for small server
FreeBSDで行こう for small server
Tatsumi Naganuma
?
DOSBox for beginners はじめてのDOSBox
DOSBox for beginners はじめてのDOSBoxDOSBox for beginners はじめてのDOSBox
DOSBox for beginners はじめてのDOSBox
Netwalker lab kapper
?
ロボットシステムのつくりかた ?Robot Operating Systemというアプローチ?
ロボットシステムのつくりかた ?Robot Operating Systemというアプローチ?ロボットシステムのつくりかた ?Robot Operating Systemというアプローチ?
ロボットシステムのつくりかた ?Robot Operating Systemというアプローチ?
Hideki Takase
?
NVIDIA GPUで作るHeadless X11 Linux
NVIDIA GPUで作るHeadless X11 LinuxNVIDIA GPUで作るHeadless X11 Linux
NVIDIA GPUで作るHeadless X11 Linux
Tomoki SHISHIKURA
?
Carton について何か話す
Carton について何か話すCarton について何か話す
Carton について何か話す
Masaki Nakagawa
?
Debian Next Release Goal: Multiarch
Debian Next Release Goal: MultiarchDebian Next Release Goal: Multiarch
Debian Next Release Goal: Multiarch
Youhei SASAKI
?
NetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry PiNetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry Pi
tokudahiroshi
?
俺の搁补颈濒蝉开発环境
俺の搁补颈濒蝉开発环境俺の搁补颈濒蝉开発环境
俺の搁补颈濒蝉开発环境
joker1007
?
Functions
FunctionsFunctions
Functions
do_aki
?
OpenDocument interoperability test workshop
OpenDocument interoperability test workshopOpenDocument interoperability test workshop
OpenDocument interoperability test workshop
Makoto Takizawa
?
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
Fuminobu Takeyama
?

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

  • 1. FreeBSD ports と暮らす(2) port 作成編 Hirohisa Yamaguchi @umq 2012年4月21日土曜日 1
  • 2. 発表者について ? ネットエージェント株式会社 ?http:// www.netagent.co.jp ? プロダクト事業部 ? 関西 *BSD ユーザ会 (K*BUG) ?http://www.kbug.gr.jp 2012年4月21日土曜日 2
  • 3. FreeBSD ports/packages ? FreeBSD でアプリケーション導入を支援するフレー ムワーク ? packages = バイナリパッケージ ? ports = パッケージ作成フレームワーク ? 現在だいたい24,400登録されている ☆NetBSD では port といえばマシンアーキテクチャ ごとのディストリビューション 2012年4月21日土曜日 3
  • 4. 今回は略 Packages collection 2012年4月21日土曜日 4
  • 6. パッケージ作成 フレームワーク 2012年4月21日土曜日 6
  • 7. パッケージをビルドする ? ソース取得からビルドまでをガイド ? Red Hat Linux の RPM でいう nosrc.rpm 2012年4月21日土曜日 7
  • 8. 野良ビルドとどこが违うの ? 依存関係をパッケージを使って解決できる ? バージョンアップ時に古いファイルが不用意 に残らない ? パッケージにして別マシンに展開できる 2012年4月21日土曜日 8
  • 9. ports を使う ? portsnap fetch extract ? 特に設定をしていなければ /usr/ports 以下にツリーが展開される ? portsnap fetch update ? 展開したツリーを更新する ? make -C /usr/ports/foo/bar build install ? foo カテゴリの bar port をインストールする ? pkg_version -vL ‘>=’ ? 導入済パッケージそれぞれについて、ツリーの方が新しい場合 表示する 2012年4月21日土曜日 9
  • 10. ports を使ってパッケージ更新 # cd /usr/ports/foo/bar # make build # pkg_delete bar-x.x.x # make install # make clean ? ports-mgmt/portmaster を使うと1行でできる 2012年4月21日土曜日 10
  • 11. port を作ってみる ? 支援ツールを入れる ? Porter’s Handbook を読む ? わからなかったら ports/Mk/bsd.*.mk を読む 2012年4月21日土曜日 11
  • 12. 支援ツール ? ports-mgmt/portaudit ? ports-mgmt/portmaster ? ports-mgmt/porttools ? ports-mgmt/portlint ? ports-mgmt/distilator ? ports-mgmt/portscout 2012年4月21日土曜日 12
  • 13. Porter’s Handbook http://www.freebsd.org/doc/en/books/porters-handbook/ 2012年4月21日土曜日 13
  • 14. port skeleton ? Make?le ? pkg-descr ? pkg-plist ? distinfo 2012年4月21日土曜日 14
  • 15. Make?le ? 基本情報 ? ソース取得先 ? ビルド関連情報 ? ライセンス情報(*) 2012年4月21日土曜日 15
  • 16. pkg-descr ? 簡単な説明 ? 本家サイトの URI 2012年4月21日土曜日 16
  • 17. pkg-plist ? インストールされるファイル一覧 ? 生成されるディレクトリ一覧 2012年4月21日土曜日 17
  • 18. distinfo ? 取得するソースの情報 ? サイズ ? sha256 チェックサム 2012年4月21日土曜日 18
  • 19. port 作成 step-by-step ? cd /usr/ports/foo ? port create bar ? cd bar ? vi Make?le 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 2012年4月21日土曜日 19
  • 20. 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 2012年4月21日土曜日 20
  • 21. ports ツリーに取込んでもらう(2/4) ? Category: ports ? Class: change-request ? Synopsis には、追加する port 名を ? Description には追加するアプリケーションの説明を ? Fix: の部分に作ったアーカイブを貼る ? e-mail で送る場合、アーカイブを添付する場合は text/* もしくは application/shar にする 2012年4月21日土曜日 21
  • 22. ports ツリーに取込んでもらう(3/4) ? send-pr が正しく行われたらgnats番号がアサ インされる ports/xxxxxx ? freebsd-ports-bugs ML に流れる ? http://www.freebsd.org/cgi/query-pr.cgi? pr=ports/xxxxxx 2012年4月21日土曜日 22
  • 23. ports ツリーに取込んでもらう(4/4) ? 誰か ports committer が拾ってくれて問題なければ取り込んでくれる ? 問題があれば指摘を受けてなおす ? pr に更新がある場合は、gnats からきたメールの返信として、 bug-followup@ に送る ? Subject: ports/xxxxxx: から始まる文を保持すると正しく自動 処理される ? freebsd-gnats-submit@ や freebsd-ports-bugs@ に同報する必要 はない ? すぐに拾ってもらえなくても気にしない 2012年4月21日土曜日 23
  • 24. まとめ ? FreeBSD ports collection の使い方を説明した ? 自分だけで使うアプリケーションも port に すると、楽 2012年4月21日土曜日 24