вторник, 20 декабря 2016 г.

Шпаргалка по rpmbuild

Пересборка src.rpm:

    rpmbuild --rebuild xxx.src.rpm

Распковка src.rpm:

    rpm2cpio xxx.src.rpm | cpio --extract --make-directories --verbose

Частичная сборка:

    rpmbuild --short-circuit -b<id> --target $(uname -m) ~/rpmbuild/SPECS/xxx.spec

Где id - идентификатор секции в spec-файле:
%prep - p ( -bp )
%build - c ( -bc )
%install - i ( -bi )
%files - l ( -bl )

Полная сборка:

Выполняется после того, как последовательно прошлись по всем шагам:
    rpmbuild -ba --target $(uname -m) --clean ~/rpmbuild/SPECS/xxx.spec

Генерация gpg-ключа для подписывания пакетов:

gpg --gen-key

Добавление подписи к пакету: 

rpm --add-sign xxx.rpm

Автоматическое добавление подписи к пакету:

Сначала необходимо посмотреть список сгенерённых ключей:
$ gpg --fingerprint
/home/grin/.gnupg/pubring.gpg
-----------------------------
pub   2048R/8EF3B046 2015-01-26
      Key fingerprint = EBBC 7265 2A5E B117 E397  E63E FE30 9913 8EF3 B046
uid                  Rinat Gadelshin <rgadelsh@gmail.com>
sub   2048R/97A7AD93 2015-01-26

pub   2048R/52D7329A 2015-01-26
      Key fingerprint = 565C 5622 BD66 F17B DDB0  0378 CBF8 F0C1 52D7 329A
uid                  Rinat Gadelshin (grin) <rgadelsh@gmail.com>
sub   2048R/A394DD73 2015-01-26

Далее в файл ~/.rpmmacros необходимо добавить следующие строки:
%_signature gpg
%_gpg_name Rinat Gadelshin (grin) <rgadelsh@gmail.com>
 

По сути, мы прописываем строку uid, относящуюся к выбранному ключу (52D7329A из вывода команды gpg --fingerprint). Видно что для нашего ключа строка содержит комментарий (grin), а для другого ключа ( 8EF3B046 ) комментарий не содержится.