Подробный гайд по установке и настройке localrepo в ALT Linux - Часть 1

Подробный гайд по установке и настройке localrepo в ALT Linux: создание локального репозитория, добавление RPM-пакетов, генерация метаданных и подключение к APT.

2026.09.28                  


Подробный гайд по установке и настройке localrepo в ALT Linux - Часть 1Подробный гайд по установке и настройке 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 — индексы для apt
  • SRPMS.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

Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.


Статью подготовил: Аверко Денис Сергеевич @Nymexis г. Омск (специалист по ЗИ)

Комментарии

Загрузка...
Если комментарии не загружаются, можете попробовать отключить блокировщик рекламы для этого сайта