Можно ли установить SQLite 3.24+ на Ubuntu 18.04?

Я пытаюсь обновить версию SQLite до версии 3.24 или выше, чтобы приложение Python могло использовать новые запросы «UPSERT». Я несколько часов пытался сделать это с небольшим успехом; он отказывается обновлять прошлое 3.22.

Я пытался:

  • Использование apt для установки и переустановки sqlite / libsqlite3-dev (и различных версий этого)

  • Загрузка пакетов из панели запуска (например, https://launchpad.net/ubuntu/+source/sqlite3/3.26.0-2 ) и попытка их установки

  • Использование Python pip для попытки обновления sqlite3

  • Добавление нескольких репозиториев PPA, чтобы попытаться получить их оттуда

  • Другие различные предложения найдено из Google

Что я еще не пробовал:

  • Сборка SQLite из исходного кода (для меня это последнее прибежище)

Можно ли установить версию SQLite 3.24+ на Ubuntu 18.04? Если это так, является ли единственный способ сборки из исходного кода или есть простой способ получить более свежую версию с помощью apt (или подобного)?

0
задан 16 September 2019 в 23:00

2 ответа

Эта версия SQLite3 привязана к официальной Ubuntu 18.04, как упоминал Мерфи. Я создал новую Ubuntu 18.04.5 LTS в Azure и попробовал несколько вещей, включая установку Python3.7 и Python 3.8, и версия SQLite была такой же.

root@test-011:/home/carles# python3.8 -c "import sqlite3; print(sqlite3.sqlite_version)"
3.22.0

Я также пытался загрузить предварительно скомпилированные двоичные файлы SQLite для более новой версии, но они не работали.

Я бы сказал, даже если вы заставите это работать, распространение вашей программы на другие серверы будет проблемой. И я бы не рекомендовал вам не использовать официальные пакеты, предоставляемые LTS-версией, так как вы не получите для них обновления и исправления безопасности.

Поэтому я думаю, что самый простой способ — это либо установить более новую версию Ubuntu, либо запустить экземпляр Docker с более новой версией образа Ubuntu и попробовать там новую функцию в своей программе. Сборка SQLite3 из исходников вам не подойдет, вам придется собирать Python3 из исходников + SQLite3.Мой совет: будьте проще.

2
ответ дан 3 October 2020 в 20:49

Обновитесь до 20.04, и вы получите SQLite 3.31 бесплатно*

Я уверен, что вы, вероятно, могли бы обновить SQLite3 (и python3-sqlite) на месте, перекомпилировав их. Я бы не ожидал, что для этого будет простой (например, PPA). Однако боль и суета, скорее всего, перевесят временные затраты на обновление системы или перенос стека на Docker (что является хорошим решением).

Вы также получаете обновление Python... Что хорошо, если вам нужны функции версии 3.8.

Если вы абсолютно не можете — и я это уважаю, у меня были производственные системы, которые нужно было оставить в покое, — я думаю, вам действительно нужно начать рассматривать возможность отделения среды Python от приложения. из системного Python, чтобы вы могли обновить его до версии, которую вы скомпилируете самостоятельно. Или позвольте Docker сделать это за вас. Это будет означать инфраструктурные изменения в среде Python вашего приложения, поэтому обязательно сначала протестируйте резервную копию.

Не пытайтесь заменить системные двоичные файлы Python, даже если аналогичная версия привязана к более новой версии SQLite3. Это закончится болью и страданиями, и, вероятно, около 9 фильмов о вашем опасном падении на темную сторону и последствиях для будущих поколений. А если серьезно, оставьте /usr/bin/python{,3} в покое.

1
ответ дан 5 October 2020 в 12:00

Другие вопросы по тегам:

Похожие вопросы: