- Локальный сервер обновлений для ALT Linux и Astra Linux
- Смоленск
- Орел
- ALT Linux
- Смоленск
- Орёл
- ALT Linux
- Логирование
- APT в ALT Linux/CreateRepository
- Структура APT-RPM репозитория
- Размещение пакетов
- Создание/обновление метаинформации
- Полезные советы
- Создание «скелета» репозитория
- Добавление произвольного набора пакетов в репозиторий
- Создание репозитория на основе содержимого кэша APT
- Автоматизация добавления пакетов в репозиторий
- Запись репозитория на CD/DVD
- rpm-dir
- APT в ALT Linux/CreateRepository
- Структура APT-RPM репозитория
- Размещение пакетов
- Создание/обновление метаинформации
- Полезные советы
- Создание «скелета» репозитория
- Добавление произвольного набора пакетов в репозиторий
- Создание репозитория на основе содержимого кэша APT
- Автоматизация добавления пакетов в репозиторий
- Запись репозитория на CD/DVD
- rpm-dir
Локальный сервер обновлений для ALT Linux и Astra Linux
В данной статье я расскажу о создании локального сервера обновлений для ОС ALT Linux и Astra Linux, на базе сервера под управлением ОС ALT Linux.
Почему так? Сам я использую ALT Linux, однако исходя из моей практики во многих государственных учреждениях присутствуют дистрибутивы разных вендоров. О причинах такого положения дел говорить не буду, а просто раз уж так получилось то с этим и работать. В одной из организаций которую я админю сложилась именно такая ситуация, в результате решения которой появилась данная статья. Начнём!
Допустим у нас имеется сервер ALT Linux (СП, p9, p10) установленный в минимальном исполнении со следующими параметрами:
Сам сервер находится не в ЗСПД, а доступ из ЗСПД к нему необходимо организовать разрешением соединений по протоколу tcp на 80 порт, в моём случае на VipNet координаторе.
Обновляем список пакетов, ОС, ядро и перезагружаем:
Устанавливаем Web-сервер apache:
Устанавливаем утилиту для создания локального зеркала репозитория ALT Linux:
Создадим необходимые каталоги:
ISO — здесь будут находиться iso-образы дистрибутивов
sm и sm-dev — сюда будут смонтированы iso-образы оригинального дистрибутива и дистрибутива разработчика Смоленск
smupd и smupd-dev — сюда будут смонтированы iso-образы дистрибутива обновлений и дистрибутива обновлений разработчика Смоленск. Данные обновления являются накопительными, поэтому для обновления системы достаточно использовать последнюю версию а не производить обновление по порядку.
Смоленск
Добавляем iso-образы оригинального дистрибутива и дистрибутива разработчика в /var/updates/astra/ISO/ любым удобным способом
Для автоматического монтирования iso-образов вносим изменения в /etc/fstab добавлением строк:
Орел
Пакетная база данного дистрибутива доступна из сети интернет, поэтому будем зеркалировать оттуда.
Создадим скрипт, в котором будет выполнятся вся последовательность команд по закачке обновлений:
rsync —delete -aqLz dl.astralinux.ru::astra/astra/stable/2.12_x86-64/repository/ /var/updates/astra/orel/
ALT Linux
Для альта воспользуется удобной утилитой sisyphus-mirror , благодаря которой можно зеркалить указанные в конфиге репозитории. Допустим что у нас в сети имеются серверы с ОС ALT Linux p8, p9 и c9f2 (она же СП)
Правим только эти строки в файле /etc/sisyphus-mirror/sisyphus-mirror.conf
Добавим запуск утилиты в наш скрипт:
Запланируем запуск скрипта каждый день в 01:00
Настроим Web-сервер Apache:
В /etc/httpd2/conf/sites-available/ создадим файл updates.conf
Подключим наш созданный конфиг к конфигу Apache:
Запускаем Apache и добавляем его в автозапуск:
Доступность локального зеркала репозиториев можно проверить открыв в браузере ресурс:
Если успешно, то переходим к настройке клиентов
Смоленск
Содержимое файла /etc/apt/sources.list приводим к виду:
deb http://192.168.100.2/astra/sm smolensk main contrib non-free
deb http://192.168.100.2/astra/sm-dev smolensk main contrib non-free
deb http://192.168.100.2/astra/smupd smolensk main contrib non-free
deb http://192.168.100.2/astra/smupd-dev smolensk main contrib non-free
Орёл
Содержимое файла /etc/apt/sources.list приводим к виду:
ALT Linux
Удалим имеющиеся списки источников обновлений
Содержимое файла /etc/apt/sources.list приводим к виду:
Логирование
Для логирования процесса зеркалирования необходимо привести скрипт /root/scripts/updates.sh к виду:
rsync —verbose —delete -aLz dl.astralinux.ru::astra/astra/stable/2.12_x86-64/repository/ /var/updates/astra/orel/ >> /var/log/updates.log
Можно обновлять. При необходимости можно зеркалить и другие дистрибутивы например с mirror.yandex.ru, но это уже как говорится совсем другая история. На этом всё, рекомендации и дополнения приветствуются.
APT в ALT Linux/CreateRepository
Для создания репозитория достаточно создать правильную структуру директорий, разместить в ней rpm-пакеты и создать метаинформацию для APT.
Структура APT-RPM репозитория
APT-RPM репозиторий выглядит достаточно просто:
i586/ base/ # метаинформация release pkglist.reponame.bz2 . RPMS.reponame/ # пакеты архитектуры i586 foobar-1.2-5.i586.rpm x86_64/ base/ # метаинформация release pkglist.reponame.bz2 RPMS.reponame/ # пакеты архитектуры x86_64 foobar-1.2-5.x86_64.rpm noarch/ base/ # метаинформация release pkglist.reponame.bz2 RPMS.reponame/ # архитектурно-независимые пакеты
Такая структура формирует три источника для APT ( — место, где располагается репозиторий):
rpm file: i586 reponame rpm file: x86_64 reponame rpm file: noarch reponame
NB: указываем noarch и один из архитектурно-зависимых репозиториев, всё в кучу не надо!
Более изощрённую структуру директорий, когда в репозитории хранятся пакеты с иходным текстом (.src.rpm), общие для нескольких архитектур, а также когда в репозитории имеется несколько компонентов (в данном репозитории компонент один — reponame), можно посмотреть, к примеру, в репозитории ALT Linux Server. Обратите внимание, что в этом репозитории используется отдельная директория files для хранения всех пакетов, и директории RPMS.*/SRPMS.* являются символическими ссылками на поддиректории из files.
Размещение пакетов
Просто разложите пакеты по директориям /RPMS.reponame в зависимости от архитектуры пакета.
Создание/обновление метаинформации
Для создания/обновления метаинформации (файлов, хранящихся в директории base), используйте утилиту genbasedir из пакета apt-repo-tools (до 5.0/branch включительно — apt-utils):
#!/bin/sh REPO_DIR="$1" REPO_NAME="$2" for arch in i586 i686 x86_64 noarch; do genbasedir --bloat --progress --topdir=$REPO_DIR $arch $REPO_NAME done
Полезные советы
Создание «скелета» репозитория
#!/bin/sh REPO_DIR="$1" REPO_NAME="$2" for i in i586 i686 x86_64 noarch; do mkdir -p "$REPO_DIR/$i/base" "$REPO_DIR/$i/RPMS.$REPO_NAME" done
Добавление произвольного набора пакетов в репозиторий
Перед запуском этого скрипта, возможно нужно будет установить недостающие пакеты:
apt-get install /usr/bin/packages
Вот скрипт для добавления пакетов: Файл:Addpackages.sh
После этой операции необходимо обновить метаинформацию. Побочным эффектом является приведение имён файлов с пакетами к «каноническому» виду.
Создание репозитория на основе содержимого кэша APT
Добавьте содержимое кэша APT в репозиторий (см. выше) и обновите метаинформацию (см. выше).
Автоматизация добавления пакетов в репозиторий
Воспользуйтесь скриптами из пакета sisyphus.
Запись репозитория на CD/DVD
rpm-dir
Можно создать репозиторий в виде одного каталога без всяких индексов.
1. Создайте два вложенных каталога:
Примечание: Обратите внимание на наименование архитектуры (x86_64) и компонент dir (после RPMS.). Можете выбрать любые слова.
2. Скопируйте все файлы (например, все файлы *.rpm из /var/cache/apt/archives/ , которые устанавливались вручную или через обновления системы). Делать это нужно под root!
3. На машине, где нужны эти обновления, пропишите репозиторий:
apt-repo add 'rpm-dir file:/ x86_64 dir'
rpm-dir используется в случае, когда в репозитории нет каталога base с индексом пакетов. Его удобно использовать, например, для подключения репозитория с несколькими свежесобранными пакетами. Так делает hasher в режиме по умолчанию (—with-stuff). Однако в этом случае apt-get update будет открывать каждый пакет в репозитории, для большого набора (в частности, для зеркала) такой способ не годится.
APT в ALT Linux/CreateRepository
Для создания репозитория достаточно создать правильную структуру директорий, разместить в ней rpm-пакеты и создать метаинформацию для APT.
Структура APT-RPM репозитория
APT-RPM репозиторий выглядит достаточно просто:
i586/ base/ # метаинформация release pkglist.reponame.bz2 . RPMS.reponame/ # пакеты архитектуры i586 foobar-1.2-5.i586.rpm x86_64/ base/ # метаинформация release pkglist.reponame.bz2 RPMS.reponame/ # пакеты архитектуры x86_64 foobar-1.2-5.x86_64.rpm noarch/ base/ # метаинформация release pkglist.reponame.bz2 RPMS.reponame/ # архитектурно-независимые пакеты
Такая структура формирует три источника для APT ( — место, где располагается репозиторий):
rpm file: i586 reponame rpm file: x86_64 reponame rpm file: noarch reponame
NB: указываем noarch и один из архитектурно-зависимых репозиториев, всё в кучу не надо!
Более изощрённую структуру директорий, когда в репозитории хранятся пакеты с иходным текстом (.src.rpm), общие для нескольких архитектур, а также когда в репозитории имеется несколько компонентов (в данном репозитории компонент один — reponame), можно посмотреть, к примеру, в репозитории ALT Linux Server. Обратите внимание, что в этом репозитории используется отдельная директория files для хранения всех пакетов, и директории RPMS.*/SRPMS.* являются символическими ссылками на поддиректории из files.
Размещение пакетов
Просто разложите пакеты по директориям /RPMS.reponame в зависимости от архитектуры пакета.
Создание/обновление метаинформации
Для создания/обновления метаинформации (файлов, хранящихся в директории base), используйте утилиту genbasedir из пакета apt-repo-tools (до 5.0/branch включительно — apt-utils):
#!/bin/sh REPO_DIR="$1" REPO_NAME="$2" for arch in i586 i686 x86_64 noarch; do genbasedir --bloat --progress --topdir=$REPO_DIR $arch $REPO_NAME done
Полезные советы
Создание «скелета» репозитория
#!/bin/sh REPO_DIR="$1" REPO_NAME="$2" for i in i586 i686 x86_64 noarch; do mkdir -p "$REPO_DIR/$i/base" "$REPO_DIR/$i/RPMS.$REPO_NAME" done
Добавление произвольного набора пакетов в репозиторий
Перед запуском этого скрипта, возможно нужно будет установить недостающие пакеты:
apt-get install /usr/bin/packages
Вот скрипт для добавления пакетов: Файл:Addpackages.sh
После этой операции необходимо обновить метаинформацию. Побочным эффектом является приведение имён файлов с пакетами к «каноническому» виду.
Создание репозитория на основе содержимого кэша APT
Добавьте содержимое кэша APT в репозиторий (см. выше) и обновите метаинформацию (см. выше).
Автоматизация добавления пакетов в репозиторий
Воспользуйтесь скриптами из пакета sisyphus.
Запись репозитория на CD/DVD
rpm-dir
Можно создать репозиторий в виде одного каталога без всяких индексов.
1. Создайте два вложенных каталога:
Примечание: Обратите внимание на наименование архитектуры (x86_64) и компонент dir (после RPMS.). Можете выбрать любые слова.
2. Скопируйте все файлы (например, все файлы *.rpm из /var/cache/apt/archives/ , которые устанавливались вручную или через обновления системы). Делать это нужно под root!
3. На машине, где нужны эти обновления, пропишите репозиторий:
apt-repo add 'rpm-dir file:/ x86_64 dir'
rpm-dir используется в случае, когда в репозитории нет каталога base с индексом пакетов. Его удобно использовать, например, для подключения репозитория с несколькими свежесобранными пакетами. Так делает hasher в режиме по умолчанию (—with-stuff). Однако в этом случае apt-get update будет открывать каждый пакет в репозитории, для большого набора (в частности, для зеркала) такой способ не годится.