Иногда довольно удобно иметь свое локальное зеркало репозитариев, это позволяет снизить количество входящего трафика при обновлении нескольких серверов, а также ускорить сам процесс обновления.
В данной заметке я описал процесс создания локального репозитария для CentOS 5.2, архитектура x86_64. Для репозитария необходим работающий http сервер, wget/rsync и утилита createrepo.
Создаем каталог для репозитария:
host# mkdir -pv /var/www/html/centos/5.2/{os,updates}/x86_64
Base repository.
Просто копируем с инсталяционного DVD-диска каталог CentOS в каталог /var/www/html/centos/5.2/os/x86_64, а файлы ключей RPM-GPG-* в /var/www/html/centos/.
Запускаем утилиту createrepo:
host# createrepo /var/www/html/centos/5.2/os/x86_64
Updates repository.
С обновлениями немного сложнее. Лица, имеющие выход по rsync, идут на CentOS European Mirrors, выбирают себе зеркало и синхронизируются с него.
host# /usr/bin/rsync -iavrt rsync://ftp.tlk-l.net/pub/mirrors/centos.org/5.2/updates/x86_64/ /var/www/html/centos/5.2/updates/x86_64/
Поскольку по rsync копируются не только rpm-ки, а и заголовки репозитария, то запуск createrepo не требуется.
Если же rsync закрыт, то зеркалирование выполняется немного сложнее. На www.opennet.ru я нашел скрипт, при помощи которого можно засинхронизировать каталоги репозитария по HTTP. Сам скрипт пришлось чуточку подправить, чтобы он заработал. Вместо строки:
cut -d"=" $file_html -f4 | cut -d"\"" -f2 | grep rpm | sort > $file_rpms
Пришлось прописать:
cut -d">" $file_html -f4 | cut -d"<" -f1 | grep rpm | sort > $file_rpms
Запуск скрипта:
host# ./mirror.sh http://ftp.tlk-l.net/pub/mirrors/centos.org/5.2/updates/x86_64/RPMS/ /var/www/html/centos/5.2/updates/x86_64/RPMS
После синхронизации каталога updates по HTTP необходимо будет запустить createrepo:
host# createrepo /var/www/html/centos/5.2/updates/x86_64
Ну и, конечно же, вешаем в cron вызов синхронизации каталога updates и запуск createrepo при необходимости.
Подключение локального репозитария.
В файле /etc/yum.repos.d/CentOS-Base.repo указываем наше зеркало:
[base] name=CentOS-$releasever - Base baseurl=http://mirror.domain.ua/centos/$releasever.2/os/$basearch/ gpgcheck=1 gpgkey=http://mirror.domain.ua/centos/RPM-GPG-KEY-CentOS-5 #released updates [update] name=CentOS-$releasever - Updates baseurl=http://mirror.domain.ua/centos/$releasever.2/updates/$basearch/ gpgcheck=1 gpgkey=http://mirror.domain.ua/centos/RPM-GPG-KEY-CentOS-5
Ну а далее, все как обычно:
host# yum check-update
И так далее, и тому подобное…
Постовой
Отличный сайт, где можно выгодно купить настроящие vertu.