SQLite — это легковесная встраиваемая реляционная база данных, которая не требует отдельного сервера. Вся база данных хранится в одном файле, а для работы с ней не нужны настройки доступа, пользователи или порты. SQLite идеально подходит для локальных приложений, разработки, тестирования и небольших веб-проектов. Debian не устанавливает SQLite по умолчанию, но он доступен в стандартных репозиториях. Главные сложности для новичка: версия в репозиториях может быть старой (на Debian 11 — SQLite 3.34), а для сборки из исходников нужно установить зависимости и правильно настроить PATH, чтобы новая версия имела приоритет.
💡 В этом руководстве вы установите SQLite на Debian двумя способами: через APT (рекомендованный для большинства) и сборкой из исходников (если нужна самая свежая версия). Вы также узнаете, как проверить работу SQLite на тестовой базе, обновлять source-сборку и решать типичные проблемы.
В этой статье вы узнаете:
- Как установить SQLite через APT (проще всего)
- Как собрать SQLite из исходников (актуальная версия)
- Как проверить установку на тестовой базе данных
- Как создать скрипт для обновления source-сборки
- Как решить типичные проблемы:
sqlite3: command not found, конфликт версий, ошибки сборки
Для кого: разработчики, администраторы, а также все, кому нужна лёгкая база данных для локального использования на Debian 11, 12 или 13.
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.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.52.0 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
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_META="$(curl -fsSL https://www.sqlite.org/download.html | awk -F, '$3 ~ /sqlite-autoconf-[0-9]+\.tar\.gz/ {print $2 "|" $3; exit}')"
LATEST_VERSION="${SQLITE_META%%|*}"
SQLITE_PATH="${SQLITE_META#*|}"
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
TARBALL="${SQLITE_PATH##*/}"
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
NEW_VERSION="$($INSTALL_PREFIX/bin/sqlite3 --version | awk '{print $1}')"
echo "SQLite успешно обновлён до $NEW_VERSION"
EOF
chmod +x ~/sqlite-build/update-sqlite.sh
Запуск обновления:
~/sqlite-build/update-sqlite.sh
Что делает скрипт: Сравнивает текущую версию SQLite (из /usr/local/bin) с последней на sqlite.org. Если версии отличаются — скачивает, собирает и устанавливает новую.
⚠️ Важно: Не автоматизируйте этот скрипт через 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
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)
Заключение
Вы установили SQLite на Debian. Если вы выбрали APT — получили стабильную, проверенную версию, которая будет обновляться вместе с системой. Если собрали из исходников — получили абсолютно последнюю версию, которую можно обновлять скриптом из раздела 6. SQLite — это отличный выбор для локального хранения данных, разработки и тестирования, когда не нужен полноценный сервер баз данных.
Что дальше:
- Изучите официальную документацию SQLite — особенно разделы про индексы, транзакции и встроенные функции
- Попробуйте использовать SQLite в ваших скриптах на Python (
import sqlite3) или Bash - Если ваш проект вырастет, рассмотрите переход на PostgreSQL или MariaDB
- Настройте автоматическое резервное копирование важных
.dbфайлов через cron