From: Doktor <admin@contrib.ru.>
Newsgroups: email
Date: Mon, 09 Feb 2009 17:02:14 +0000 (UTC)
Subject: Создание копии репозитория rpm пакетов при помощи mrepo
Основная цель данной статьи - описание процедуры создания локального
репозитория rpm пакетов для дистрибутива Red Hat Enterpise Linux 5 при
помощи утилиты mrepo.
Установка:
Последнюю версию (на момент написания статьи 0.8.6) собранную в rpm
пакет можно скачать по ссылке:
mrepo-0.8.6-1.noarch.rpm.
Также для установки данной утилиты нужно поставить пакет createrepo.
Для создания создания репозитория для утилиты apt требуется, чтобы
данный пакет был установлен на том сервере, где создается репозиторий.
Подготовка закончена.
Настройка сервера:
После установки всех необходимых пакетов приступаем к созданию
инфраструктуры репозитория. В данной статье все файлы репозитория
располагаются в папке /opt/mrepos. Советую выделить под данный раздел не
менее 40 Gb дискового пространства, так как зеркалирование 2-3 крупных
репозиториев (epel, rpmforge, ovzkernel) занимает достаточно много
места. У меня данный раздел оформлен как LVM партиция, чтобы можно было
сделать resize или снапшот в случае необходимости.
Для доступа других серверов к репозиторию - необходимо установить на
сервере любой WEB сервер. По умолчанию, в составе пакета mrepo идет
конфигурационный файл для WEB сервера apache.
Для успешной регистрации необходимо как минимум 1 свободная подписка на
основной и дополнительные каналы обновления ПО. Например, у вас есть 6
зарегистрированных лицензионных ключей и 6 описанных серверов.
Необходимо освободить 1 подписку на каналы ПО в настройках любого
сервера. Для этого нужно выбрать сервер, далее перейти в закладку
Software -> Software Channels. В ней выбрать:
Base Channel: None - disable this service.
Также нужно снять все подписки на дополнительные каналы ПО.
При запуске программы возможно возникновение ошибки:
No rhnuuid config option found in /etc/sysconfig/rhn/up2date-uuid.
В данном случае нужно создай данный файл и добавить следующую информацию:
uuid[comment]=Universally Unique ID for this server
rhnuuid=1e4c1cf1-2bcd-4b88-b988-d6b1a6fd1f51
Где значение для параметра rhnuuid создается при помощи программы uuidgen.
В результате выполнения команды gensystemid создается xml файл systemid
с описанием системы и некоторых параметров специально для RHN.
Аналогичный файл создается и при регистрации в RHN при помощи
стандартных средств ОС. По умолчанию он сохраняется в директории
/etc/sysconfig/rhn, так что по идее можно его просто скопировать в
/opt/mrepos/rhel5s-x86_64/ и mrepo будет его использовать.
Используем следующие конфигурационные файлы:
Основной конфигурационный файл для утилиты mrepo:
cat /etc/mrepo.conf
### Configuration file for mrepo
### The [main] section allows to override mrepo's default settings
### The mrepo-example.conf gives an overview of all the possible settings
[main]
srcdir = /opt/mrepos
wwwdir = /opt/mrepos/www
confdir = /etc/mrepo.conf.d/
hardlink = yes
shareiso = yes
arch = x86_64
mailto = root@localhost
smtp-server = localhost
#rhnlogin = rhnlogin:rhnpassword
metadata = repomd repoview yum apt
### Any other section is considered a definition for a distribution
### You can put distribution sections in /etc/mrepo.conf.d/
### Examples can be found in the documentation at:
### /usr/share/doc/mrepo-0.8.6/dists/.
Дополнительный конфигурационный файл для утилиты mrepo. Он описывает
логику создания репозитория для RHEL 5.
В разделе iso данного конфигурационного файла добавил 3-и диска
скачанные из RHN. Удобно, когда установочные диски доступны для сетевой
установки.
cat /etc/mrepo.conf.d/rhel5s.conf
### Name: Red Hat Enterprise Server v5
### URL: http://www.redhat.com/
[rhel5s]
name = Red Hat Enterprise Server $release ($arch)
release = 5
#arch = i386 x86_64 ia64 ppc s390 s390x
arch = x86_64
metadata = repomd repoview yum apt
### ISO images
#iso = rhel-$release-server-$arch-disc?.iso rhel-$release-server-srpms-disc?.iso
iso = rhel-server-5.3-x86_64-dvd.iso rhel-server-5.3-source-dvd.iso rhel-server-supplementary-5.3-x86_64-disc1.iso
AddDescription "CentOS 2 for x86" centos2-i386
AddDescription "CentOS 3 for x86" centos3-i386
AddDescription "CentOS 4 for alpha" centos4-alpha
AddDescription "CentOS 4 for IA64" centos4-ia64
AddDescription "CentOS 4 for ppc" centos4-ppc
AddDescription "CentOS 4 for s/390" centos4-s390
AddDescription "CentOS 4 for s/390x" centos4-s390x
AddDescription "CentOS 4 for sparc" centos4-sparc
AddDescription "CentOS 4 for x86" centos4-i386
AddDescription "CentOS 4 for x86_64" centos4-x86_64
AddDescription "CentOS 5 for alpha" centos5-alpha
AddDescription "CentOS 5 for IA64" centos5-ia64
AddDescription "CentOS 5 for ppc" centos5-ppc
AddDescription "CentOS 5 for s/390" centos5-s390
AddDescription "CentOS 5 for s/390x" centos5-s390x
AddDescription "CentOS 5 for sparc" centos5-sparc
AddDescription "CentOS 5 for x86" centos5-i386
AddDescription "CentOS 5 for x86_64" centos5-x86_64
AddDescription "Fedora Core 1 for x86" fc1-i386
AddDescription "Fedora Core 1 for x86_64" fc1-x86_64
AddDescription "Fedora Core 2 for x86" fc2-i386
AddDescription "Fedora Core 2 for x86_64" fc2-x86_64
AddDescription "Fedora Core 3 for x86" fc3-i386
AddDescription "Fedora Core 3 for x86_64" fc3-x86_64
AddDescription "Fedora Core 4 for x86" fc4-i386
AddDescription "Fedora Core 4 for PPC" fc4-ppc
AddDescription "Fedora Core 4 for x86_64" fc4-x86_64
AddDescription "Fedora Core 5 for x86" fc5-i386
AddDescription "Fedora Core 5 for PPC" fc5-ppc
AddDescription "Fedora Core 5 for x86_64" fc5-x86_64
AddDescription "Fedora Core 6 for x86" fc6-i386
AddDescription "Fedora Core 6 for PPC" fc6-ppc
AddDescription "Fedora Core 6 for x86_64" fc6-x86_64
AddDescription "Red Hat Linux 6.2 for x86" rh62-i386
AddDescription "Red Hat Linux 7.3 for x86" rh73-i386
AddDescription "Red Hat Linux 8.0 for x86" rh80-i386
AddDescription "Red Hat Linux 9 for x86" rh9-i386
AddDescription "Red Hat Advanced Server 2.1 for x86" rhel2.1as-i386
AddDescription "Red Hat Advanced Server 3 for PPC" rhel3as-ppc
AddDescription "Red Hat Advanced Server 3 for s/390" rhel3as-s390
AddDescription "Red Hat Advanced Server 3 for x86" rhel3as-i386
AddDescription "Red Hat Advanced Server 3 for x86_64" rhel3as-x86_64
AddDescription "Red Hat Advanced Server 4 for IA64" rhel4as-ia64
AddDescription "Red Hat Advanced Server 4 for PPC" rhel4as-ppc
AddDescription "Red Hat Advanced Server 4 for s/390" rhel4as-s390
AddDescription "Red Hat Advanced Server 4 for x86" rhel4as-i386
AddDescription "Red Hat Advanced Server 4 for x86_64" rhel4as-x86_64
AddDescription "Red Hat Advanced Server 5 for IA64" rhel5as-ia64
AddDescription "Red Hat Advanced Server 5 for PPC" rhel5as-ppc
AddDescription "Red Hat Advanced Server 5 for s/390" rhel5as-s390
AddDescription "Red Hat Advanced Server 5 for x86" rhel5as-i386
AddDescription "Red Hat Advanced Server 5 for x86_64" rhel5as-x86_64
AddDescription "Red Hat Enterprise Server 3 for x86" rhel3es-i386
AddDescription "Red Hat Enterprise Server 3 for x86_64" rhel3es-x86_64
AddDescription "Red Hat Enterprise Server 4 for x86" rhel4es-i386
AddDescription "Red Hat Enterprise Server 4 for x86_64" rhel4es-x86_64
AddDescription "Red Hat Enterprise Server 5 for x86" rhel5es-i386
AddDescription "Red Hat Enterprise Server 5 for x86_64" rhel5es-x86_64
AddDescription "Red Hat Workstation 3 for x86" rhel3ws-i386
AddDescription "Red Hat Workstation 3 for x86_64" rhel3ws-x86_64
AddDescription "Red Hat Workstation 4 for x86" rhel4ws-i386
AddDescription "Red Hat Workstation 4 for x86_64" rhel4ws-x86_64
AddDescription "Red Hat Workstation 5 for x86" rhel5ws-i386
AddDescription "Red Hat Workstation 5 for x86_64" rhel5ws-x86_64
AddDescription "SuSE Enterprise Server 8 for i386" sles8-i386
AddDescription "SuSE Enterprise Server 9 for i386" sles9-i386
AddDescription "Tao Linux 1 for i386" tao1-i386
AddDescription "Tao Linux 1 for x86_64" tao1-x86_64
AddDescription "Tao Linux 4 for i386" tao4-i386
AddDescription "Tao Linux 4 for x86_64" tao4-x86_64
AddDescription "Yellow Dog Linux 3.0 for PPC" yd3-ppc
AddDescription "Yellow Dog Linux 4.0 for PPC" yd4-ppc
</Directory>
### Name based virtual-host named "mrepo"
### """"""""""""""""""""""""""""""""""""
### The purpose of this virtual host is to provide a URL http://mrepo/
### as a standard on your local network and map it to the correct IP
### for the different networks that have access to it.
#
#NameVirtualHost mrepo:80
#
#<VirtualHost mrepo:80>
# ServerName mrepo
# ServerAlias mrepo.3ti.be mrepo.localdomain
# DocumentRoot /var/www/mrepo
# ErrorLog logs/mrepo-error_log
# CustomLog logs/mrepo-access_log combined
#</VirtualHost>
После изменения конфигурационный файлов запускаем утилиту mrepo:
mrepo -ugvvvv
Начнется процесс скачивания ПО со всех серверов перечисленных в
конфигурационном файле. Также подмонтируются все iso образы, которые
расположены в папке /opt/mrepos/ и указаны в конфигурационном файле в
параметре iso.
echo "rpm http://SERVERNAME/mrepo/ rhel5s-x86_64 os updates" >> /etc/apt/sources.list
Для обновления данного репозитория достаточно запускать mrepo -ugvvvv по
требованию.
Решение проблем:
Во время настройки репозитория возникли 2-е проблемы:
1) Старая версия lftp клиента, у меня была установлена версия 3.7.1. Она
некорректно работает с hardlink`ами. То есть иногда обновления
репозитория зависало на этапе удаления пакета и его скачивания или
просто входило в бесконечный цикл на данном этапе. Проблема решилась
обновлением версии клиента до 3.7.8.
2) Скачивание пакетов из RHN. Пришлось после регистрации клиента при
помощи gensystemid зайти в WEB интерфейс RHN и подписать сервер
SERVERNAME-ARCH-mrepo на все доступные каналы распространения ПО. После
этого подключение к RHN из утилиты mrepo стало проходить без проблем.
Но если в вашем случае и это не поможет. То укажите логин и пароль от
RHN в основном конфигурационном файле в параметре rhnlogin.
1278 Прочтений • [Создание копии репозитория rpm пакетов при помощи mrepo (rpm packet redhat fedora)] [08.05.2012] [Комментариев: 0]