Создание локального deb-репозитория — удобный способ хранить и распространять пакеты внутри своей сети. Эта статья поможет системным администраторам и пользователям Linux понять, как правильно создать такой репозиторий с помощью dpkg-scanpackages и исключить типичные ошибки при работе с ним.
Почему появляется проблема с локальным deb-репозиторием
- Отсутствие или некорректная индексация пакетов с помощью dpkg-scanpackages.
- Неправильная структура каталогов внутри локального репозитория.
- Отсутствие или неправильное оформление файла Release, что препятствует apt валидации репозитория.
- Ошибки или опечатки в файле sources.list при добавлении локального репозитория.
Пошаговое решение
Шаг 1. Создание директории для локального репозитория
mkdir -p ~/localrepo/debsСоздаем структуру каталогов для хранения *.deb пакетов. В моем примере — домашняя папка пользователя в каталоге localrepo/debs. Можно выбрать любой другой путь, главное — соблюсти структуру.
Шаг 2. Копирование пакетов в рабочую директорию
cp /путь/к/пакетам/*.deb ~/localrepo/debs/Копируем все необходимые *.deb файлы в каталог с пакетами. Убедитесь, что пакетами являются валидные deb-файлы, поскольку dpkg-scanpackages их будет обрабатывать.
Шаг 3. Генерация файла Packages с помощью dpkg-scanpackages
cd ~/localrepo
dpkg-scanpackages debs /dev/null | gzip -9c > debs/Packages.gzЭта команда просматривает каталог debs и создает индекс пакетов. Файл Packages.gz нужен для пакетного менеджера apt. Опция /dev/null указывает, что мы не используем дополнительный файл overrides.
Шаг 4. Создание файла Release (опционально, но рекомендуется)
cd ~/localrepo
echo "Origin: LocalRepo" > Release
echo "Label: Local Repository" >> Release
echo "Suite: stable" >> Release
echo "Codename: local" >> Release
echo "Architectures: amd64" >> Release
echo "Components: main" >> Release
echo "Description: Local deb repository" >> ReleaseФайл Release описывает репозиторий и полезен для гарантий безопасности и аутентичности. Точный набор полей может зависеть от дистрибутива и настроек.
Шаг 5. Добавление локального репозитория в sources.list
echo "deb [trusted=yes] file:///home/username/localrepo debs/" | sudo tee /etc/apt/sources.list.d/localrepo.listЗдесь trusted=yes отключает проверку подписи, что удобно для локальных репозиториев. Замените /home/username/localrepo на актуальный путь к директории с пакетами.
Шаг 6. Обновление списка пакетов и проверка
sudo apt updateКоманда обновит список пакетов, включая локальный репозиторий. Если ошибок не будет, значит добавление прошло успешно.
Альтернативные методы
Если dpkg-scanpackages не устраивает или нужно более продвинутое решение, рассмотрите:
- Использование утилиты
reprepro— мощный менеджер локальных репозиториев с возможностью управления ключами и дистрибутивами. - Создание локального HTTP-сервера (например, с помощью nginx или Apache) для репозитория. Тогда использовать в sources.list URL вместо file://.
Проверка результата
После sudo apt update выполните:
apt-cache policyВы увидите список доступных репозиториев, среди которых должен быть локальный. Также можно проверить наличие пакетов командой:
apt-cache search имя-пакетаЕсли пакеты из локального репозитория отображаются и устанавливаются командой sudo apt install имя-пакета без ошибок — значит всё настроено корректно.
Как избежать в будущем
- Соблюдайте структуру каталогов: каталог с *.deb и внутри него индекс Packages.gz
- Регулярно обновляйте индексы после добавления новых пакетов.
- Для крупных репозиториев используйте автоматические инструменты, например, reprepro.
- Проверяйте пути в sources.list на опечатки.
FAQ
Можно ли использовать dpkg-scanpackages для разных архитектур?
Да, но тогда необходимо создавать отдельные каталоги с пакетами для каждой архитектуры и индексировать их отдельно.
Что делать, если apt выдает ошибку о неподписанном репозитории?
Для локальных репозиториев можете добавить параметр [trusted=yes] в файл sources.list, чтобы отключить проверку подписи.
Как узнать путь до моего локального репозитория для sources.list?
Выполните realpath ~/localrepo, чтобы получить абсолютный путь.
Надеемся, этот материал помог вам создать и настроить локальный deb-репозиторий. Смотрите также: Как настроить ключи GPG для безопасных репозиториев в Debian и Ubuntu.