Подробный гайд по установке и настройке localrepo в ALT Linux - Часть 1
Установка и настройка локального репозитория в ALT Linux (localrepo)
1. Что такое localrepo и зачем он нужен
localrepo — утилита в экосистеме ALT Linux для создания и обслуживания локального репозитория RPM-пакетов.
Типичные сценарии:
- Хранение собственных/кастомных пакетов, которых нет в официальных репозиториях.
- Локальное зеркало для парка машин без интернета.
- Тестирование пакетов перед публикацией.
- Изолированный набор пакетов для конкретного проекта/сервера.
В основе лежит стандартная для ALT структура репозитория, а индексы генерируются утилитой genbasedir (из пакета apt-server).
2. Предварительные требования
| Требование | Проверка |
|---|---|
| ОС | ALT Linux (Рабочая станция, Сервер, Сизиф/regular и т. д.) |
| Права | root или sudo |
| Пакетный менеджер | apt-get (ALT-овая реализация, не Debian-овская) |
| Свободное место | Зависит от кол-ва пакетов; минимум ~500 МБ для небольшого репо |
Проверьте версию системы:
cat /etc/os-release
uname -m # x86_64, aarch64, i586 …
3. Установка необходимых пакетов
Обновите индексы и установите пакет localrepo (а также зависимости для генерации метаданных):
sudo apt-get update
sudo apt-get install localrepo
Если пакет localrepo не найден в вашей ветке, установите компоненты вручную:
sudo apt-get install apt-server genbasedir
В некоторых сборках (особенно старых) утилита может называться apt-repo-utils или входить в apt-utils.
Поиск:
apt-cache search localrepo
apt-cache search genbasedir
Проверка:
localrepo --version
# или
localrepo --help
4. Создание репозитория
4.1 Базовая команда
sudo localrepo create /srv/localrepo
Это создаст каталог /srv/localrepo со стандартной для ALT иерархией:
/srv/localrepo/
├── pkg/ # бинарные пакеты
│ ├── x86_64/
│ │ ├── RPMS/ # сюда кладём .rpm
│ │ └── base/ # метаданные (генерируются)
│ ├── noarch/
│ │ ├── RPMS/
│ │ └── base/
│ └── i586/ # если актуально
├── srpkg/ # исходники (SRPM), опционально
│ ├── SRPMS/
│ └── base/
├── RELEASE # файл-описание репозитория
└── .lock # служебный лок-файл
4.2 Создание с параметрами
sudo localrepo create \
--name "my-custom-repo" \
--arch x86_64,noarch \
/srv/localrepo
| Флаг | Назначение |
|---|---|
--name |
Идентификатор репозитория (используется в sources.list) |
--arch |
Список архитектур через запятую |
--with-sources |
Также создать секцию srpkg/ для SRPM |
4.3 Файл RELEASE
После create будет сгенерирован файл RELEASE.
Откройте его и проверьте/отредактируйте:
sudo nano /srv/localrepo/RELEASE
Типичное содержимое:
Origin: My Local Repository
Label: my-custom-repo
Architectures: x86_64 noarch
Components: main
Description: Локальный репозиторий для внутренних пакетов
5. Добавление пакетов в репозиторий
5.1 Копирование RPM-файлов
Положите ваши .rpm-файлы в соответствующий каталог:
# Бинарные пакеты для x86_64
sudo cp myapp-1.2.3-alt1.x86_64.rpm /srv/localrepo/pkg/x86_64/RPMS/
# Пакеты без привязки к архитектуре
sudo cp mylib-docs-1.2.3-alt1.noarch.rpm /srv/localrepo/pkg/noarch/RPMS/
# Исходники (если есть секция srpkg)
sudo cp myapp-1.2.3-alt1.src.rpm /srv/localrepo/srpkg/SRPMS/
5.2 Добавление через localrepo add
sudo localrepo add /srv/localrepo \
myapp-1.2.3-alt1.x86_64.rpm \
mylib-docs-1.2.3-alt1.noarch.rpm
Утилита сама определит архитектуру и положит файл в нужный каталог.
5.3 Массовое добавление
sudo localrepo add /srv/localrepo /tmp/incoming/*.rpm
Или через find:
find /tmp/incoming -name '*.rpm' -exec sudo localrepo add /srv/localrepo {} +
6. Генерация / обновление метаданных
После каждого изменения набора пакетов обязательно пересоздайте индексы:
sudo localrepo update /srv/localrepo
Под капотом вызывается genbasedir, который формирует в base/:
pkglist— список пакетовrelease— метаданныеhdlist/synthesis— индексы дляaptSRPMS.list— для исходников
Ручной вызов (если localrepo update недоступен):
cd /srv/localrepo
sudo genbasedir --progress --bloat --bz2-only . main
Проверьте, что индексы появились:
ls -l /srv/localrepo/pkg/x86_64/base/
# должны быть: hdlist.cz, pkglist, release, synthesis ...
7. Подключение репозитория к APT
7.1 Редактирование sources.list
Откройте основной файл или создайте отдельный файл в sources.list.d:
sudo nano /etc/apt/sources.list.d/localrepo.list
Формат записи для локального репозитория (file: или copy:):
# file: — репозиторий на локальном диске
rpm file:/srv/localrepo main
# copy: — APT будет копировать пакеты в кэш при установке
# rpm copy:/srv/localrepo main
Если репозиторий раздаётся по HTTP (например, через nginx):
rpm http://repo.internal.local/main x86_64 noarch main
7.2 Проверка формата
Общий синтаксис строки:
rpm <метод>:<путь> <дистрибуция> [компоненты...]
Для локального репо без привязки к конкретной ветке дистрибутива обычно пишут просто main.
7.3 Обновление индексов
sudo apt-get update
В выводе должна появиться строка вида:
Получение:1 file:/srv/localrepo main InRelease
7.4 Проверка видимости пакетов
apt-cache --names-only search myapp
# или
apt-cache show myapp
Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.