SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
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


            • Makefile
            • pkg-descr
            • pkg-plist
            • distinfo



2012年4月21日土曜日                             14
Makefile

            • 基本情報

            • ソース取得先

            • ビルド関連情報

            • ライセンス情報(*)


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 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


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

Weitere ähnliche Inhalte

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

Chromium androidビルド
Chromium androidビルドChromium androidビルド
Chromium androidビルドHiroshi Sakate
 
Docker handson
Docker handsonDocker handson
Docker handsonkoda3
 
第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 serverTatsumi Naganuma
 
DOSBox for beginners はじめてのDOSBox
DOSBox for beginners はじめてのDOSBoxDOSBox for beginners はじめてのDOSBox
DOSBox for beginners はじめてのDOSBoxNetwalker 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 LinuxTomoki SHISHIKURA
 
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: MultiarchYouhei SASAKI
 
NetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry PiNetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry Pitokudahiroshi
 
俺のRails開発環境
俺のRails開発環境俺のRails開発環境
俺のRails開発環境joker1007
 
Functions
FunctionsFunctions
Functionsdo_aki
 
OpenDocument interoperability test workshop
OpenDocument interoperability test workshopOpenDocument interoperability test workshop
OpenDocument interoperability test workshopMakoto Takizawa
 
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―Fuminobu Takeyama
 

Ähnlich wie FreeBSD ports と暮らす(2): port 作成編 (20)

Chromium androidビルド
Chromium androidビルドChromium androidビルド
Chromium androidビルド
 
Yesod on Heroku
Yesod on HerokuYesod on Heroku
Yesod on Heroku
 
Docker handson
Docker handsonDocker handson
Docker handson
 
第1回 Open Build Service 道場
第1回 Open Build Service 道場第1回 Open Build Service 道場
第1回 Open Build Service 道場
 
公式サイトとオンラインマニュアル(Wiki)の認証連携 ~ NetCommons meets MediaWiki with OpenID ~
公式サイトとオンラインマニュアル(Wiki)の認証連携 ~ NetCommons meets MediaWiki with OpenID ~公式サイトとオンラインマニュアル(Wiki)の認証連携 ~ NetCommons meets MediaWiki with OpenID ~
公式サイトとオンラインマニュアル(Wiki)の認証連携 ~ NetCommons meets MediaWiki with OpenID ~
 
Unbound/NSD最新情報(OSC 2014 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2014 Tokyo/Spring)Unbound/NSD最新情報(OSC 2014 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2014 Tokyo/Spring)
 
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけねGitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
 
FreeBSDで行こう for small server
FreeBSDで行こう for small serverFreeBSDで行こう for small server
FreeBSDで行こう for small server
 
DOSBox for beginners はじめてのDOSBox
DOSBox for beginners はじめてのDOSBoxDOSBox for beginners はじめてのDOSBox
DOSBox for beginners はじめてのDOSBox
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
 
NVIDIA GPUで作るHeadless X11 Linux
NVIDIA GPUで作るHeadless X11 LinuxNVIDIA GPUで作るHeadless X11 Linux
NVIDIA GPUで作るHeadless X11 Linux
 
Mac Ports
Mac PortsMac Ports
Mac Ports
 
Seeed Studioで基板を作ろう
Seeed Studioで基板を作ろうSeeed Studioで基板を作ろう
Seeed Studioで基板を作ろう
 
Carton について何か話す
Carton について何か話すCarton について何か話す
Carton について何か話す
 
Debian Next Release Goal: Multiarch
Debian Next Release Goal: MultiarchDebian Next Release Goal: Multiarch
Debian Next Release Goal: Multiarch
 
NetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry PiNetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry Pi
 
俺のRails開発環境
俺のRails開発環境俺のRails開発環境
俺のRails開発環境
 
Functions
FunctionsFunctions
Functions
 
OpenDocument interoperability test workshop
OpenDocument interoperability test workshopOpenDocument interoperability test workshop
OpenDocument interoperability test workshop
 
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
Portus でプライベート Docker レジストリを構築してみよう ― 予告編 ―
 

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 • Makefile • pkg-descr • pkg-plist • distinfo 2012年4月21日土曜日 14
  • 15. Makefile • 基本情報 • ソース取得先 • ビルド関連情報 • ライセンス情報(*) 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 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 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