2011年1月8日土曜日

Homebrew コマンドのまとめ

kodをビルドしようとして、
brew install source-highlight
ができなかったため、急遽brewについて調べてわかったことのまとめです。

インストールできなかった理由は単にbrewが古い状態のままだったから、です。こういうときは

brew update
とすればbrew本体とインストールできるformulaをアップデートできます。
以下、
man brew
の簡単な抜粋自分用。

[option]


-v --verbose

brew -v command [formula]
様々な情報を全部出力する。例えば
brew -v install gnu-time
とすると
Homebrew 0.7.1
==> Build Environment
CC: /usr/bin/cc => /usr/bin/gcc-4.2
CXX: /usr/bin/c++ => /usr/bin/c++-4.2
LD: /usr/bin/cc => /usr/bin/gcc-4.2
CFLAGS: -O3 -march=core2 -msse4 -w -pipe
CXXFLAGS: -O3 -march=core2 -msse4 -w -pipe
MAKEFLAGS: -j4
==> Downloading http://ftp.gnu.org/gnu/time/time-1.7.tar.gz
File already downloaded and cached to /Users/ishizakitetsu/Library/Caches/Homebrew
/usr/bin/tar xf /Users/ishizakitetsu/Library/Caches/Homebrew/gnu-time-1.7.tar.gz
==> ./configure --program-prefix=g --prefix=/usr/local/Cellar/gnu-time/1.7 --mandir=/usr/local/Cellar/gnu-time/1.7/share/man
./configure --program-prefix=g --prefix=/usr/local/Cellar/gnu-time/1.7 --mandir=/usr/local/Cellar/gnu-time/1.7/share/man
creating cache ./config.cache
checking for gcc... /usr/bin/cc
checking whether we are using GNU C... yes
checking how to run the C preprocessor... /usr/bin/cc -E
checking for a BSD compatible install... /usr/bin/install -c
checking whether cross-compiling... no
checking for ANSI C header files... yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking for unistd.h... yes
てな感じでビルド中の出力が全部表示される。普通は
==> Downloading http://ftp.gnu.org/gnu/sed/sed-4.2.1.tar.bz2
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/gnu-sed/4.2.1 --disable-dependency-tracking --progr
==> make install
/usr/local/Cellar/gnu-sed/4.2.1: 8 files, 452K, built in 15 seconds
これだけです。
ただし
brew -v
だけならbrewのバージョンが表示されるだけ。

[command]

install

  • --force   上書きでインストール。
  • --debug  ビルドに失敗したらコンパイル中のフォルダをターミナルで開く。
  • --use-llvm  LLVMを適用してビルド。LLVMについてはこちらで。
  • --ignore-dependencies 全ての依存関係を無視してビルド。依存関係のあるformulaがインストールされていないときは必然的に失敗します。
  • --HEAD master, trunk, unstable, dev、いずれかのブランチを使ってHEAD版をビルド。便利ですな。もちろんftpとかでソースを落としてくるformulaでは無効です。

install --interactive [--git] formula
普通のinstallと違って、ソースをダウンロードし終わったところでターミナルが開く。主に
./configure --help
用とmanには書いてありますな。--gitをつけるとパッチを作るためのgitリポジトリを作ってくれるそうな。

-S, search text|/text/
検索。textで与えられた文字列でformulaを探す。スラッシュ「/」で囲めば正規表現で検索できる。文字列が何もなかったら現在インストールできるformulaを全部出力。

-S --macports|--fink text
-Sに--macportsか--finkつけると、MacPortsかFinkのパッケージ検索ページで文字列を検索。
brew -S --fink gedit
と入力したところ、ブラウザが開いてこのページが表示されました。「ちくしょー、Finkならあるのか?」というとき用ですかね。

update
GitHubからHOmeBrewの新しいバーッジョンを取得します。ソースの「homebrew / Library / Formula」内に現在インストールできるformulaファイルがあるので、当然新しいformulaもインストールできるようになる、と。

list
インストール済みのformula一覧を表示。
list formula
formulaのインストール済みファイルの一覧。
brew list joe
/usr/local/Cellar/joe/3.7/bin/termidx
/usr/local/Cellar/joe/3.7/bin/rjoe
/usr/local/Cellar/joe/3.7/bin/jstar
/usr/local/Cellar/joe/3.7/bin/jpico
/usr/local/Cellar/joe/3.7/bin/joe
/usr/local/Cellar/joe/3.7/bin/jmacs
/usr/local/Cellar/joe/3.7/etc/joe/ (7 files)
/usr/local/Cellar/joe/3.7/share/doc/ (6 files)
/usr/local/Cellar/joe/3.7/share/joe/ (48 files)
/usr/local/Cellar/joe/3.7/share/man/ (2 files)

info formula
brew info joe
joe 3.7
http://joe-editor.sourceforge.net/index.html
/usr/local/Cellar/joe/3.7 (68 files, 1.6M)
http://github.com/mxcl/homebrew/commits/master/Library/Formula/joe.rb

ちなみにjoeはDOSライクなコマンドラインエディタでありまして、zau使ってるときからのお気に入り。

info --github formula
formulaのgithubのHistoryページをブラウザで表示させる。formulaとしてのヒストリなんで、例えばjoeならこのページにとぶ。これをローカルで表示させるのが
brew log -p [formula]

joeだとこうなる。
brew log -p joe
commit c2dd245ee04ca662a6ba2752e2bf4b0c39c1068c
Author: Mike Arthur 
Date:   Thu Nov 12 14:09:19 2009 +0100

    Be nicer to Sourceforge by using their gateway server
    
    Thus we download from the best mirror always.

diff --git a/Library/Formula/joe.rb b/Library/Formula/joe.rb
index 9513d02..36cc102 100644
--- a/Library/Formula/joe.rb
+++ b/Library/Formula/joe.rb
@@ -1,7 +1,7 @@
 require 'formula'
 
 class Joe Formula
-  url 'http://dfn.dl.sourceforge.net/project/joe-editor/JOE%20sources/joe-3.7/joe-3.7.tar.gz'
+  url 'http://downloads.sourceforge.net/project/joe-editor/JOE%20sources/joe-3.7/joe-3.7.tar.gz'
   homepage 'http://joe-editor.sourceforge.net/index.html'
   md5 '66de1b073e869ba12abbfcde3885c577'
 

commit 085802a59b2804390cd6047fcec7e43572fe0198
Author: Julian Stahnke 
Date:   Thu Oct 29 18:54:34 2009 +0100

    JOE formula
    
    JOE (Joe's Own Editor) is a very basic text editor

diff --git a/Library/Formula/joe.rb b/Library/Formula/joe.rb
new file mode 100644
index 0000000..9513d02
--- /dev/null
+++ b/Library/Formula/joe.rb
@@ -0,0 +1,12 @@
+require 'formula'
+
+class Joe Formula
+  url 'http://dfn.dl.sourceforge.net/project/joe-editor/JOE%20sources/joe-3.7/joe-3.7.tar.gz'
+  homepage 'http://joe-editor.sourceforge.net/index.html'
+  md5 '66de1b073e869ba12abbfcde3885c577'
+
+  def install
+    system "./configure", "--prefix=#{prefix}"
+    system "make install"

info URL
URL先のページの名前を返す。何のためにあるんだろ。(^^;)

home
HomeBrewのホームページを表示する。

home formula
formulaのホームページを表示する。

rm, remove, uninstall [--force] formula
formulaのアンインストール。
--forceオプションで、インストールされている全部のバージョンを削除する。便利だな。

create [--cache] URL
URLでダウンロード可能なファイルを落としてきて、自動でformulaの名前とバージョンを決めて、formulaを$EDITORで開く。これは試してないんで実際にどうなるかはわかりません。--cacheをつけるとURLのファイルを落としてきてMD5を作ってくれる、と。URL上にダウンロード可能なファイルをごろん、と置いてあるプロジェクト、ということかな。

edit formula
formulaファイルを$EDITORで開く。

edit
TextMateで全部のformulaを開く、のかな?TextMateをアンインストールしているうちの環境では
Error: No such file or directory - mate
で終了(^^;)。

ln, link formula
全部のインストール済みformulaに、HomeBrewのprefixでSymLinkを貼る。brew install [formula]とやると自動で作られるので、自分でインストールした(野良ビルドとか?)もの用、だそうですがよくわかんない。

unlink formula
linkの反対。一時的にformulaのアプリを使えなくするために使え、ということで。

prune
すでに存在していないSymLinkを取り除く。基本的に使わないでいいそうです。

deps [--1] formula
依存関係を表示する。--1つけると依存関係を1レベルだけ表示する。formulaをビルドするのに必要なformula、そのformulaをビルドするのに必要な・・・という意味でのレベルですね。

uses [--installed] formula
そのformulaに依存しているformulaをリストして表示する。--installedをつけると自分の環境にインストールしてあるformulaだけ表示。

doctor
君のシステムに問題がないか調べよう。ちなみにうちの環境だと
/usr/bin is in your PATH before Homebrew's bin. This means that system-
provided programs will be used before Homebrew-provided ones. This is an
issue if you install, for instance, Python.

Consider editing your .bashrc to put:
  /usr/local/bin
ahead of /usr/bin in your $PATH.

Some brews install binaries to sbin instead of bin, but Homebrew's
sbin was not found in your path.

Consider editing your .bashrc to add:
  /usr/local/sbin
to $PATH.
へいへい、すぐに修正しますだ。

cat formula
formulaファイルの内容を表示します。

log [git-log-options] formula ...
formulaのgit-logを表示します。logに対するオプションはgit-logを参照せよ、と。

fetch [--force] [-v] [--HEAD] formula
formulaのソースをtarボールで取得。--HEADでHEADバージョンを可能なら取得。-vつけるとチェックアウトの出力を見られる。--forceつけるとすでに取得済みのファイルを削除して新しくダウンロードしてくる。

audit [--warn]
formulaがHomeBrewのcodingスタイルに適合しているかチェック。主に新しいformula用。--warnつけると厳しいチェックをさらにする。

options formula
formulaのインストールオプションを表示。

missing
インストールされているformulaの依存関係をチェックしてくれる。

server
sinatraがインストールされていたらgem serverのように振舞い、利用可能なformulaをブラウズできる、とあるんですが私の環境ではrvmのrubyがちゃんと起動されてないようで、確認できませんでした。doctorの言うとおりなのかな。

test formula
formulaによってはtestコードをもっているのでそれを実行出来る。

man
manページの再構築。詳しくはman brew-manを参照する。

--config
HomeBrew関係の環境を表示。bugレポートするならいっしょに送れということです。

--prefix
インストールされているpathを表示。

--prefix formula
formulaのインストールpathを表示。

--cellar
Cellarのpathを表示。内部の実インストールディレクトリと言っていいでしょうか。

--cellar formula
formulaの実インストールpathを表示。

--cache
ダウンロードファイルの保存pathを表示。

--cache formula
formulaのダウンロードファイル、またはフォルダを表示。

--repository
brewの.gitリポジトリのpathを表示。

こんなところでしょうか。けっこう長いもんですね。休日だから気分的に余裕があったのでなんとなく書き始めたけど、なんかすごく時間がかかってしまった。(^^;)

0 件のコメント:

コメントを投稿