読者です 読者をやめる 読者になる 読者になる

【Homebrew】インストールしたパッケージのシンボリックリンクが作成されない場合

Homebrew
スポンサーリンク

Homebrew を使って openssl をインストールしていたのですが、なぜかMacにプリインストールされている openssl をずっと参照していました。確認してみると/usr/local/bin/に openssl のシンボリックリンクが作成されていません。普通にシンボリックリンク作れば解決なんですが原因がわからないのが嫌だったので調べた結果をまとめておきます。

現在のバージョンを確認します。

$ openssl version
OpenSSL 0.9.8za 5 Jun 2014
$ which openssl
/usr/bin/openssl

Homebrewでインストールします。

$ brew install openssl

しかし、バージョンが変わりません。参照先も /usr/bin/ のままですね。インストールは正常にされています。

$ openssl version
OpenSSL 0.9.8za 5 Jun 2014
$ which openssl
/usr/bin/openssl
$ ls -l /usr/local/Cellar/openssl
total 0
drwxr-xr-x  11 xxxxxx  admin  374 11 29 16:48 1.0.1j

シンボリックリンクを確認すると作成されていません。

$ ls -l /usr/local/bin/openssl
ls: /usr/local/bin/openssl: No such file or directory

調べた結果どうやらこれが原因のようです。インストールした時のログメッセージにありました。

This formula is keg-only, which means it was not symlinked into /usr/local.

どうやらこのようにシンボリックリンクが作成されないパッケージもあるみたいで、対処するコマンドも用意されてました。link を使ってシンボリックリンクを作成します。openssl は --force オプションを付けないとエラーになります。

$ brew link openssl --force
Linking /usr/local/Cellar/openssl/1.0.1j... 1146 symlinks created
$ ll /usr/local/bin/openssl
lrwxr-xr-x  1 xxxxxx  admin  36 11 29 23:50 /usr/local/bin/openssl -> ../Cellar/openssl/1.0.1j/bin/openssl

やっとバージョンが変わりました。

$ openssl version
OpenSSL 1.0.1j 15 Oct 2014

これからHomebrewでインストールしたパッケージはちゃんと向き先が変わってるか確認しようと思いました。