Contents
CentOS7でaraをインストールしてSQLiteを使おうとするとDjangoのSQLiteバージョンエラーが発生して使用出来ない時の対処法です。
ara
環境
項目 | バージョン |
---|---|
CentOS | 7.7.1908 |
Python | 3.6.8 |
ara | 1.3.2 |
エラーについて
CentOS7のSQLiteだとara[server]でインストールされるDjangoでサポートされていないため以下のエラーが発生します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
(venv) [root@localhost ~]# ara-manage test [ara] No setting found for SECRET_KEY. Generating a random key... [ara] Creating data & configuration directory: /root/.ara/server [ara] Writing default settings to /root/.ara/server/settings.yaml Traceback (most recent call last): File "/root/venv/bin/ara-manage", line 11, in <module> sys.exit(main()) File "/root/venv/lib64/python3.6/site-packages/ara/server/__main__.py", line 47, in main execute_from_command_line(sys.argv) File "/root/venv/lib64/python3.6/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line utility.execute() File "/root/venv/lib64/python3.6/site-packages/django/core/management/__init__.py", line 357, in execute django.setup() File "/root/venv/lib64/python3.6/site-packages/django/__init__.py", line 24, in setup apps.populate(settings.INSTALLED_APPS) File "/root/venv/lib64/python3.6/site-packages/django/apps/registry.py", line 114, in populate app_config.import_models() File "/root/venv/lib64/python3.6/site-packages/django/apps/config.py", line 211, in import_models self.models_module = import_module(models_module_name) File "/usr/lib64/python3.6/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 994, in _gcd_import File "<frozen importlib._bootstrap>", line 971, in _find_and_load File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 665, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 678, in exec_module File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "/root/venv/lib64/python3.6/site-packages/django/contrib/auth/models.py", line 2, in <module> from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager File "/root/venv/lib64/python3.6/site-packages/django/contrib/auth/base_user.py", line 47, in <module> class AbstractBaseUser(models.Model): File "/root/venv/lib64/python3.6/site-packages/django/db/models/base.py", line 117, in __new__ new_class.add_to_class('_meta', Options(meta, app_label)) File "/root/venv/lib64/python3.6/site-packages/django/db/models/base.py", line 321, in add_to_class value.contribute_to_class(cls, name) File "/root/venv/lib64/python3.6/site-packages/django/db/models/options.py", line 204, in contribute_to_class self.db_table = truncate_name(self.db_table, connection.ops.max_name_length()) File "/root/venv/lib64/python3.6/site-packages/django/db/__init__.py", line 28, in __getattr__ return getattr(connections[DEFAULT_DB_ALIAS], item) File "/root/venv/lib64/python3.6/site-packages/django/db/utils.py", line 201, in __getitem__ backend = load_backend(db['ENGINE']) File "/root/venv/lib64/python3.6/site-packages/django/db/utils.py", line 110, in load_backend return import_module('%s.base' % backend_name) File "/usr/lib64/python3.6/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "/root/venv/lib64/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 66, in <module> check_sqlite_version() File "/root/venv/lib64/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 63, in check_sqlite_version raise ImproperlyConfigured('SQLite 3.8.3 or later is required (found %s).' % Database.sqlite_version) django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17). |
これを解決するにはサポートされているSQLiteをインストールする必要があります。
SQLite3インストール
必要なパッケージのインストール
ビルドに必要なパッケージをインストールします。
1 2 |
(venv) [root@localhost ~]# yum -y install gcc make |
ダウンロード
SQLite3の最新版をダウンロードして解凍後に解凍したディレクトリへ移動します。
1 2 3 4 |
(venv) [root@localhost ~]# curl -L https://www.sqlite.org/2020/sqlite-autoconf-3310100.tar.gz -O (venv) [root@localhost ~]# tar zxvf sqlite-autoconf-3310100.tar.gz (venv) [root@localhost ~]# cd sqlite-autoconf-3310100 |
ビルド&インストール
ビルドしてインストールします。
1 2 3 |
(venv) [root@localhost sqlite-autoconf-3310100]# ./configure --prefix=/usr/local/sqlite3 (venv) [root@localhost sqlite-autoconf-3310100]# make && make install |
ライブラリのパス設定
インストールしたSQLite3のライブラリを使うようにパスを設定します。
1 2 3 4 |
(venv) [root@localhost ~]# vi /etc/ld.so.conf.d/sqlite3.conf /usr/local/sqlite3/lib/ (venv) [root@localhost ~]# ldconfig |
動作確認
エラーが出ないことを確認します。
1 2 3 4 5 6 7 8 9 |
(venv) [root@localhost ~]# ara-manage test System check identified no issues (0 silenced). ---------------------------------------------------------------------- Ran 0 tests in 0.000s OK [ara] Using settings file: /root/.ara/server/settings.yaml |