Игорь Олемской — практические заметки по системному администрированию Linux CentOS

Архив июня, 2009

Как создать и подписать собственный RPM-репозиторий

2 комментария

Когда администрируешь множество серверов, возникает необходимость централизованного хранения собственных 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/

19.06.2009

Написал Игорь Олемской

Еще более вкусные цены от немецких хостеров :-)

Комментариев нет

http://www.hetzner.de/en/hosting/produktmatrix/rootserver-produktmatrix/

13.06.2009

Написал Игорь Олемской

Рубрики: Мои записи

Теги: , ,

CentOS: ночная перезагрузка monit и неправильные оповещения из-за logrotate

Комментариев нет

Если Вы активно используете monit для почтовых оповещений, то наверняка столкнулись с его ночными перезагрузками и ложными алертами об этом.

Для исправления, нужно перезаписать файл /etc/logrotate.d/monit

/var/log/monit {
    missingok
    notifempty
    copytruncate
    daily
    size 50M
}

Стандартно происходит ротация логов, после чего демону monit отправляется сигнал -HUP и он перечитывает логи и конфиги (делает reload), о чем и сообщает по электронной почте.
А новом файле конфигурации, за счет «copytruncate», происходит ротация логов без перезапуска monit.

01.06.2009

Написал Игорь Олемской