yum install -y createrepo
Создаем папку для хранения пакетов:
mkdir -p /var/www/html/centos_repository
cd /var/www/html/centos_repository
Теперь необходимо положить тестовый пакет в наше репозиторий:
wget http://fastvps.googlecode.com/files/mpt-status-1.2.0_RC7-3.i386.rpm
Запускаем генерацию метаданных репозитория:
createrepo .
После этого будет сгенерирована служебная папка repodata с данными о всех наших пакетах:
./mpt-status-1.2.0_RC7-3.i386.rpm
./repodata
./repodata/repomd.xml
./repodata/other.xml.gz
./repodata/filelists.xml.gz
./repodata/primary.xml.gz
Теперь нам необходимо настроить Apache, чтобы указанная папка была полностью доступна по протоколу HTTP, это осильте сами, пожалуйста.
В итоге у нас получится веб-страница http://repo.domain.ru/centos_repository с одним файлом mpt-status-1.2.0_RC7-3.i386.rpm и папкой repodata, но "правильные" репозитории выглядят немного иначе: http://mirror.yandex.ru/epel/5/
То есть внутри папки репозитория создается папка 5, соответствующая версии дистрибутива, далее создаются подпапки под требуемые архитектуры i386, x86_64 или даже SRPMS, а уже внутри них располагаются rpm пакеты и папка repodata. Если так делают сильные мира сего, то и мы поступим аналогично, чтобы не получить помойки с пакетами (например, такой как у OpenVZ репозитория - http://download.openvz.org/kernel/branches/rhel5-2.6.18/current/ и как следствие этой "помойки" при установке пакетов из их репозитория приходится явно указывать его (пакета) платформу, то есть вместо "package" приходится писать "package.x86_64", что крайне неудобно).
Переделываем на "как правильно":
rm -rf /var/www/html/centos_repository
mkdir /var/www/html/centos_repository
cd /var/www/html/centos_repository
mkdir 5
cd 5
mkdir {i386,x86_64,SRPMS}
cd x86_64
wget http://fastvps.googlecode.com/files/mpt-status-1.2.0_RC7-3.i386.rpm
cd ..
Создаем repodata:
createrepo i386
Saving Primary metadata
Saving file lists metadata
Saving other metadata
createrepo x86_64/
1/1 - mpt-status-1.2.0_RC7-3.i386.rpm
Saving Primary metadata
Saving file lists metadata
Saving other metadata
createrepo SRPMS/
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Если же в процессе эксплуатации репозитория Вы планируете добавлять новые пакеты, то используйте другой синтаксис createrepo:
createrepo --update x86_64
createrepo --update i386
createrepo --update SRPMS
Теперь немного автоматизации для удобного апдейта репо:
vi /var/www/html/centos_repository/5/Makefile
Со следующим контентом:
update:
createrepo --update x86_64
createrepo --update i386
createrepo --update SRPMS
Теперь обновление репозториев при добавлении новых пакетов можно делать вот так:
make -C /var/www/html/centos_repository/5 update
Теперь наш репозиторий необходимо подключить к клиентской машинке (у меня она 64 битная, и с 32 битной мой пример работать не будет), создаем файл описание репозитория:
vi /etc/yum.repos.d/myrepo-centos.repo
Со следующим содержанием:
[myrepo-centos]
name=My Personal Yum Repo
baseurl=http://domain.ru/centos_repository/5/$basearch
enabled=1
# not secure
gpgcheck=0
Теперь запускаем yum и убеждаемся, что не выдано никаких ошибок в отношении нашего репозитория:
yum update
Получаем информацию о тестовом пакете в нашем репозитории:
yum info mpt-status
Loaded plugins: fastestmirror, versionlock
Loading mirror speeds from cached hostfile
* addons: ftp.plusline.de
* base: centos.copahost.com
* epel: mirror.andreas-mueller.com
* extras: ftp.plusline.de
* openvz-kernel-rhel5: openvz.copahost.com
* openvz-utils: openvz.copahost.com
* updates: centos.copahost.com
Reading version lock configuration
Available Packages
Name : mpt-status
Arch : i386
Version : 1.2.0_RC7
Release : 3
Size : 27 k
Repo : myrepo-centos
Summary : MPT Fusion raid inquiry tool
URL : http://www.drugphish.ch/~ratz/mpt-status/
License : GPL
Description: mpt-status give informations about raid status for LSI Fusion controllers.
: This is quite a modified version to the original mpt-status-1.0 package.
Ставим его (собственно, ради этого все и затевалось):
yum install -y mpt-status
Ну вот и все :)
Добавление новых пакетов в репозиторий
Просто кладем новые rpm в папку, соответствующую архитектуре и после этого делаем --update, как указано выше. Как результат увидим следующее:
make
createrepo --update x86_64
2/2 - vzprocps-2.0.11-6.13.swsoft.i386.rpm
Saving Primary metadata
Saving file lists metadata
Saving other metadata
createrepo --update i386
2/2 - vzprocps-2.0.11-6.13.swsoft.i386.rpm
Saving Primary metadata
Saving file lists metadata
Saving other metadata
createrepo --update SRPMS
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Источник: http://blog.kagesenshi.org/2007/01/howto-creating-your-own-yum-rpm.html
Со следующим контентом:
ReplyDeleteupdate:
createrepo --update x86_64
createrepo --update i386
createrepo --update SRPMS
======
Перед createrepo необходим таб! Иначе ругается.
посмотреть, что в нужной репе (кроме уже установленного оттуда)
ReplyDelete# yum —disablerepo «*» —enablerepo «base» list available
с установленным хз, без available выдаст +вообще все поставленные пакеты