Homebrew brew linkしてもリンクしたopensslを使ってくれない。

環境:Mac OS X(10.9.5 Mavericks)

結論から言うと、パスの優先順位の問題で、パスを直したらうまくいった。

軽く混乱気味なので、先に用語を整理(homebrewの勉強不足ですね。)

下記の記事でちょっと用語を整理
[homebrewとは何者か。仕組みについて調べてみた](http://qiita.com/omega999/items/6f65217b81ad3fffe7e6)
[Homebrewまとめ](http://qiita.com/vintersnow/items/fca0be79cdc28bd2f5e4)
[What does “brew link” do?](http://stackoverflow.com/questions/33268389/what-does-brew-link-do)
[homebrew のサブコマンド一覧1 (a-i)](http://kiririmode.hatenablog.jp/entry/20141210/p1)

keg-only： Cellar だけにインストールされ、/usr/local にはリンクされていない formula のこと。これは、ほとんどのツールが当該の formula を見つけることができないことを意味する。(?) brew link を使えば、リンクすることはできる。

celler： インストール先。brew install でインストールしたパッケージがある場所。

formulate： パッケージのこと

brew link： シンボリックリンクを貼る。リンク先はbrew --prefixで表示されるパスのbinディレクトリに配置される。 

以下本題。
下記の記事を参考にopensslをアップデートした。

しかし、brew link openssl --forceでシンボリックリンクを作成しても、古いバージョンのopensslを参照してしまう問題が発生した。

[Mac OS X の openssl を最新の状態にする](http://qiita.com/Chrowa3/items/b04e772be959cdda9ac3)

いろいろコマンドを実行して状況確認する。(opensslは更新済み。シンボリックリンクを作るところから)

opensslの新しいバージョンは正しくインストールされている。

```
brew list openssl
/usr/local/Cellar/openssl/1.0.2g/bin/c_rehash
/usr/local/Cellar/openssl/1.0.2g/bin/openssl
/usr/local/Cellar/openssl/1.0.2g/include/openssl/ (75 files)
/usr/local/Cellar/openssl/1.0.2g/lib/libcrypto.1.0.0.dylib
/usr/local/Cellar/openssl/1.0.2g/lib/libssl.1.0.0.dylib
/usr/local/Cellar/openssl/1.0.2g/lib/engines/ (12 files)
/usr/local/Cellar/openssl/1.0.2g/lib/pkgconfig/ (3 files)
/usr/local/Cellar/openssl/1.0.2g/lib/ (4 other files)
/usr/local/Cellar/openssl/1.0.2g/share/man/ (1575 files)
```

リンクをすると成功する。

```
$ brew link openssl --force
Linking /usr/local/Cellar/openssl/1.0.2g... 1588 symlinks created
```
リンクは成功しているが、バージョンは古いまま(最新は1.0.2g)

```
$ openssl version
OpenSSL 1.0.2d 9 Jul 2015
```
opensslとbrew linkのリンク先を確認すると、別のパスをさしている事がわかった。
パスの優先順位の問題じゃないかと疑う。

```
$ which openssl
/opt/local/bin/openssl
```

```
brew linkでのリンク先
$ brew --prefix
/usr/local
```

.bash_profileを見てみると、既存の/opt/local/binの方が優先順が先になっている。MacPortsが自動でPATHを追加したようだ。

```
export PATH="/opt/local/bin:/opt/local/sbin:$PATH"
````

なので、こいつをパスの最後につけるようにしてみる。

```
export PATH=$PATH:"/opt/local/bin:/opt/local/sbin"
````

パスの設定を変更したところで確認すると、Homebrewでインストールしたopensslを使ってくれてる模様。

```
$ which openssl
/usr/bin/openssl
```

```
$ openssl version
OpenSSL 1.0.2g  1 Mar 2016
```

これでopensslの更新完了。
単純な問題だった。もうちょっとパスの優先順位に気をつけていれば良かった。

※追記1
先日El Capitanにアップグレードしたところ、またパスが変わっていた。
どうやら、etc/pathsの設定を読み込むようになっていたらしい。こちらの記事を読んで、.zshenvに”setopt no_global_rcs”を追加することで、パスの問題を解決できた。
[.zshenv で PATH を管理したら罠にハマった](http://karur4n.hatenablog.com/entry/2016/01/18/100000)

※追記2
home brewでopensslをダウンロードしてbrew linkでlinkする方法は2016年8月くらいから使用できなくなった模様。
下記コマンドを実行すると、以下のようなメッセージが出力される

```
% brew link openssl --force
Warning: Refusing to link: openssl
Linking keg-only openssl means you may end up linking against the insecure,
deprecated system OpenSSL while using the headers from Homebrew's openssl.
Instead, pass the full include/library paths to your compiler e.g.:
  -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib
```

下の記事によると、opensslのパスを直接通せばいいらしい。
[brew link openssl --forceができない問題](http://qiita.com/dasisyouyu/items/c9621c29b0fe79d2b7c4)