How to create GnuPG RPM

Ivan Boldyrev <[email protected]> Fri, 29 Aug 2003 00:52:30 +0700
Newsgroups gmane.comp.security.pgp-n-gpg
Organization this field is intentionally left blank
Message-ID <[email protected]>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Я скачал gnupg-1.2.3 и решил сделать соответствующий RPM-пакет (просто
для удобства установки и дальнейшего апгрейда).

Для тех, кто не знает: RPM -- это Redhat Package Manager, набор утилит
и формат файла для установки и удаления программ (и вообще всего, что
сможете. :) Кроме Redhat Linux, на RPM основаны дистрибутивы Mandrake
Linux, который я и использую, ASPLinux, ALT Linux и др.  Аналогом
RPM-файлов в Debian Linux является deb-файлы.

Итак, пусть мы скачали gnupg-1.2.3.tar.gz, проверили MD5-хеш и подпись
Вернера Коха. :) gnupg-1.2.3.tar.bz2 упакован не совсем правильно
(если вы не собираетесь использовать RPM, то этот архив подойдёт; но
для сборки PRM в нём нужно либо подправить один файл, либо пересжать в
.tar.gz; об этом ниже).

Итак, пусть у вас есть gnupg-1.2.3.tar.gz.  Самый простой способ
получения RPM-файла -- это выполнить команду

$ rpm -tb gnupg-1.2.3.tar.gz

от имени пользователя root.  Немного подождав, пока всё
скомпилируется, вы получите либо RPM, расположенный где-нибудь
в /usr/src/RPM/RPMS/$ARCH, где $ARCH -- тип архитектуры компьютера (у
меня результат оказался в /usr/src/RPM/RPMS/i586/).  Однако вы можете
получить и сообщение об ошибке; в этом случае я советую попробовать
скомпилировать GnuPG обычным ./configure && make для выяснения причины
ошибки.

На самом деле при построении RPM выполняется и ./configure, и make, и
даже make install (только со специальными параметрами).  Параметры и
всё остальное берётся из spec-файла, который заботливые создатели
GnuPG положили в исходники.  Я не знаю, как можно передать в
./configure специальные параметры, кроме как подправив spec-файл (это
файл gnupg-1.2.3/gnupg.spec из архива.

Например, мы хотим передать в ./configure ключ --enable-sha512.  Берём
gnupg.spec и редактируем: в конец строки

%configure --program-prefix=%{?_program_prefix:%{_program_prefix}}

добавляем --enable-sha512:

%configure --program-prefix=%{?_program_prefix:%{_program_prefix}} --enable-sha512

Теперь есть две возможности: либо создать новый архив (только с тем же
именем gnupg-1.2.3.tar.gz!) и повторить вышеописанный процесс, либо
сделать финт ушами: положить gnupg-1.2.3.tar.gz в /usr/src/RPM/SOURCES
и выполнить команду:

$ rpm -bb gnupg.spec

Пакет соберётся и снова окажется в /usr/src/RPM/RPMS/$ARCH.

Если вы скачали .tar.bz2, то его можно превратить в .tar.bz вот такой
командой:

$ bzcat gnupg-1.2.3.tar.bz2 | gzip > gnupg-1.2.3.tar.gz

(вот почему я люблю Unix! :) и свести задачу к предыдущей, либо
изменить неправильный spec-файл: строку

Source: ftp://ftp.gnupg.org/gcrypt/gnupg/%{name}-%{version}.tar.gz

заменить на 

Source: ftp://ftp.gnupg.org/gcrypt/gnupg/%{name}-%{version}.tar.bz2

(имя файла извлекается из строки Source; именно поэтому важно
сохранить имя файла при модификации; не обращайте внимания на то, что
это URL -- файл не скачивается с сервера автоматически :), после чего
перепаковать tar.bz2-архив либо воспользоваться финтом ушами.

Маленькое замечание напоследок: GnuPG зависит от других библиотек.
Поэтому, если вы хотите, к примеру, поддержку LDAP-серверов, то нужно
установить какую-нибудь библиотеку для работы с LDAP, которую
поддерживает GnuPG.  И не только сам пакет библиотеки, но и
соответствующий devel-пакет, который после компиляции можно удалить.

Теперь допустим, вы хотите передать пакет своему товарищу и подписать
его, чтобы товарищ мог проверить, не подменил ли кто-нибудь пакет.
Для этого нужно создать один конфигурационный файл для утилиты rpm и
потом поставить подпись.

Конфигурационный файл называется .rpmmacros, должен он находиться в
домашнем каталоге подписывающего пользователя и содержать должен
следующее:

%_signature gpg 
%_gpg_name ваш_keyId
%_gpgbin  /usr/bin/gpg

В _gpg_name вы указываете ключ, которым собираетесь подписывать.  Можно
просто указать один из UID, например, "Ivan Boldyrev".

Подпись ставиться такой командой:

rpm --addsign имя_файла

имя_файла -- это имя файла пакета, который вы подписываете.  Вы должны
иметь право на запись в этот файл.

После чего любой, у кого есть ваш открытый ключ, может проверить
целостность пакета:

$ rpm --checksig -v gnupg-1.2.3-1.i586.rpm
gnupg-1.2.3-1.i586.rpm:
MD5 sum OK: de924203cb41c128c000480b7b0c94eb
gpg: Signature made Птн 29 Авг 2003 00:46:21 NOVST using DSA key ID 56098673
gpg: Good signature from "Ivan Boldyrev (NRCGIT) <[email protected]>"


Обновить gpg с помощью собранного пакета можно как обычно, командой

$ rpm -Fhv gnupg-1.2.3-1.i586.rpm

- -- 
Ivan Boldyrev

      "Сборка японского велосипеда требует величайшего спокойствия духа."
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)

iD8DBQE/TkFipb3RmFYJhnMRAgpEAKC3whee0Dt3FN3eLmv8AyfCO8/XYACeMHmx
5EddxQrKAmXbjimTBXy07PU=
=TTU5
-----END PGP SIGNATURE-----

------------------------ Yahoo! Groups Sponsor ---------------------~-->
Buy Ink Cartridges or Refill Kits for Your HP, Epson, Canon or Lexmark
Printer at Myinks.com. Free s/h on orders $50 or more to the US & Canada. http://www.c1tracking.com/l.asp?cid=5511
http://us.click.yahoo.com/l.m7sD/LIdGAA/qnsNAA/MFQulB/TM
---------------------------------------------------------------------~->

----------------- COMMUNITY ADDRESSES -------------------------~->
Post message: [email protected] 
Moderators: [email protected]
News: news://news.gmane.org/gmane.comp.security.pgp-n-gpg
Off-Topic List: PGP-n-GPG-Off-Topic-subscribe-hHKSG33TihhbjbujkaE4pw@public.gmane.org
Unsubscribe:  [email protected]












 

Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/