The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Создание копии репозитория rpm пакетов при помощи mrepo (rpm packet redhat fedora)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: rpm, packet, redhat, fedora,  (найти похожие документы)
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. Устанавливаем данный пакеты следующими командами: rpm -iUhv http://dag.wieers.com/rpm/packages/createrepo/createrepo-0.4.8-1.el5.rf.noarch.rpm rpm -iUhv http://contrib.ru/sites/default/files/mrepo-0.8.6-1.noarch.rpm Для создания создания репозитория для утилиты apt требуется, чтобы данный пакет был установлен на том сервере, где создается репозиторий. Подготовка закончена. Настройка сервера: После установки всех необходимых пакетов приступаем к созданию инфраструктуры репозитория. В данной статье все файлы репозитория располагаются в папке /opt/mrepos. Советую выделить под данный раздел не менее 40 Gb дискового пространства, так как зеркалирование 2-3 крупных репозиториев (epel, rpmforge, ovzkernel) занимает достаточно много места. У меня данный раздел оформлен как LVM партиция, чтобы можно было сделать resize или снапшот в случае необходимости. Для доступа других серверов к репозиторию - необходимо установить на сервере любой WEB сервер. По умолчанию, в составе пакета mrepo идет конфигурационный файл для WEB сервера apache. lvcreate -n repos -L 40G VG0 mkdir /opt/mrepos/ mkfs.ext3 /dev/VG0/repos echo "/dev/VG0/repos /opt/mrepos ext3 defaults 0 0" >> /etc/fstab mount -a Настройка утилиты mrepo: mkdir /opt/mrepos/rhel5s-x86_64 Теперь регистрируем нашу систему в Red Hat Network. gensystemid -u RHN_user -p RHN_password --release=5Server --arch=x86_64 /opt/mrepos/rhel5s-x86_64/ Для успешной регистрации необходимо как минимум 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 ### Additional repositories updates = rhns:///rhel-$arch-server-5 vt = rhns:///rhel-$arch-server-$repo-5 supplementary = rhns:///rhel-$arch-server-$repo-5 fastrack = rhns:///rhel-$arch-server-$repo-5 rhn-tools = rhns:///$repo-rhel-$arch-server-5 ### RPMforge repository #rpmforge = rsync://apt.sw.be/pub/freshrpms/pub/dag/redhat/el$release/en/$arch/RPMS.dag/ #rpmforge = ftp://apt.sw.be/pub/dag/pub/redhat/el$release/en/$arch/RPMS.dag/ rpmforge = http://apt.sw.be/redhat/el$release/en/$arch/RPMS.dag/ ### OpenVZ repositories ovzkernel = http://download.openvz.org/kernel/rhel5/ ovztemplate = http://download.openvz.org/template/ ovzutils = http://download.openvz.org/utils/ ### Fedora EPEL packages (incompatible with RPMforge) epel = http://download.fedora.redhat.com/pub/epel/$release/$arch/ ### Custom repository for your own RPM packages custom = Конфигурационный файл WEB сервера Apache: cat /etc/httpd/conf.d/mrepo.conf ### Directory-based for the main server Alias /mrepo /opt/mrepos/www Alias /yam /opt/mrepos/www <Directory /opt/mrepos/www> Options Indexes FollowSymlinks SymLinksifOwnerMatch IncludesNOEXEC IndexOptions NameWidth=* DescriptionWidth=* ### Authentication options #order deny,allow #deny from all #allow from 127.0.0.1 #allow from horsea.3ti.be #allow from pikachu.3ti.be #AuthUserFile /var/mrepo/auth/.htpasswd #Require user bert dag dries thias HeaderName HEADER.shtml ReadmeName README.shtml AddDescription "CDROM ISO file" .iso AddDescription "RPM packages" .rpm AddDescription "Yum 1.x header file" .hdr AddDescription "Mounted CDROM ISO" CD[0-9] AddDescription "Mounted CDROM ISO" disc[0-9] AddDescription "All RPM packages merged" RPMS.all AddDescription "Custom local RPM packages" RPMS.local AddDescription "OS RPM packages" RPMS.core AddDescription "OS RPM packages" RPMS.os AddDescription "OS update RPM packages" RPMS.updates AddDescription "YaST Online Update RPM packages" RPMS.you AddDescription "3rd party RPM packages" RPMS. AddDescription "OS source RPM packages" SRPMS AddDescription "Apt metadata" base AddDescription "Old-style Yum metadata" headers AddDescription "New-style Yum metadata" repodata AddDescription "Temporary Yum metadata" .newheaders 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. Настройка клиента: Для клиента yum: Основной репозиторий RHN cat /etc/yum.repos.d/a.os.repo [os] name=Main repository baseurl=http://SERVERNAME/mrepo/rhel5s-x86_64/RPMS.os/ enabled=1 gpgcheck=0 Обновления из репозиторий RHN cat /etc/yum.repos.d/b.updates.repo [updates] name=Updates repository baseurl=http://SERVERNAME/mrepo/rhel5s-x86_64/RPMS.updates/ enabled=1 gpgcheck=0 Для клиента apt: 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.

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1, anonymouse (?), 22:45, 29/07/2009 [ответить]  
  • +/
    для параметра "iso = rhel-server-5.3-x86_64-dvd.iso rhel-server-5.3-i386-dvd.iso" (в случае зеркалирования нескольких архитектур) лучше использовать одну запись rhel-server-5.3-$arch-dvd.iso. Иначе в директории iso все архитектуры будут свалены в кучу.
     
  • 2, snv (ok), 12:08, 19/08/2009 [ответить]  
  • +/
    rhel5-server-i386: Mirror packages from rhns:///rhel-i386-server-5 to /repos/rhel5-server-i386/updates
    Traceback (most recent call last):
      File "/usr/bin/rhnget", line 519, in ?
        main()
      File "/usr/bin/rhnget", line 500, in main
        mirrorrhn(op.uri, op.destination)
      File "/usr/bin/rhnget", line 354, in mirrorrhn
        systemid = rhnlogin(url, path)
      File "/usr/bin/rhnget", line 321, in rhnlogin
        li = rpcServer.doCall(server.up2date.login, systemid)
      File "/usr/share/mrepo/up2date_client/rpcServer.py", line 246, in doCall
        raise up2dateErrors.CommunicationError(e.args[1])
    up2date_client.up2dateErrors.CommunicationError: Error communicating with server. The message was:
    Connection timed out
    mrepo: Mirroring failed for rhns:///rhel-i386-server-5 with message:
      Failed with return code: 256
    rhel5-server-x86_64: No ISO files found !
    rhel5-server-x86_64: Updating Red Hat Server 5 (x86_64)
     
  • 3, shibog (??), 17:28, 10/02/2010 [ответить]  
  • +/
    из статьи неясно, у клиента стоит yum от RHEL или какой то другой, и если родной, то как он настроен ?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру