Когда администрируешь множество серверов, возникает необходимость централизованного хранения собственных RPM-пакетов. В этой статье описано, как создать RPM-репозиторий и как сделать gpg-подпись пакетов, хранимых в этом репозитории.
Как создать подпись
Генерируем новый gpg-ключ
mkdir ~/.gnupg gpg --gen-key
Если gpg выдаст ошибку типа
Not enough random bytes available. Please do some other work to give the OS a chance to collect more entropy! (Need 277 more bytes)
можно параллельно выполнить трудоемкую операцию, к примеру,
tar -jcvf tmp.tar.bz2 /usr
Это ускорит генерацию ключа. Когда ключ будет создан, не забудьте удалить tmp.tar.bz2. 😉
Теперь можно сделать экспорт ключа (к примеру, чтобы дальше он был доступен по ссылке rpms.southbridge.ru/RPM-GPG-KEY-southbridge).
gpg --list-keys gpg --export -a 'Igor Olemskoi' > /var/www/rpms.southbridge.ru/htdocs/RPM-GPG-KEY-southbridge
Теперь ключ можно импортировать командой
rpm --import http://rpms.southbridge.ru/RPM-GPG-KEY-southbridge
Проверить список пакетов в RPM-базе можно командой
rpm -q gpg-pubkey --qf '%{name}-%{version}-%{release} --> %{summary}\n'
Чтобы в пакеты автоматом добавлялась подпись, можно создать ~/.rpmmacros со следующим содержанием («Igor Olemskoi» нужно заменить на данные, которые заполняли при создании ключа)
%_signature gpg %_gpg_name Igor Olemskoi
Чтобы подписать уже существующий rpm, нужно запустить
rpm --addsign mytool.x64_86.rpm
Если пакет ранее уже был подписан, --addsign замените на --resign.
Чтобы подписать пакет во время сборки, нужно добавить опцию --sign, к примеру
rpmbuild -ba --sign mytool.spec
Как создать RPM-репозиторий
Создайте сайт, на котором будут размещены пакеты, а на нем дерево папок, к примеру (htdocs — корень сайта rpms.southbridge.ru)
htdocs/SRPMS htdocs/i386 htdocs/x86_64 htdocs/RPM-GPG-KEY-southbridge
Остается лишь разместить готовые rpm/srpm-пакеты в соответствующие папки, после чего для каждой из папок запустить createrepo (эту операцию следует выполнять после каждого изменения файлов)
createrepo htdocs/SRPMS createrepo htdocs/i386 createrepo htdocs/x86_64
В случае, если createrepo в системе нет, установить можно командой
yum install createrepo
Как использовать собственный RPM-репозиторий
Добавьте файл /etc/yum.repos.d/southbridge.repo, к примеру, такого содержания
[southbridge] name=Southbridge Repository gpgcheck=1 gpgkey=http://rpms.southbridge.ru/RPM-GPG-KEY-southbridge enabled=1 baseurl=http://rpms.southbridge.ru/$basearch/
С днём рождения, дружище! 🙂
madwolfa
16.07.2009 в 9:49
Спасибо 🙂
Игорь Олемской
16.07.2009 в 11:40
Отличная статья спасибо, развернул у нас репу )))
linuxoid69
22.09.2017 в 15:55