let's drink homebrew :-)
TRANSCRIPT
Let’s drink homebrew :-)
#342011/03/03Urawa, Yasuhiro Asaka
自己紹介
About me
Yasuhiro Asaka whoami
‣$ プログラマ‣$ Ruby, Objective-C, Mac OS X Server ‣$ 小松菜 じゃがいも えんどうまめ
‣$ Apple Certified Help Desk Specialist 10.4‣$ Ruby Association Certified Ruby Programmer Silver.‣$ @grauwoelfchen‣$ http://www.grauwoelfchenslabor.com/
議題
Agenda
$ info brew - きっかけ - Homebrew の紹介
$ info brew - きっかけ - Homebrew の紹介
$ diff port brew - MacPorts と違うところ
$ install brew && brew create - Formula の作成と配布 [ Demo ] - Client での Install 例 [ Demo ]
$ info brew - きっかけ - Homebrew の紹介
$ diff port brew - MacPorts と違うところ
Homebrew の紹介
$ info brew
** 特徴 ** Feature
** 特徴 ** Feature
¦ Ruby でかかれている¦ Git によるアップデート¦ github での ホスティング¦ ポリシー & Pub っぽい ¦ インストール済みのものはそれを使う ¦ ruby, python, perl のパーケージ管理システムと同居
** 特徴 ** Feature
¦ Ruby でかかれている¦ Git によるアップデート¦ github での ホスティング¦ ポリシー & Pub っぽい ¦ インストール済みのものはそれを使う ¦ ruby, python, perl のパーケージ管理システムと同居
Welcome to our pub !
** 特徴 ** Feature
¦ Ruby でかかれている¦ Git によるアップデート¦ github での ホスティング¦ ポリシー & Pub っぽい ¦ インストール済みのものはそれを使う ¦ ruby, python, perl のパーケージ管理システムと同居
Welcome to our pub !
** 特徴 ** Feature
¦ Ruby でかかれている¦ Git によるアップデート¦ github での ホスティング¦ ポリシー & Pub っぽい ¦ インストール済みのものはそれを使う ¦ ruby, python, perl のパーケージ管理システムと同居
** 店内用語 ** Terminology
¦ home-brew 自家製の醸造飲料 (Beer!)¦ Formula 製造法¦ Keg 樽、たるビール¦ Cellar 地下貯蔵室、ワインセラー
Welcome to our pub !
** 特徴 ** Feature
¦ Ruby でかかれている¦ Git によるアップデート¦ github での ホスティング¦ ポリシー & Pub っぽい ¦ インストール済みのものはそれを使う ¦ ruby, python, perl のパーケージ管理システムと同居
** 店内用語 ** Terminology
ビールまだ ?
ビールまだ ?まあ、待てって
ビールまだ ?まあ、待てって
** 会員規約 ** Requirements
ビールまだ ?まあ、待てって
¦ Intel CPU (もし Power PC で使いたいなら 他の fork した人の branch を探すといいよ)
¦ OS X Leopard 以上¦ Xcode (X11 を含む ) のインストール¦ Java Developer Update (SVN や Cmake を使う場合)
** 会員規約 ** Requirements
ビールまだ ?まあ、待てって
¦ Intel CPU (もし Power PC で使いたいなら 他の fork した人の branch を探すといいよ)
¦ OS X Leopard 以上¦ Xcode (X11 を含む ) のインストール¦ Java Developer Update (SVN や Cmake を使う場合)
** 会員規約 ** Requirements
どれも homebrew の 依存ではなく、いれるパッケージのため満たしていないと赤字で警告してくれるhomebrew 自体の依存パッケージは OS X にすでにある
** お店見取り図 ** Plan
** お店見取り図 ** Plan
必要となるディレクトリの構造
** お店見取り図 ** Plan
/usr/local/
必要となるディレクトリの構造
** お店見取り図 ** Plan
/usr/local/ ¦- bin/ # => カウンター
必要となるディレクトリの構造
** お店見取り図 ** Plan
/usr/local/ ¦- bin/ # => カウンター ¦- foo -> ../Cellar/foo/0.0.1/foo # => シンボリックリンク
必要となるディレクトリの構造
** お店見取り図 ** Plan
/usr/local/ ¦- bin/ # => カウンター ¦- foo -> ../Cellar/foo/0.0.1/foo # => シンボリックリンク ¦- ...
必要となるディレクトリの構造
** お店見取り図 ** Plan
/usr/local/ ¦- bin/ # => カウンター ¦- foo -> ../Cellar/foo/0.0.1/foo # => シンボリックリンク ¦- ... ¦- share/
必要となるディレクトリの構造
** お店見取り図 ** Plan
/usr/local/ ¦- bin/ # => カウンター ¦- foo -> ../Cellar/foo/0.0.1/foo # => シンボリックリンク ¦- ... ¦- share/ ¦- doc/
必要となるディレクトリの構造
** お店見取り図 ** Plan
/usr/local/ ¦- bin/ # => カウンター ¦- foo -> ../Cellar/foo/0.0.1/foo # => シンボリックリンク ¦- ... ¦- share/ ¦- doc/ ¦- man/
必要となるディレクトリの構造
** お店見取り図 ** Plan
/usr/local/ ¦- bin/ # => カウンター ¦- foo -> ../Cellar/foo/0.0.1/foo # => シンボリックリンク ¦- ... ¦- share/ ¦- doc/ ¦- man/ ¦- ...
必要となるディレクトリの構造
** お店見取り図 ** Plan
/usr/local/ ¦- bin/ # => カウンター ¦- foo -> ../Cellar/foo/0.0.1/foo # => シンボリックリンク ¦- ... ¦- share/ ¦- doc/ ¦- man/ ¦- ... ¦- Cellar/ # => 地下貯蔵室
必要となるディレクトリの構造
** お店見取り図 ** Plan
/usr/local/ ¦- bin/ # => カウンター ¦- foo -> ../Cellar/foo/0.0.1/foo # => シンボリックリンク ¦- ... ¦- share/ ¦- doc/ ¦- man/ ¦- ... ¦- Cellar/ # => 地下貯蔵室 ¦- foo/0.0.1/foo # => ビール樽
必要となるディレクトリの構造
** お店見取り図 ** Plan
/usr/local/ ¦- bin/ # => カウンター ¦- foo -> ../Cellar/foo/0.0.1/foo # => シンボリックリンク ¦- ... ¦- share/ ¦- doc/ ¦- man/ ¦- ... ¦- Cellar/ # => 地下貯蔵室 ¦- foo/0.0.1/foo # => ビール樽 ¦- ..
必要となるディレクトリの構造
** お店見取り図 ** Plan
/usr/local/ ¦- bin/ # => カウンター ¦- foo -> ../Cellar/foo/0.0.1/foo # => シンボリックリンク ¦- ... ¦- share/ ¦- doc/ ¦- man/ ¦- ... ¦- Cellar/ # => 地下貯蔵室 ¦- foo/0.0.1/foo # => ビール樽 ¦- .. ¦- Library/
必要となるディレクトリの構造
** お店見取り図 ** Plan
/usr/local/ ¦- bin/ # => カウンター ¦- foo -> ../Cellar/foo/0.0.1/foo # => シンボリックリンク ¦- ... ¦- share/ ¦- doc/ ¦- man/ ¦- ... ¦- Cellar/ # => 地下貯蔵室 ¦- foo/0.0.1/foo # => ビール樽 ¦- .. ¦- Library/ ¦- Aliases/
必要となるディレクトリの構造
** お店見取り図 ** Plan
/usr/local/ ¦- bin/ # => カウンター ¦- foo -> ../Cellar/foo/0.0.1/foo # => シンボリックリンク ¦- ... ¦- share/ ¦- doc/ ¦- man/ ¦- ... ¦- Cellar/ # => 地下貯蔵室 ¦- foo/0.0.1/foo # => ビール樽 ¦- .. ¦- Library/ ¦- Aliases/ ¦- Homebrew/ # => homebrew の本体
必要となるディレクトリの構造
** お店見取り図 ** Plan
/usr/local/ ¦- bin/ # => カウンター ¦- foo -> ../Cellar/foo/0.0.1/foo # => シンボリックリンク ¦- ... ¦- share/ ¦- doc/ ¦- man/ ¦- ... ¦- Cellar/ # => 地下貯蔵室 ¦- foo/0.0.1/foo # => ビール樽 ¦- .. ¦- Library/ ¦- Aliases/ ¦- Homebrew/ # => homebrew の本体 ¦- Formula/ # => ひみつの製造法
必要となるディレクトリの構造
** お店見取り図 ** Plan
/usr/local/ ¦- bin/ # => カウンター ¦- foo -> ../Cellar/foo/0.0.1/foo # => シンボリックリンク ¦- ... ¦- share/ ¦- doc/ ¦- man/ ¦- ... ¦- Cellar/ # => 地下貯蔵室 ¦- foo/0.0.1/foo # => ビール樽 ¦- .. ¦- Library/ ¦- Aliases/ ¦- Homebrew/ # => homebrew の本体 ¦- Formula/ # => ひみつの製造法 ¦- foo.rb
必要となるディレクトリの構造
** お店見取り図 ** Plan
/usr/local/ ¦- bin/ # => カウンター ¦- foo -> ../Cellar/foo/0.0.1/foo # => シンボリックリンク ¦- ... ¦- share/ ¦- doc/ ¦- man/ ¦- ... ¦- Cellar/ # => 地下貯蔵室 ¦- foo/0.0.1/foo # => ビール樽 ¦- .. ¦- Library/ ¦- Aliases/ ¦- Homebrew/ # => homebrew の本体 ¦- Formula/ # => ひみつの製造法 ¦- foo.rb ¦- ...
必要となるディレクトリの構造
** お店見取り図 ** Plan
/usr/local/ ¦- bin/ # => カウンター ¦- foo -> ../Cellar/foo/0.0.1/foo # => シンボリックリンク ¦- ... ¦- share/ ¦- doc/ ¦- man/ ¦- ... ¦- Cellar/ # => 地下貯蔵室 ¦- foo/0.0.1/foo # => ビール樽 ¦- .. ¦- Library/ ¦- Aliases/ ¦- Homebrew/ # => homebrew の本体 ¦- Formula/ # => ひみつの製造法 ¦- foo.rb ¦- ...
必要となるディレクトリの構造
** きっとこんなかんじ ** like this
** きっとこんなかんじ ** like this
/usr/local/bin
** きっとこんなかんじ ** like this
/usr/local/bin
** きっとこんなかんじ ** like this
/usr/local/bin
** きっとこんなかんじ ** like this
/usr/local/bin
シンボリックリンク !?
** きっとこんなかんじ ** like this
/usr/local/bin
シンボリックリンク !?
** きっとこんなかんじ ** like this
おかわり かい ?
/usr/local/bin
シンボリックリンク !?
** あそびかた ** How to use
** あそびかた ** How to use
** あそびかた ** How to use
お客さんとして ...
** あそびかた ** How to use
お客さんとして ...$ brew update # => メニューください !
** あそびかた ** How to use
お客さんとして ...$ brew update # => メニューください ! $ brew search foo # => あのうまいビールあるかな ?
** あそびかた ** How to use
お客さんとして ...$ brew update # => メニューください ! $ brew search foo # => あのうまいビールあるかな ?$ brew list # => あ、俺これまえに飲んだわ
** あそびかた ** How to use
お客さんとして ...$ brew update # => メニューください ! $ brew search foo # => あのうまいビールあるかな ?$ brew list # => あ、俺これまえに飲んだわ$ brew install foo # => すみません、このビールください
** あそびかた ** How to use
お客さんとして ...$ brew update # => メニューください ! $ brew search foo # => あのうまいビールあるかな ?$ brew list # => あ、俺これまえに飲んだわ$ brew install foo # => すみません、このビールください$ brew uninstall foo # => ...º˜¡÷*ß√^*∑μ昬≤∫¡ºª
** あそびかた ** How to use
お客さんとして ...
口うるさい客として ...
$ brew update # => メニューください ! $ brew search foo # => あのうまいビールあるかな ?$ brew list # => あ、俺これまえに飲んだわ$ brew install foo # => すみません、このビールください$ brew uninstall foo # => ...º˜¡÷*ß√^*∑μ昬≤∫¡ºª
** あそびかた ** How to use
お客さんとして ...
口うるさい客として ...
$ brew update # => メニューください ! $ brew search foo # => あのうまいビールあるかな ?$ brew list # => あ、俺これまえに飲んだわ$ brew install foo # => すみません、このビールください$ brew uninstall foo # => ...º˜¡÷*ß√^*∑μ昬≤∫¡ºª
$ berw create foo # => 俺がうまいビールってもんをおしえてやるよ
** あそびかた ** How to use
お客さんとして ...
口うるさい客として ...
$ brew update # => メニューください ! $ brew search foo # => あのうまいビールあるかな ?$ brew list # => あ、俺これまえに飲んだわ$ brew install foo # => すみません、このビールください$ brew uninstall foo # => ...º˜¡÷*ß√^*∑μ昬≤∫¡ºª
$ berw create foo # => 俺がうまいビールってもんをおしえてやるよ $ brew cat foo # => いいか、みとけよ!
** あそびかた ** How to use
お客さんとして ...
口うるさい客として ...
$ brew update # => メニューください ! $ brew search foo # => あのうまいビールあるかな ?$ brew list # => あ、俺これまえに飲んだわ$ brew install foo # => すみません、このビールください$ brew uninstall foo # => ...º˜¡÷*ß√^*∑μ昬≤∫¡ºª
$ berw create foo # => 俺がうまいビールってもんをおしえてやるよ $ brew cat foo # => いいか、みとけよ!$ brew edit foo # => こうやるんだよ
** あそびかた ** How to use
つづきは man brew で !
[Command List](https://github.com/mxcl/homebrew/wiki/the-brew-command)
お客さんとして ...
口うるさい客として ...
$ brew update # => メニューください ! $ brew search foo # => あのうまいビールあるかな ?$ brew list # => あ、俺これまえに飲んだわ$ brew install foo # => すみません、このビールください$ brew uninstall foo # => ...º˜¡÷*ß√^*∑μ昬≤∫¡ºª
$ berw create foo # => 俺がうまいビールってもんをおしえてやるよ $ brew cat foo # => いいか、みとけよ!$ brew edit foo # => こうやるんだよ
** ご入店方法 ** How to install
** ご入店方法 ** How to install
- お勧め (インタラクティブ) $ ruby -e "$(curl -fsS http://gist.github.com/raw/323731/install_homebrew.rb)"
- 1 liner (どーん) $ curl -LsSf https://github.com/mxcl/homebrew/tarball/master \ > ¦ sudo /usr/bin/tar xvz -C/usr/local --strip 1
- with git $ git clone http://github.com/mxcl/homebrew.git /tmp/homebrew $ mv /tmp/homebrew/.git /usr/local/ $ rm -rf /tmp/homebrew $ cd /usr/local $ git status そのあと git checkout master && git pull
- 管理者の homebrew を clone あとで DEMO
MacPorts と違うところ
$ diff port brew
** よいなと思うところ ** brew++
** よいなと思うところ ** brew++
¦ Pub っぽい、雰囲気 !
** よいなと思うところ ** brew++
¦ Pub っぽい、雰囲気 !¦ 本体、Formula の拡張性 ( Ruby でかかれていていること )
** よいなと思うところ ** brew++
¦ Pub っぽい、雰囲気 !¦ 本体、Formula の拡張性 ( Ruby でかかれていていること )¦ Git によるバージョン管理、github でのホスティング
** よいなと思うところ ** brew++
¦ Pub っぽい、雰囲気 !¦ 本体、Formula の拡張性 ( Ruby でかかれていていること )¦ Git によるバージョン管理、github でのホスティング¦ RubyGems との併用
** よいなと思うところ ** brew++
¦ Pub っぽい、雰囲気 !¦ 本体、Formula の拡張性 ( Ruby でかかれていていること )¦ Git によるバージョン管理、github でのホスティング¦ RubyGems との併用¦ 早い 、軽い (依存しててもすべてをいれない、取得方法)
** 敵わないなと思うところ ** brew--
** よいなと思うところ ** brew++
¦ Pub っぽい、雰囲気 !¦ 本体、Formula の拡張性 ( Ruby でかかれていていること )¦ Git によるバージョン管理、github でのホスティング¦ RubyGems との併用¦ 早い 、軽い (依存しててもすべてをいれない、取得方法)
** 敵わないなと思うところ ** brew--
¦ ユーザ数 と 情報量 (広まっていること)
** よいなと思うところ ** brew++
¦ Pub っぽい、雰囲気 !¦ 本体、Formula の拡張性 ( Ruby でかかれていていること )¦ Git によるバージョン管理、github でのホスティング¦ RubyGems との併用¦ 早い 、軽い (依存しててもすべてをいれない、取得方法)
** 敵わないなと思うところ ** brew--
¦ ユーザ数 と 情報量 (広まっていること)¦ パッケージ数 / 2011.03.04 確認
** よいなと思うところ ** brew++
¦ Pub っぽい、雰囲気 !¦ 本体、Formula の拡張性 ( Ruby でかかれていていること )¦ Git によるバージョン管理、github でのホスティング¦ RubyGems との併用¦ 早い 、軽い (依存しててもすべてをいれない、取得方法)
** 敵わないなと思うところ ** brew--
¦ ユーザ数 と 情報量 (広まっていること)¦ パッケージ数 / 2011.03.04 確認
¦ $ brew search ¦ wc -w または -l # => 1459
** よいなと思うところ ** brew++
¦ Pub っぽい、雰囲気 !¦ 本体、Formula の拡張性 ( Ruby でかかれていていること )¦ Git によるバージョン管理、github でのホスティング¦ RubyGems との併用¦ 早い 、軽い (依存しててもすべてをいれない、取得方法)
** 敵わないなと思うところ ** brew--
¦ ユーザ数 と 情報量 (広まっていること)¦ パッケージ数 / 2011.03.04 確認
¦ $ brew search ¦ wc -w または -l # => 1459 ¦ www.macports.org より release: 1.9.2 # => 7803
** よいなと思うところ ** brew++
¦ Pub っぽい、雰囲気 !¦ 本体、Formula の拡張性 ( Ruby でかかれていていること )¦ Git によるバージョン管理、github でのホスティング¦ RubyGems との併用¦ 早い 、軽い (依存しててもすべてをいれない、取得方法)
Focmula の作成と配布、インストール [ Demo ]
$ install brew && brew create
** 作ってみた ** created packages (scripts)
¦ google [source](https://gist.github.com/852160) ¦ コマンドラインから、Google 検索 -> ブラウザで 開く
¦ $ google moxssg
¦ キーワードは一つ あとは無視、google.co.jp で ja 指定で検索
¦ checkip [source](https://gist.github.com/852366) ¦ 現在の IP Address checker (VPN の接続後とかに確認したかった)
¦ $ checkip と叩くだけ
¦ w3m に依存あり
¦ http://checkip.dyndns.org/ をみて思いついた (まねた)
¦ サーバ側も作ってみた (with Sinatra + Haml + Sass on Rack)
¦ heroku.com へデプロイ http://tamasaburou.heroku.com/
¦ サーバのソース [source](https://github.com/grauwoelfchen/checkip)
¦ moxssg [source](https://gist.github.com/852257) ¦ 毎回 moxssg の各サイト、勉強会のたびに検索して探してた ... (bookmark がうまく使えてない !?)
¦ 引数で開きたいサイトを指定
¦ $ moxssg coolnotify
¦ $ mogssg -h # => Usage: -bash {home¦wiki¦atnd¦coolnotify¦twitter¦mixi}
** 作ってみた ** created packages (scripts)
** DEMO **
** DEMO **
$ play demo -myself -prefix 何かのパッケージと脳内変換して見てください
** DEMO **
$ play demo -myself -prefix 何かのパッケージと脳内変換して見てください
素敵な ☆
** DEMO **
$ play demo -myself -prefix 何かのパッケージと脳内変換して見てください
素敵な ☆
** DEMO **
$ play demo -myself -prefix 何かのパッケージと脳内変換して見てください
素敵な ☆
fish and chips おいしそう ...
**ありがとう ** Thanks
**ありがとう ** Thanks- Thanks
$ say ‘thank you’ # => ありがとうございました
**ありがとう ** Thanks
- Thanks interesting photos.__ photo 1 __ ¦ http://www.flickr.com/photos/ramblingtraveler/2647771990/__ photo 2 __
¦ http://www.killingley.net/blog/
__ photo 3 __ ¦ http://photozou.jp/photo/show/299516/32678451
__ photo 4 __ ¦ http://www.dailymail.co.uk/home/index.html
__ photo 5 __ ¦ http://www.flickr.com/photos/ykjc9/2881954680/
__ photo 6 __ ¦ http://www.flickr.com/photos/27921677@N00/2244224639
- Thanks
$ say ‘thank you’ # => ありがとうございました