Установка SQLite на Debian 13, 12, 11: подробное руководство

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Репозитории DebianDebian 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/local
  • make -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