Homebrewでsqlite3をインストールしたが,シンボリックリンクの作成ができない時の対処法


はじめに

Sinatraでデータベースを扱おうと思い,とりあえず一番初めに見た記事でsqlite3を使用していたので,それを使用することにしました.
Homebrewでインストールしましたが,早速悩む羽目になったので,備忘録として残します.

環境

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14.3
BuildVersion:   18D109
$ brew -v
Homebrew 2.0.5

sqlite3のインストールの前に

Macにはデフォルトでsqlite3が入っているみたいです.
そのバージョンや場所を確認しておきます.

$ sqlite3 --version
3.24.0 2018-06-04 14:10:15 ...

$ which sqlite3
/usr/bin/sqlite3

特に気にならない方はこちらを使用しても良いのですが,デフォルトで入っているsqlite3のアップデート方法がわからなかったので,今回はHomebrewでインストールして使うことにしました.

sqlite3のインストール

早速Homebrewでsqlite3をインストールします.
Homebrew自体のインストール方法については,割愛します.

$ brew install sqlite3
...
sqlite is keg-only, which means it was not symlinked into /usr/local,
because macOS provides an older sqlite3.
...

色々出てきました...
とりあえず気にせずsqlite3の確認をしても上記のデフォルトのバージョンおよび場所が表示されます.

シンボリックリンクの作成

どうやらsqlite3はkeg-onlyで,シンボリックリンクを作成しないらしい...(ここで初めて,Homebrewではシンボリックリンクを作成して,そこを参照していることを知りました.)
ということで,色々調べると,以下のコマンドでシンボリックリンクを作成できるらしいです.

$ brew link sqlite3 --force
Warning: Refusing to link macOS-provided software: sqlite
If you need to have sqlite first in your PATH run:
  echo 'export PATH="/usr/local/opt/sqlite/bin:$PATH"' >> ~/.zshrc

For compilers to find sqlite you may need to set:
  export LDFLAGS="-L/usr/local/opt/sqlite/lib"
  export CPPFLAGS="-I/usr/local/opt/sqlite/include"

For pkg-config to find sqlite you may need to set:
  export PKG_CONFIG_PATH="/usr/local/opt/sqlite/lib/pkgconfig"

とりあえず,作成はできていません泣
試しに/usr/local/binを見ても無いことがわかるかと思います.

自分で作る

ということで,/usr/local/binに自分でsqlite3へのシンボリックリンクを作成しました.

$ cd /usr/local/bin
$ ln -sf ../Cellar/sqlite/3.27.2/bin/sqlite3 ./

3.27.2の部分はインストールしたsqlite3のバージョンに合わせてください.
これでsqlite3のバージョンおよび場所がHomebrewでインストールしたところを指していると思います.

$ sqlite3 --version
3.27.2 2019-02-25 16:06:06 ...

$ which sqlite3
/usr/local/bin/sqlite3

最後に

今回は,Homebrewでsqlite3をインストールしたが,パスを通せないという場合の対処法を書きました.
対処法ということで,リンクが作成できなかった原因はまだ解決していません.似たような症状の方を見かけていないので,気になるところではあります.
本来ならbrew link sqlite3 --forceで通せると思います.

参考サイト

SQLite - [brew]OSXのbrewでインストールしたソフトウェアを常に使えるようにしたい|teratail
[Mac][Ruby]Rails環境構築には、データベースとしてSQLiteをオススメする! | Gabekore Garage