Собрать свой rpm

Материал из OSZone.net wiki.

Перейти к: навигация, поиск

Содержание

Собрать свой rpm

Введение

Часто любители source-base дистрибутивов говорят, что они властны над своим компьютером на 100%, а вот пользователи rpm дистрибутивов привязаны именно к нему.

В общем-то они правы, правда есть одно "секретное" решение для пользователя rpm-дистрибутива - это собрать недостающий пакет самому.

Алгоритм сборки

Например, в дистрибутиве не хватает пакета hello

Кратко, и независимо от дистрибутива, алгоритм такой :

Находим исходники

http://www.rpmfind.net http://www.mtu-net.ru/aborovsky/articles/rpm.htm

сорцы пакета hello :

http://www.rpmfind.net/linux/RPM/suse/9.3/i386/suse/src/hello-2.1.1-312.src.html

Смотрим, что требуется для его построения,устанавливаем недостающие пакеты :

http://www.rpmfind.net/linux/rpm2html/search.php?query=hello

aaa_base acl attr bash bind-utils bison bzip2 >= 0.9 coreutils cpio cpp cracklib = 2.7 cvs cyrus-sasl db = 4.3.27 devs diffutils e2fsprogs file filesystem fillup findutils flex gawk gdbm-devel glibc = 2.3.4 glibc-devel glibc-locale gpm grep groff gzip info insserv klogd less libacl = 2.2.30 libattr = 2.4.22 libgcc libnscd libselinux = 1.21.7 libstdc++ libxcrypt = 2.2 libzio m4 = 1.4.2 make man mktemp module-init-tools ncurses ncurses-devel net-tools netcfg openldap2-client openssl pam = 0.78 pam-modules patch permissions popt procinfo procps psmisc pwdutils rcs readline >= 5.0 sed strace syslogd sysvinit tar tcpd = 7.6 texinfo timezone unzip util-linux vim zlib zlib-devel autoconf automake binutils gcc = 3.3.5-5 gdbm gettext libtool perl = 5.8.6 rpm

Скачиваем его
ftp://195.220.108.108/linux/conectiva/CLEE-1.0/SRPMS.core/hello-2.1.1-43.src.rpm

3 Создаём в домашнем каталоге пользователя папку RPM (а в ней папки)
--BUILD
--SOURCE
--SPECS
--RPMS
--SRPMS

Устанавливаем src.rpm

rpm -ihv suse/src/hello-2.1.1-312.src.rpm

В домашнем каталоге пользователя в каталоге RPM/SOURCE появляется исходники (тарболы и патчи к пакету - в данном конкретном случае патчей нет, но это скорее исключение из правила), а в каталоге RPPM/SPECS появляется файл hello.spec

Смотрим содержание spec - файла и корректируем его

Первое - это макросы, определённые в дистрибутиве Suse могут не совпадать с макросами, определёнными в вашем дистрибутиве. Например, аналогичный spec-файл в дистрибутивах ALTLinux отличается от spec-файла дистрибутива Suse или RedHat, подробней, смотри в

Разбор и корректировка Spec-файла

возможно потребуется наложить патч на пакет, или задать какую-нибудь опцию при запуске ./configure, меняем версию пакета (что-бы не перепутать с исходным), документируем свои изменения в changelog (что-бы вспомнить, что изменяли).

Собираем свой бинарный RPM
rpm -ba hello.spec 
(в некоторых дистрибутивах rpmbuild -ba hello.spec далее - везде
просто rpm) и получаем новые rpm и src.rpm
Если нужно для конкретной архитектуры, добавляем ключ --target, 
например :
rpm -ba --target i586 hello.spec
(синтаксис может чуть-чуть различаться, иногда это выглядит так :
rpmbuild -ba --target=i586 hello.spec )

Можно и так :

rpm -bs hello.spec
Получаем новый hello.{ваша версия}.src.rpm
rpm --rebuild --target athlon hello.src.rpm
Получаем новый hello.{ваша версия}.athlon.rpm
Ссылки по теме

http://www.mtu-net.ru/aborovsky/articles/rpm.htm

Ruslandh

Личные инструменты