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/