LoginSignup
1
2

More than 1 year has passed since last update.

CentOS 7に新しめのバージョンのSQLite3を導入する

Last updated at Posted at 2022-02-10

はじめに

CentOS 7にはデフォルトでsqlite3が実装されるが(2022/2/10時点でyumでアップグレードできる最新バージョンは3.7.17-8)、Django2以降ではバージョン3.9以降が必要になるなど、CentOS 7標準実装のsqlite3では対応できない場合がある。
標準実装のバージョンを削除して新しいバージョンを導入できれば簡単だが、yumはじめCentOS 7内で使用されている機能でsqlite3を利用しているものがいくつかあるため、yum erase sqlite でアンインストールすることができない。
pgdg-commonリポジトリで新しめのsqlite3が提供されているので、これを利用することにする。

インストールと設定手順

# pgdg-commonリポジトリの有効化
# yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# リポジトリから利用可能なsqlite関連パッケージの確認
# yum list | grep '^sqlite' | sort
  :
sqlite33-analyzer.x86_64                   3.30.1-1.rhel7         pgdg-common
sqlite33-debuginfo.x86_64                  3.30.1-6.rhel7         pgdg-common
sqlite33-devel.x86_64                      3.30.1-6.rhel7         pgdg-common
sqlite33-doc.noarch                        3.30.1-6.rhel7         pgdg-common
sqlite33-lemon.x86_64                      3.30.1-6.rhel7         pgdg-common
sqlite33-libs.x86_64                       3.30.1-6.rhel7         pgdg-common
sqlite33-tcl.x86_64                        3.30.1-1.rhel7         pgdg-common
  :

# SQLite 3.30のインストール
# P=sqlite33; yum -y install $P $P-devel $P-lemon $P-libs

# この状態ではSQLite3が正常に起動しないことの確認
# sqlite3
SQLite header and source version mismatch
2019-10-10 20:19:45 18db032d058f1436ce3dea84081f4ee5a0f2259ad97301d43c426bc7f3dfalt1
2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668

# インストールしたSQLite 3.30の場所の確認
# find / | grep 'sqlite3$'
  :
/usr/sqlite330/bin/sqlite3
  :

# CentOS 7のalternative機能を使用して、/usr/local/bin/sqlite3 を登録し、インストールしたバージョンを使用するように設定
# alternative --install /usr/local/bin/sqlite3 sqlite3 /usr/sqlite330/bin/sqlite3 1

# sqlite3で実行できるバージョンの確認
# sqlite3 --version
3.30.1 2019-10-10 20:19:45 18db032d058f1436ce3dea84081f4ee5a0f2259ad97301d43c426bc7f3dfalt1

Django 3.2をインストール&プロジェクト作成し、./manage.py コマンド実行時にSQLite3関連エラーが出ないことを確認した。

【追記】
CentOS Software collections(SCL)リポジトリからインストールしたPython3.8(rh-python38)を使用してDjango3.2を実行したときにはsqlite3エラーが出ることを確認。
epelリポジトリからインストールしたPython3.6の場合はDjango3.2が正常に動作した。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2