Создание локального репозитория для CentOS

В категорії Статьї от 3 Лютого, 2012. Автор admin

Ставим служебный софт:

yum install -y createrepo

Создаем папку для хранения пакетов:
mkdir -p /var/www/html/repository

Или, если нужно несколько архитектур и версий ПО:
mkdir -p /var/www/html/repository/5/x86_64
mkdir -p /var/www/html/repository/5/i368
mkdir -p /var/www/html/repository/6/x86_64
mkdir -p /var/www/html/repository/6/i386

Синхронизируем наш репозиторий с одни из официальных зеркал CentOS:
rsync -iavrt rsync://ftp.tlk-l.net/pub/mirrors/centos.org/5.7/updates/i386/RPMS/ /var/www/html/repository/5/i368
rsync -iavrt rsync://ftp.tlk-l.net/pub/mirrors/centos.org/5.7/updates/x86_64/RPMS/ /var/www/html/repository/5/x86_64
rsync -iavrt rsync://ftp.tlk-l.net/pub/mirrors/centos.org/6.2/updates/i386/Packages/ /var/www/html/repository/6/i386
rsync -iavrt rsync://ftp.tlk-l.net/pub/mirrors/centos.org/6.2/updates/x86_64/Packages/ /var/www/html/repository/6/x86_64

Запускаем генерацию метаданных репозитория:
createrepo /var/www/html/repository/5/x86_64
createrepo /var/www/html/repository/5/i368
createrepo /var/www/html/repository/6/x86_64
createrepo /var/www/html/repository/6/i386

После этого в каждой папке создастся папка repodata с данными о всех наших пакетах/
Теперь нам необходимо настроить Apache, чтобы указанная папка была полностью доступна по протоколу HTTP.
В итоге получится страница http://repo.domain/repository на которой будут видны папки 5 и 6, далее нужная архитектура и сами пакеты.

Теперь наш репозиторий необходимо подключить к клиентской машинке, создаем файл описание репозитория:
vi /etc/yum.repos.d/myrepo-centos.repo

Вставляем в него следующее:
[myrepo-centos]
name=My Personal Yum Repo
baseurl=http://repo.domain/repository/5/$basearch
enabled=1
# not secure
gpgcheck=0

[myrepo-centos]
name=My Personal Yum Repo
baseurl=http://repo.domain/repository/6/$basearch
enabled=1
# not secure
gpgcheck=0

Запускаем yum update для проверки нашего репозитория.

Если в процессе выполнения команды yum repolist получаем подобную ошибку:
http://updates/repo/centos/5.3/updates/repodata/primary.xml.gz: [Errno -3] Error performing checksum
Trying other mirror.
primary.xml.gz | 376 kB 00:00
http://updates/repo/centos/5.3/updates/repodata/primary.xml.gz: [Errno -3] Error performing checksum
Trying other mirror.
Error: failure: repodata/primary.xml.gz from Updates: [Errno 256] No more mirrors to try.

То исрпвить ее можно персоздав метаданные пакетов такой командой:
createrepo -v -s sha1 /var/www/html/repository/5/x86_64
createrepo -v -s sha1 /var/www/html/repository/5/i368
createrepo -v -s sha1 /var/www/html/repository/6/x86_64
createrepo -v -s sha1 /var/www/html/repository/6/i386

Далее:
$ yum clean all
Loaded plugins: fastestmirror
Cleaning up Everything
Cleaning up list of fastest mirrors

$ yum repolist
Loaded plugins: fastestmirror
Determining fastest mirrors
Updates | 1.0 kB 00:00
primary.xml.gz | 367 kB 00:00
Updates 634/634
repo id repo name status
Updates Updates enabled : 634
repolist: 634

Теги: ,