SQLite — это легковесная встраиваемая реляционная база данных, которая не требует отдельного сервера. Вся база данных хранится в одном файле, а для работы с ней не нужны настройки доступа, пользователи или порты. SQLite идеально подходит для локальных приложений, разработки, тестирования и небольших веб-проектов. Debian не устанавливает SQLite по умолчанию, но он доступен в стандартных репозиториях. Главные сложности для новичка: версия в репозиториях может быть старой (на Debian 11 — SQLite 3.34), а для сборки из исходников нужно установить зависимости и правильно настроить PATH, чтобы новая версия имела приоритет.
💡 В этом руководстве вы установите SQLite на Debian двумя способами: через APT (рекомендованный для большинства) и сборкой из исходников (если нужна самая свежая версия). Для source-сборки мы дадим два варианта: простой (без проверки подлинности) и продвинутый (с SHA3-проверкой скачанного файла). Вы также узнаете, как проверить работу SQLite на тестовой базе, обновлять source-сборку и решать типичные проблемы.
В этой статье вы узнаете:
- Как установить SQLite через APT (проще всего)
- Как собрать SQLite из исходников (актуальная версия) — два варианта
- Как проверить установку на тестовой базе данных
- Как создать скрипт для обновления source-сборки
- Как решить типичные проблемы:
sqlite3: command not found, конфликт версий, ошибки сборки
1. 🔧 Предварительные требования
Перед установкой убедитесь, что:
- У вас установлена Debian 11, 12 или 13
- Подключение к интернету стабильно
- У вас есть права sudo
⚠️ ВАЖНО: Проверьте права sudo перед установкой
Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:
sudo whoami
Что делает: sudo — выполняет команду от имени суперпользователя, whoami — показывает имя текущего пользователя.
Зачем: Эта команда проверяет, есть ли у вас права sudo. Без них вы не сможете устанавливать пакеты.
✅ Если выводит root — всё в порядке, можете продолжать.
❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.
1.1 Обновление системы
Перед установкой всегда обновляйте список пакетов:
sudo apt update && sudo apt upgrade -y
Что делает:
sudo— права суперпользователяapt update— обновляет список доступных пакетов из репозиториев&&— выполняет следующую команду только если предыдущая успешнаapt upgrade -y— обновляет все установленные пакеты до последних версий
Зачем: Это стандартная практика безопасности перед установкой нового ПО.
2. 📊 Сравнение способов установки SQLite
В Debian есть два основных способа установки SQLite. Вот их сравнение:
| Метод | Канал | Версия | Обновления | Плюсы | Минусы |
|---|---|---|---|---|---|
| APT | Репозитории Debian | Debian 13: 3.46, Debian 12: 3.40, Debian 11: 3.34 | Автоматически через apt upgrade | Простота, безопасность, минимум усилий | Версия может быть старой, особенно на Debian 11 |
| Сборка из исходников | SQLite upstream (sqlite.org) | Самая свежая | Вручную (пересборка) | Максимальная свежесть | Требует установки инструментов сборки, ручное обновление |
💡 Рекомендация: Для большинства пользователей подойдёт APT. Сборку из исходников выбирайте, если вам нужна функция, которая появилась в новой версии SQLite, а в вашем Debian её ещё нет.
3. 📦 Способ 1: Установка SQLite через APT (рекомендованный)
Этот способ подходит для большинства пользователей. Вы получаете версию SQLite, которая протестирована для вашего выпуска Debian.
3.1 Установка пакета
sudo apt install sqlite3 -y
Что делает: Устанавливает SQLite (клиент командной строки) из официальных репозиториев Debian.
3.2 Проверка установки
sqlite3 --version
✅ Ожидаемый вывод в терминале (Debian 13):
3.46.1 2024-08-13 09:16:08 ...
Какие версии в разных Debian:
| Версия Debian | Версия SQLite |
|---|---|
| Debian 13 (Trixie) | 3.46.x |
| Debian 12 (Bookworm) | 3.40.x |
| Debian 11 (Bullseye) | 3.34.x |
3.3 (Опционально) Установка заголовочных файлов для разработки
Если вы планируете компилировать программы, использующие SQLite, установите также пакет разработчика:
sudo apt install libsqlite3-dev -y
Что делает: Устанавливает заголовочные файлы и библиотеки для компиляции приложений с поддержкой SQLite.
4. 🔧 Способ 2: Сборка SQLite из исходников (актуальная версия)
Этот способ подходит, если вам нужна самая свежая версия SQLite, которая ещё не попала в репозитории Debian.
💡 Для продвинутых пользователей: в конце раздела (4.7) вы найдёте альтернативный вариант сборки с проверкой SHA3-хеша скачанного файла для максимальной безопасности.
4.1 Установка инструментов сборки и зависимостей
sudo apt install build-essential libreadline-dev zlib1g-dev curl wget -y
Что делает:
build-essential— компилятор gcc, make и заголовочные файлыlibreadline-dev— библиотека readline (для удобной работы с историей команд в интерактивном режиме)zlib1g-dev— библиотека сжатия zlib (нужна для поддержки сжатых баз данных)curl,wget— инструменты для скачивания исходников
4.2 Определение последней версии и скачивание исходников (упрощённый вариант)
mkdir -p ~/sqlite-build && cd ~/sqlite-build
SQLITE_PATH=$(curl -fsSL https://www.sqlite.org/download.html | awk -F, '$3 ~ /sqlite-autoconf-[0-9]+\.tar\.gz/ {print $3; exit}')
TARBALL="${SQLITE_PATH##*/}"
curl -fL --progress-bar -o "$TARBALL" "https://www.sqlite.org/$SQLITE_PATH"
Что делает: Запрашивает страницу загрузки SQLite, извлекает ссылку на последний sqlite-autoconf tarball и скачивает его.
4.3 Распаковка, конфигурация и сборка
tar -xzf "$TARBALL"
SOURCE_DIR="${TARBALL%.tar.gz}"
cd "$SOURCE_DIR"
./configure --prefix=/usr/local
make -j$(nproc)
Что делает:
tar -xzf— распаковывает архив./configure --prefix=/usr/local— настраивает сборку для установки в/usr/localmake -j$(nproc)— компилирует SQLite, используя все ядра процессора для ускорения
4.4 Установка
sudo make install
sudo ldconfig
Что делает: Устанавливает собранный SQLite в систему (/usr/local/bin/sqlite3) и обновляет кэш разделяемых библиотек.
4.5 Проверка установки
/usr/local/bin/sqlite3 --version
✅ Ожидаемый вывод в терминале:
3.53.1 2025-01-15 ...
4.6 (Важно!) Проверка, какая версия используется по умолчанию
command -v sqlite3
Что вы увидите:
- Если
/usr/local/bin/sqlite3— используется свежая сборка ✅ - Если
/usr/bin/sqlite3— используется старая APT-версия (нужно настроить PATH)
На Debian 13, 12 и 11 директория /usr/local/bin обычно идёт раньше /usr/bin в PATH, поэтому новая версия должна иметь приоритет. Но если это не так, добавьте в ~/.bashrc:
echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
4.7 Продвинутый вариант: сборка с проверкой SHA3 (для максимальной безопасности)
Если вы хотите гарантировать, что скачанный файл не повреждён и не подменён, используйте этот вариант вместо шагов 4.2 и 4.3. Он включает проверку SHA3-256 хеша.
Шаг 1 — скачивание с проверкой SHA3:
mkdir -p ~/sqlite-build && cd ~/sqlite-build
# Скачиваем страницу и парсим метаданные
SQLITE_META=$(curl -fsSL https://www.sqlite.org/download.html | awk -F, '$1=="PRODUCT" && $3 ~ /sqlite-autoconf-[0-9]+\.tar\.gz$/ && !seen {print $2 "|" $3 "|" $5; seen=1} END {if (!seen) exit 1}')
if [ -z "$SQLITE_META" ]; then
echo "Не удалось найти ссылку на sqlite-autoconf на странице загрузки."
exit 1
fi
LATEST_VERSION="${SQLITE_META%%|*}"
REST="${SQLITE_META#*|}"
SQLITE_PATH="${REST%%|*}"
EXPECTED_SHA3="${REST#*|}"
TARBALL="${SQLITE_PATH##*/}"
echo "Найдена версия: $LATEST_VERSION"
echo "Ожидаемый SHA3: $EXPECTED_SHA3"
# Скачиваем
curl -fL --progress-bar -o "$TARBALL" "https://www.sqlite.org/$SQLITE_PATH"
# Проверяем SHA3
ACTUAL_SHA3=$(openssl dgst -sha3-256 -r "$TARBALL" | awk '{print $1}')
if [ "$ACTUAL_SHA3" != "$EXPECTED_SHA3" ]; then
echo "ОШИБКА: SHA3 хеш не совпадает!"
echo "Ожидалось: $EXPECTED_SHA3"
echo "Получено: $ACTUAL_SHA3"
rm -f "$TARBALL"
exit 1
fi
echo "SHA3 проверка пройдена успешно."
Что делает этот код: Парсит страницу download.html, извлекая одновременно версию, путь к файлу и SHA3-256 хеш. Затем скачивает файл и сверяет хеш — если не совпадает, файл удаляется, и сборка не продолжается.
Шаг 2 — распаковка, сборка и установка:
SOURCE_DIR="${TARBALL%.tar.gz}"
rm -rf "$SOURCE_DIR"
tar -xzf "$TARBALL"
cd "$SOURCE_DIR"
./configure --prefix=/usr/local
make -j$(nproc)
sudo make install
sudo ldconfig
hash -r
Шаг 3 — проверка:
/usr/local/bin/sqlite3 --version
💡 Какой вариант выбрать? Упрощённый вариант (4.2–4.3) проще для понимания и подходит для большинства задач. Продвинутый вариант с SHA3 даёт гарантию целостности файла и рекомендуется, если вы работаете в среде с повышенными требованиями к безопасности или просто хотите следовать best practices.
5. 🧪 Проверка установки: тестовая база данных
После установки SQLite (любым способом) стоит убедиться, что он работает.
sqlite3 ~/test.db
Что делает: Открывает (или создаёт) базу данных test.db в домашней директории и запускает интерактивную оболочку SQLite.
Внутри оболочки SQLite выполните:
CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, email TEXT);
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com');
.headers on
.mode column
SELECT id, name, email FROM users;
.quit
Что делает: Создаёт таблицу, вставляет две строки, выводит их.
✅ Ожидаемый вывод:
id name email
-- ----- -----------------
1 Alice alice@example.com
2 Bob bob@example.com
Удаление тестовой базы данных:
rm ~/test.db
6. 🔄 Обновление source-сборки (скрипт)
Если вы собрали SQLite из исходников, обновлять его нужно вручную. Вот скрипт, который автоматически скачивает последнюю версию, собирает и устанавливает её.
Создание скрипта (упрощённая версия)
mkdir -p ~/sqlite-build
cat <<'EOF' > ~/sqlite-build/update-sqlite.sh
#!/usr/bin/env bash
set -euo pipefail
BUILD_DIR="$HOME/sqlite-build"
INSTALL_PREFIX="/usr/local"
mkdir -p "$BUILD_DIR"
cd "$BUILD_DIR"
echo "Проверка последней версии SQLite..."
SQLITE_PATH=$(curl -fsSL https://www.sqlite.org/download.html | awk -F, '$3 ~ /sqlite-autoconf-[0-9]+\.tar\.gz/ {print $3; exit}')
TARBALL="${SQLITE_PATH##*/}"
LATEST_VERSION=$(echo "$SQLITE_PATH" | grep -oP 'sqlite-autoconf-\K[0-9]+' | sed -E 's/^([0-9])([0-9]{2})([0-9]{2})([0-9]{2})$/\1.\2.\3.\4/')
CURRENT_VERSION="$($INSTALL_PREFIX/bin/sqlite3 --version 2>/dev/null | awk '{print $1}' || echo none)"
printf "Текущая версия: %s\n" "$CURRENT_VERSION"
printf "Последняя версия: %s\n" "$LATEST_VERSION"
if [ "$CURRENT_VERSION" = "$LATEST_VERSION" ]; then
echo "SQLite уже последней версии."
exit 0
fi
SOURCE_DIR="${TARBALL%.tar.gz}"
echo "Скачивание $TARBALL..."
rm -rf "$BUILD_DIR"/sqlite-autoconf-* "$BUILD_DIR"/sqlite-autoconf-*.tar.gz
curl -fL --progress-bar -o "$TARBALL" "https://www.sqlite.org/$SQLITE_PATH"
echo "Распаковка и сборка SQLite..."
tar -xzf "$TARBALL"
cd "$SOURCE_DIR"
./configure --prefix="$INSTALL_PREFIX"
make -j"$(nproc)"
echo "Установка SQLite в $INSTALL_PREFIX..."
sudo make install
sudo ldconfig
hash -r
NEW_VERSION="$($INSTALL_PREFIX/bin/sqlite3 --version | awk '{print $1}')"
echo "SQLite успешно обновлён до $NEW_VERSION"
EOF
chmod +x ~/sqlite-build/update-sqlite.sh
Продвинутая версия скрипта (с SHA3 проверкой)
Если вы использовали продвинутый вариант сборки (с SHA3), вот скрипт обновления с проверкой целостности:
cat <<'EOF' > ~/sqlite-build/update-sqlite-adv.sh
#!/usr/bin/env bash
set -euo pipefail
BUILD_DIR="$HOME/sqlite-build"
INSTALL_PREFIX="/usr/local"
mkdir -p "$BUILD_DIR"
cd "$BUILD_DIR"
echo "Проверка последней версии SQLite..."
SQLITE_META=$(curl -fsSL https://www.sqlite.org/download.html | awk -F, '$1=="PRODUCT" && $3 ~ /sqlite-autoconf-[0-9]+\.tar\.gz$/ && !seen {print $2 "|" $3 "|" $5; seen=1} END {if (!seen) exit 1}')
if [ -z "$SQLITE_META" ]; then
echo "Не удалось найти ссылку на sqlite-autoconf на странице загрузки."
exit 1
fi
LATEST_VERSION="${SQLITE_META%%|*}"
REST="${SQLITE_META#*|}"
SQLITE_PATH="${REST%%|*}"
EXPECTED_SHA3="${REST#*|}"
TARBALL="${SQLITE_PATH##*/}"
CURRENT_VERSION="$($INSTALL_PREFIX/bin/sqlite3 --version 2>/dev/null | awk '{print $1}' || echo none)"
printf "Текущая версия: %s\n" "$CURRENT_VERSION"
printf "Последняя версия: %s\n" "$LATEST_VERSION"
if [ "$CURRENT_VERSION" = "$LATEST_VERSION" ]; then
echo "SQLite уже последней версии."
exit 0
fi
SOURCE_DIR="${TARBALL%.tar.gz}"
echo "Скачивание $TARBALL..."
rm -rf "$BUILD_DIR"/sqlite-autoconf-* "$BUILD_DIR"/sqlite-autoconf-*.tar.gz
curl -fL --progress-bar -o "$TARBALL" "https://www.sqlite.org/$SQLITE_PATH"
# SHA3 проверка
ACTUAL_SHA3=$(openssl dgst -sha3-256 -r "$TARBALL" | awk '{print $1}')
if [ "$ACTUAL_SHA3" != "$EXPECTED_SHA3" ]; then
echo "ОШИБКА: SHA3 хеш не совпадает!"
echo "Ожидалось: $EXPECTED_SHA3"
echo "Получено: $ACTUAL_SHA3"
rm -f "$TARBALL"
exit 1
fi
echo "SHA3 проверка пройдена успешно."
echo "Распаковка и сборка SQLite..."
tar -xzf "$TARBALL"
cd "$SOURCE_DIR"
./configure --prefix="$INSTALL_PREFIX"
make -j"$(nproc)"
echo "Установка SQLite в $INSTALL_PREFIX..."
sudo make install
sudo ldconfig
hash -r
NEW_VERSION="$($INSTALL_PREFIX/bin/sqlite3 --version | awk '{print $1}')"
echo "SQLite успешно обновлён до $NEW_VERSION"
EOF
chmod +x ~/sqlite-build/update-sqlite-adv.sh
Запуск обновления
Для упрощённой версии:
~/sqlite-build/update-sqlite.sh
Для продвинутой версии (с SHA3):
~/sqlite-build/update-sqlite-adv.sh
⚠️ Важно: Не автоматизируйте этот скрипт через cron. Сборка из исходников может завершиться ошибкой из-за отсутствия зависимостей или проблем с сетью. Запускайте его вручную и проверяйте вывод.
7. ⚠️ Решение типичных проблем
7.1 Ошибка: sqlite3: command not found
Симптом: sqlite3 --version выдаёт bash: sqlite3: command not found.
Причина: SQLite не установлен, или установлен только пакет разработчика (libsqlite3-dev), но не сам клиент.
Пошаговое решение:
Шаг 1: Установите клиент SQLite:
sudo apt install sqlite3 -y
Шаг 2: Если вы собирали из исходников, проверьте, что бинарный файл существует:
ls /usr/local/bin/sqlite3
Если файл есть, но команда не работает — добавьте /usr/local/bin в PATH (см. раздел 4.6).
7.2 Source-сборка: всё ещё показывает старую версию
Симптом: Вы собрали и установили SQLite из исходников, но sqlite3 --version показывает старую версию (из APT).
Причина: Ваш shell находит бинарный файл в /usr/bin (APT-версия) раньше, чем в /usr/local/bin (source-сборка).
Пошаговое решение:
Шаг 1: Проверьте, какой бинарный файл используется:
command -v sqlite3
Шаг 2: Если выводит /usr/bin/sqlite3, измените порядок PATH:
export PATH=/usr/local/bin:$PATH
echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
Шаг 3: Проверьте снова:
command -v sqlite3
✅ Ожидаемый вывод: /usr/local/bin/sqlite3
7.3 Ошибка сборки: configure не может найти readline
Симптом: ./configure выдаёт ошибку, связанную с readline.
Причина: Отсутствует пакет libreadline-dev.
Решение:
sudo apt install libreadline-dev -y
Затем повторите ./configure.
7.4 Ошибка: не удаётся скачать исходники
Симптом: curl не может скачать tarball, ошибка 404 или timeout.
Причина: Проблемы с сетью или SQLite.org изменил структуру страницы загрузки.
Решение:
Шаг 1: Проверьте интернет-соединение:
ping -c 4 sqlite.org
Шаг 2: Скачайте последнюю версию вручную с официального сайта SQLite. Найдите файл sqlite-autoconf-XXXXXXX.tar.gz.
Шаг 3: Вручную распакуйте и соберите:
tar -xzf sqlite-autoconf-*.tar.gz
cd sqlite-autoconf-*
./configure --prefix=/usr/local
make -j$(nproc)
sudo make install
7.5 Ошибка SHA3 при продвинутой сборке
Симптом: Скрипт сообщает SHA3 хеш не совпадает.
Причина: Файл повреждён при скачивании или подменён.
Решение: Просто запустите скрипт ещё раз — он скачает файл заново. Если ошибка повторяется, проверьте интернет-соединение или скачайте tarball вручную с сайта SQLite.
8. ❌ Удаление SQLite
Удаление APT-версии
sudo apt remove --purge sqlite3 -y
sudo apt autoremove -y
Удаление source-сборки (из /usr/local)
sudo rm -f /usr/local/bin/sqlite3
sudo rm -f /usr/local/lib/libsqlite3.so*
sudo rm -f /usr/local/include/sqlite3.h /usr/local/include/sqlite3ext.h
sudo rm -f /usr/local/lib/pkgconfig/sqlite3.pc
sudo ldconfig
rm -rf ~/sqlite-build
Проверка удаления
command -v sqlite3
✅ Ожидаемый вывод: Пустая строка (если SQLite больше не установлен) или путь к другой версии, если она осталась.
9. 📝 Чек-лист: всё готово к работе
- [ ] Система обновлена (
sudo apt update && sudo apt upgrade -y) - [ ] Выбран и выполнен один из способов установки (APT / Source)
- [ ]
sqlite3 --versionпоказывает ожидаемую версию - [ ] Тестовая база данных создаётся и работает (запросы SELECT/INSERT)
- [ ] (Для source-сборки)
command -v sqlite3показывает/usr/local/bin/sqlite3 - [ ] (Для source-сборки) Скрипт обновления работает (
~/sqlite-build/update-sqlite.sh) - [ ] (Для продвинутой source-сборки) SHA3 проверка проходит успешно
Заключение
Вы установили SQLite на Debian. Если вы выбрали APT — получили стабильную, проверенную версию, которая будет обновляться вместе с системой. Если собрали из исходников — получили абсолютно последнюю версию: упрощённый вариант подходит для большинства задач, а продвинутый с SHA3-проверкой даёт дополнительную гарантию безопасности. SQLite — это отличный выбор для локального хранения данных, разработки и тестирования, когда не нужен полноценный сервер баз данных.
Что дальше:
- Изучите официальную документацию SQLite — особенно разделы про индексы, транзакции и встроенные функции
- Попробуйте использовать SQLite в ваших скриптах на Python (
import sqlite3) или Bash - Если ваш проект вырастет, рассмотрите переход на PostgreSQL или MariaDB
- Настройте автоматическое резервное копирование важных
.dbфайлов через cron