2013年7月27日土曜日

keg-onlyなパッケージはシンボリックリンクが作られない

Homebrew は使いやすいパッケージマネジャーだが、brew install しただけでは使えないものがありはまってしまったのでメモ。
例えば、sqlite3 の場合、brew info で確認すると、

$ brew info sqlite
sqlite: stable 3.7.15.2
http://sqlite.org/

This formula is keg-only.
Mac OS X already provides this software and installing another version in
parallel can cause all kinds of trouble.

OS X already provides (an older) sqlite3.

Depends on: readline
/usr/local/Cellar/sqlite/3.7.15.2 (9 files, 1.9M) *
https://github.com/mxcl/homebrew/commits/master/Library/Formula/sqlite.rb
==> Options
--universal
 Build a universal binary
--with-docs
 Install HTML documentation
--with-fts
 Enable the FTS module
--with-functions
 Enable more math and string functions for SQL queries
--without-readline
 Build without readline support
--without-rtree
 Disable the R*Tree index module


keg-only の場合、せっかく brew install しても、/usr/local/bin 等にシンボリックリンクが作られない。
これを解決するには、brew link する。
$ brew link sqlite --force
Linking /usr/local/Cellar/sqlite/3.7.15.2... 9 symlinks created
これで、シンボリックリンクが作成され、brew install したパッケージが利用できる。

ちなみに、「--force」を付けないと
$brew link sqlite
Warning: sqlite is keg-only and must be linked with --force
Note that doing so can interfere with building software.

と怒られ、作成されない。

[2013/07/29]追記
上記では対応出来ないものもあるみたい。
gitを上記方法でやってもbrewのgitを見てくれない。
$ git --version
git version 1.7.12.4 (Apple Git-37)
$ which git
/usr/bin/git
$ ls -l /usr/bin/git
-rwxr-xr-x  1 root  wheel  2824288  7 14 17:58 /usr/bin/git
ls -l /usr/local/bin/git
lrwxr-xr-x  1 hogehoge  admin  29  7 28 20:01 /usr/local/bin/git -> ../Cellar/git/1.8.3.4/bin/git
/usr/binにあるgitが優先されてる模様。

/etc/pathsをviして、対応。
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
に変更。ターミナル再起動でようやく
$ git --version
git version 1.8.3.4
となった!

もしくは、~/.bash_profile に
export PATH=/usr/local/bin:$PATH
を記載でも良い。


0 件のコメント: