5
января
2

Настройка локального репозитория yum RedHat



YUM (Yellow dog Updater, Modified) — открытый консольный менеджер RPM-пакетов. Yum корректно обрабатывает зависимости и обеспечивает работу с несколькими репозиториями. Кроме того, он поддерживает установку пакетов группами — можно дать утилите задание обработать определенную группу приложений и она установит все приложения данной группы. Это существенно упрощает процедуры в случае управления многими машинами.

Yum создан для решения следующих задач:

— Поиск пакетов в репозиториях
— Установка пакетов из репозиториев
— Установка пакетов из .rpm файлов, с разрешением зависимостей с помощью репозиториев
— Обновление версий отдельных пакетов или всей системы
— Удаление ненужных пакетов или приложений из системы

Фактически, yum представляет собой оболочку для rpm обеспечивающую работу с репозиториями.

Рассмотрим пример создания локального репозитария yum на примере RedHat 6.5 64-bit. Главным отличием в настройке от других дистрибутивов линукс будет то, что для работы с репозиториями RedHat необходимо иметь действующую подписку RHN и зарегистрированную в нем систему.

Раннее для регистрации системы в RHN использовалась утилита rhn_register. Начиная с версии RHEL 5.7 и RHEL 6.1 для этих целей используется Subscription Management, при этом осталось возможность использовать rhn_register.

Сначала зарегистрируем нашу систему в RHN. Если для доступа в интернет используется прокси сервер, то его можно задать с помощью опции —proxy (для работы yum прокси задается в файле /etc/sysconfig/rhn/up2date). Для регистрации необходимо иметь учетную запись в RHN:

[root@test ~]# subscription-manager register --proxy=my.proxy.net:3128

Затем, если у нас имеются свободные подписки, мы можем их автоматически назначить для нашей новой системы:

[root@test ~]# subscription-manager attach --auto --proxy=my.proxy.net:3128

Для создания репозитория нам понадобяться утилиты reposync, createrepo. Установим их:

[root@test ~]# yum install yum-utils createrepo

Создадим папку для будущего репозитория:

[root@test ~]# mkdir /space/repository/

Теперь нам необходимо закачать в эту папку rmp пакеты. Для этого у нас есть два способа:
1) примонтировать установочный DVD и скопировать пакеты с него

[root@test ~]# mount /dev/sr0 /mnt/cd
[root@test ~]# cp -a /mnt/cd/Packages/*.rpm /space/repository/

2) закачать пакеты прямо с сервера RHN:

[root@test ~]# reposync -p /space/repository/ --repoid=rhel-x86_64-server-6 -l -n

Далее создаем репозиторий (автоматически сканируется директория с пакетами и создаются файлы репозитория: filelists.xml.gz, other.xml.gz, primary.xml.gz, repomd.xml):

[root@test ~]# createrepo /space/repository/

Для поддержания версий пакетов в актуальном состоянии создадим простой скрипт update-repository.sh и добавим его выполнение в cron:

[root@test ~]# cat /usr/local/bin/update-repository.sh
#!/bin/bash

echo "Update script started at $(date)" >> /var/log/update-repository.log
/usr/bin/reposync -p /space/repository/ --repoid=rhel-x86_64-server-6 -l -n
/usr/bin/createrepo /space/repository/
echo "Update script finished at $(date)" >> /var/log/update-repository.log

[root@test ~]# chmod +x /usr/local/bin/update-repository.sh
[root@test ~]# crontab -l
#Update local yum repository for RHEL 6 64-bit
03 01 * * * /usr/local/bin/update-repository.sh

С других систем доступ к репозиторию можно получить через ftp, http или примонтировав директорию с репозиторием через nfs.
Настроем доступ к нашему репозиторию по http:

[root@test ~]# ln -s /space/repository /var/www/html/repository
[root@test ~]# cat /etc/httpd/conf.d/repository.conf
<Directory "/var/www/html/repository">
Options Indexes +FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

Осталось создать конфигурационный файл yum с новым репозиторием:

[root@test2 ~]# cat /etc/yum.repos.d/local.repo
[local_repo]
name=RHEL 6 64-bit local repository
baseurl=http://191.168.16.25/repository
enabled=1
gpgcheck=0

Проверить наличие и доступность репозиторием на хосте можно с помощью команды yum repolist:

[root@test2 ~]# yum repolist
Loaded plugins: product-id, rhnplugin, security, subscription-manager
This system is receiving updates from RHN Classic or RHN Satellite.
repo id       repo name                       status
local_repo    RHEL 6 64-bit local repository  12,051
Понравилась статья?
Подписаться на RSS feed
2 комментария:
  1. Inkognito 31 марта, 2015

    «[root@test ~]# cat /etc/httpd/conf.d/repository.conf
    Directory «/var/www/html/repository»
    Options Indexes +FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all»

    Закройте тэг Directory, а то ругается.
    А в целом спасибо! Отличный гайд!

  2. admin 1 апреля, 2015

    Спасибо, исправили

Оставить комментарий