Теперь вы готовы к формированию RPM-пакета.
Создаются пакеты с помощью команды rpmbuild со следующей синтаксической записью:
rpmbuild -b
Опция -b заставляет rpmbuild создать RPM-пакет. Дополнительная опция BuildStage — специальный код, информирующий команду rpmbuild о том, как далеко она может зайти в процессе создания. В табл. 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)