Для проверки версии Python введите
python3 --version
Для проверки версии встроенной библиотеки sqlite
python3 -c "import sqlite3; print(sqlite3.sqlite_version)"
Если у вас на экране версия выше 3.26, то большая часть проблем уже решена и переходим к настройке файла .bashrc. Иначе берём бубен, запасаемся терпением, разводим кострище и начинаем песнопляски.
Смочим ножки для старта и посмотрим какая версия СУБД sqlite у вас установлена.
sqlite3 --version
Если у вас установлена версия выше 2.26 — ок, ты везунчик! Но пересобрать компилятор всё-равно придётся. У меня такой команды вообще не найдено! В любом случае начинаем веселиться!
Установка SQLite
Скачайте исходные коды SQLite:
Перейдите на официальный сайт SQLite и скачайте последнюю версию исходных кодов. На момент моего вещания, адрес для загрузки был следующим SQLite 3.43.
А проще скопировать ссылку на отмеченный файл и выполнить команду
wget https://www.sqlite.org/2023/sqlite-autoconf-3430000.tar.gz
Вы загрузите исходный код sqlite в текущую директорию. Распакуйте архив командой
tar xvfz sqlite-autoconf-3430000.tar.gz
на экране вы увидите все извлечённые файлы. Перейдите в папку sqlite-autoconf-3430000
cd sqlite-autoconf-3430000
Настройте и скомпилируйте SQLite:
Выполните следующие команды для настройки и компиляции SQLite:
./configure
после вводим
make
Тут я получил ошибку нехватки оперативной памяти. Но это маловероятный сценарий.
gcc -DPACKAGE_NAME=\"sqlite\" -DPACKAGE_TARNAME=\"sqlite\" -DPACKAGE_VERSION=\"3.43.0\" -DPACKAGE_STRING=\"sqlite\ 3.43.0\" -DPACKAGE_BUGREPORT=\"http://www.sqlite.org\" -DPACKAGE_URL=\"\" -DPACKAGE=\"sqlite\" -DVERSION=\"3.43.0\" -DHAVE_STDIO_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_UNISTD_H=1 -DSTDC_HEADERS=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAVE_FDATASYNC=1 -DHAVE_USLEEP=1 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DHAVE_DECL_STRERROR_R=1 -DHAVE_STRERROR_R=1 -DHAVE_POSIX_FALLOCATE=1 -DHAVE_ZLIB_H=1 -I. -D_REENTRANT=1 -DSQLITE_THREADSAFE=1 -DSQLITE_ENABLE_MATH_FUNCTIONS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_GEOPOLY -DSQLITE_HAVE_ZLIB -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_DQS=0 -DSQLITE_ENABLE_DBPAGE_VTAB -DSQLITE_ENABLE_STMTVTAB -DSQLITE_ENABLE_DBSTAT_VTAB -g -O2 -MT sqlite3-sqlite3.o -MD -MP -MF .deps/sqlite3-sqlite3.Tpo -c -o sqlite3-sqlite3.o `test -f 'sqlite3.c' || echo './'`sqlite3.c
virtual memory exhausted: Cannot allocate memory
make: *** [Makefile:563: sqlite3-sqlite3.o] Error 1
Если у вас такая же ошибка, попробуйте создать файл подкачки swap, а лучше увеличьте объем оперативной памяти. Тут мы не будем рассматривать решение данной ошибки. Но могу сказать, что потренируйтесь, для начала, на виртуальных машинах, и только потом переходите на рабочий сервер. Я увеличил объём оперативки до 2Gb и всё заработало.
И так, после вовода команды make, которая создаст вам библиотеку sqlite3 из исходных кодов, осталось ввести
sudo make install
для установки собранной версии в вашу систему.
Обратите внимание, что установка в систему может изменить текущую версию SQLite и повлиять на работу других программ, которые зависят от нее. Будьте осторожны при выполнении этой команды.
Поздравляю! Вы только что установили sqlite3 на свой компьютер. Чтобы посмотреть версию, введите команду
sqlite3 --version
Однако, если вы введёте команду, для того чтобы посмотреть какую версию использует Python
python3 -c "import sqlite3; print(sqlite3.sqlite_version)"
Вы с удивлением обнаружите, что он до сих пор использует старую версию. Для того чтобы заставить Python работать с нужной нам версией, нужно явно указать интерпретатору Python где искать эту библиотеку.
Теперь переходим в домашнюю директорию и открываем там файл .bashrc
cd $HOME
nano .bashrc
Файл может быть пустым. В любом случае добавьте в него строчку
export LD_LIBRARY_PATH=/usr/local/lib
Сохраняем Ctrl+O, закрываем Ctrl+X. Применяем изменения
source .bashrc
Теперь версии установленной утилиты sqlite и библиотеки Python должны совпадать. Если это всё ещё не так, пока не обращайте внимания. Возможно в виртуальном окружении всё заработает, или вам потребуется перекомпилировать Python.