はじめに
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が正常に動作した。