2020年9月5日土曜日

CentOSでActiveRecordが利用できない問題の解決方法

CentOS 7にRails 6環境を構築しようとしたらそもそもSQLite3の利用でハマった.「SQLite 3.8.3 or later is required (found 3.7.17)」というエラーが出てそのまま先に進めない.そこで,緊急の対策として,下記で対処することにする.

  • SQLite3の最新版をユーザのホームディレクトリ以下に構築
  • そのSQLite3を利用して,Rails環境を構築

以下,手順のメモ.

SQLite3最新版の構築

2020年9月4日現在,最新版は3.33.0なので,それをダウンロードして構築する.

# 作業自体は /tmp で行う
$ cd /tmp
$ wget https://www.sqlite.org/2020/sqlite-autoconf-3330000.tar.gz
...(略)
$ tar xzvf sqlite-autoconf-3330000.tar.gz
...(略)
$ cd sqlite-autoconf-3330000

# 自分のホームディレクトリ以下にインストールする
#(ここでは $HOME/sqlite3 にインストールするが,好きな場所でよい)
$ mkdir $HOME/sqlite3
$ ./configure --prefix=$HOME/sqlite3
...(略)
$ make
...(略)
$ make install
...(略)
# 動作確認 $ $HOME/sqlite3/bin/sqlite3 --version
3.33.0 2020-08-14 13:23:32 fca8dc8b578f215a969cd899336378966156154710873e68b3d9ac5881b0ff3f

構築したSQLite3を用いたgemの導入

既にシステムのSQLite3を用いて導入したgemがある場合は,それを削除してやりなおす.bundlerに「新しいSQLite3を使うよ」と指示して,gemを導入する.

以下,その手順.これでうまくいくはず.
# 既に導入済みのgemがある場合はいったん削除
# bundle config path vendor/bundle しているという設定
$ rm -r vendor/bundle

# 新規のSQLite3を使うための設定
#($HOME/sqlite3 にインストールした場合.
# そうでない場合は緑字の部分を適宜変更せよ)
$ bundle config build.sqlite3 "--with-sqlite3-lib=$HOME/sqlite3/lib"
$ bundle install
...(略)


0 件のコメント:

コメントを投稿