Теперь вы готовы к формированию RPM-пакета.

Создание RPM-пакета с помощью rpmbuild

Создаются пакеты с помощью команды rpmbuild со следующей синтаксической записью:

rpmbuild -bBuildStage spec_file

Опция -b заставляет rpmbuild создать RPM-пакет. Дополнительная опция BuildStage — специальный код, информирующий команду rpmbuild о том, как далеко она может зайти в процессе создания. В табл. 9.5 перечислены опции команды.

Таблица 9.5

ОпцияОписание
-baСоздавать и двоичный, и исходный RPM-пакет
-bbСоздавать двоичный RPM-пакет
-bcКомпилировать программу, но не создавать полный RPM-пакет
-bpПодготовиться к созданию двоичного RPM-пакета
-biСоздать двоичный RPM-пакет и установить его
-blПроверить список файлов RPM-пакета
-bsСоздать только RPM-пакет исходных файлов

Для создания двоичного RPM-пакета и пакета исходных файлов используйте опцию -ba. RPM-пакет исходных файлов позволит создать повторно двоичный RPM- пакет.

Скопируйте RPM-файл spec в корректный каталог SOURCES, поместив его рядом с исходным файлом приложения:

$ cp myapp.spec /usr/src/redhat/SOURCES

Далее приведен вывод, сопровождающий создание пакета в системе SUSE Linux, пакеты в которой создаются из каталога /usr/src/packages/SOURCES:

$ rpmbuild -ba myapp.spec

Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.47290

+ umask 022

+ cd /usr/src/packages/BUILD

+ cd /usr/src/packages/BUILD

+ rm -rf myapp-1.0

+ /usr/bin/gzip -dc /usr/src/packages/SOURCES/myapp-1.0.tar.gz

+ tar -xf -

+ STATUS=0

+ '[' 0 -ne 0 '] '

+ cd myapp-1.0

++ /usr/bin/id -u

+ '[' 1000 = 0 ']'

++ /usr/bin/id -u

+ '[' 1000 = 0 ']'

+ /bin/chmod -Rf a+rX, u+w, g-w, o-w

+ exit 0

Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.99663

+ umask 022

+ cd /usr/src/packages/BUILD

+ /bin/rm -rf /var/tmp/myapp-1.0-root

++ dirname /var/tmp/myapp-1.0-root

+ /bin/mkdir -p /var/tmp

+ /bin/mkdir /var/tmp/myapp-1.0-root

+ cd myapp-1.0 + make

gcc -g -Wall -ansi -с -o main.о main.c

gcc -g -Wall -ansi -с -o 2.o 2.c

ar rv mylib.a 2.o

ar: creating mylib.a

a - 2.о

gcc -g -Wall -ansi -с -o 3.o 3.c

ar rv mylib.a 3.o

a — 3.o

gcc -o myapp main.о mylib.a

+ exit 0

Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.47320

+ umask 022

+ cd /usr/src/packages/BUILD

+ cd myapp-1.0

+ mkdir -p /var/tmp/myapp-1.0-root/usr/bin

+ mkdir -p /var/tmp/myapp-1.0-root/usr/share/man

+ install -m755 myapp /var/tmp/myapp-1.0-root/usr/bin/myapp

+ install -m755 myapp.1 /var/tmp/myapp-1.0-root/usr/share/man/myapp.1

+ RPM_BUILD_ROOT=/var/tmp/myapp-1.0-root

+ export RPM_BUILD_ROOT

+ test -x /usr/sbin/Check -a 1000 = 0 -o

 -x /usr/sbin/Check -a '!' -z /var/tmp/myapp-1.0-root

+ echo 'I call /usr/sbin/Check...'

I call /usr/sbin/Check...

+ /usr/sbin/Check

-rwxr-xr-x 1 neil users 926 2007-07-09 13:35 /var/tmp/myapp-1.0-root/ /usr/share/man/myapp.1.gz

Checking permissions and ownerships — using the permissions files

 /tmp/Check.perms.017506

setting /var/tmp/myapp-1.0-root/ to root:root 0755 (wrong owner/group neil:users)

Перейти на страницу:

Похожие книги