Ubuntu 16.04(WSL環境)にsqlite3.26をソースコードからインストールする手順


はじめに

SQLite3最新版をUbuntu 16.04にインストールする方法です。UbuntuはWindwos Subsystem for Linux環境です。最近サポートされたウィンドウ関数を試すには、色々パッケージを探してくるよりも、ソースコードからインストールしたほうが早そう。

インストール手順

Step 1. SQLite公式ウェブサイトからソースコードを入手する。

以下のURLでダウンロードページに行けます。
https://www.sqlite.org/download.html
ここから、sqlite-autoconfの最新版をダウンロードします。ダウンロード先(ローカルPCのディレクトリ)はどこでも良いです。執筆時は、3.26.0が最新であり、例えばホームディレクトリにて、以下のコマンでダウンロードします。続いて、解凍します。

~$ wget https://www.sqlite.org/2018/sqlite-autoconf-3260000.tar.gz
~$ tar xvzf sqlite-autoconf-3260000.tar.gz

Step 2. 足りないライブラリをインストールする。

開発環境が入っていなければ、以下のコマンドでインストールします1。それなりに時間がかかります。

~$ sudo apt-get install build-essential

コンパイルに必要なライブラリをインストールします。私の環境で不足していたのは以下の3種類でした。
1. zlib
2. edit
対応するパッケージをインストールする。

~$ sudo apt-get install zlib1g-dev libedit-dev

Step 3. configureでMakefileを作成する。

インストール先は、/opt/sqlite/sqlite3.26.0/としました。すでに、標準パッケーとじとしてsqlite3がインストールされており、これを壊さないためです。以下のコマンドでMakefileを作成します。なお、環境ローカルのソフトウェアをインストールする先としては、/opt以下にするのが現在のお作法のようです2

~$ cd sqlite-autoconf-3260000
~/sqlite-autoconf-3260000$ ./configure --prefix=/opt/sqlite/sqlite3.26.0/

また、configureの実行結果を見ると、足りないライブラリが分かります。例えば、私の環境では当初、以下のようなメッセージが出ていました。そのため、Step 2にさかのぼって、ライブラリをインストールしました。Step 2とStep 3を繰り返して納得のいくMakefile(configure結果)にします。

checking editline/readline.h usability... no
checking zlib.h usability... no

Step 4. Make & Make install

ここまでくれば、あとは実行ファイルを作って、インストールするだけです。なお、Makeの引数に-jをつければ、並列にコンパイラが走ります。

~/sqlite-autoconf-3260000$ make -j
~/sqlite-autoconf-3260000$ sudo make install

なお、インストール先は、Step 2で指定したとおり、/opt以下となります。インストール時に、pathがどうとか色々メッセージが出ますが、あまり有益な情報はなかったです。

このままではsqlite3にパスが通っていないので、実行時にはフルパスで指定する必要があります。ローカル環境かつ管理者権限もあるため、/usr/local/binにシンボリックリンクを張ってしまいました。わざわざ/opt以下にした意味があるのか、一貫性がないような気もしますが。

~$ cd /usr/local/bin
/usr/local/bin$ sudo ln -s /opt/sqlite/sqlite3.26.0/bin/sqlite3 sqlite3.26

Step 5. 確認

念の為、インストールしたものが動いているのか確認します。うまく実行できていれば、以下のようにダウンロードしたバージョンが表示されるはずです。

$ sqlite3.26 --verion
3.26.0 2018-12-01 12:34:55 bf8c1b2b7a5960c282e543b9c293686dccff272512d08865f4600fb58238b4f9

おわりに

Qiitaに投稿してみましたが、振り返ると特筆すべきところはなかったです。個人的に、/opt以下の扱いを知れたのが良かったぐらいでしょうか。

これでようやく、本来の目的だったウィンドウ関数が試せる3


  1. sqliteの最新版を試そうなんてユーザーは開発環境なんて入っていて当たり前という気もしますが。 

  2. 以前は/usr/localだったのですが、個別パッケージ名でディレクトリを切ってはいけないようです。そのため、/optを活用するのだとか。 http://hateda.hatenadiary.jp/entry/2014/02/02/191807 

  3. apt-getでインストールできるかなと考えていたところ、そもそもサポートが最近だったらしく、全くお呼びではなかった。3.26.0に対応したUbuntuパッケージもあるようですが、disco向け(Ubuntu 19.04向け)であり、かえって依存関係を破壊しそうなため、そっと検索結果を閉じました。