Нет необходимости устанавливать пакет с исходными кодами в систему, чтобы пересобрать из него бинарный пакет. Вместо этого можно собрать пакет непосредственно, с помощью опции --rebuild .
Если команда выполняется из каталога, в котором находится src.rpm, базовый синтаксис такой:
rpmbuild --rebuild package.src.rpm
|
Эта команда собирает бинарный пакет с минимумом усилий. Например:
$ rpmbuild --rebuild unix2dos-2.2-17.src.rpm
Installing unix2dos-2.2-17.src.rpm
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.15828
+ umask 022
+ cd /usr/src/redhat/BUILD
+ LANG=C
+ export LANG
+ cd /usr/src/redhat/BUILD
+ rm -rf unix2dos-2.2
+ /bin/mkdir -p unix2dos-2.2
+ cd unix2dos-2.2
+ /usr/bin/gzip -dc /usr/src/redhat/S
OURCES/unix2dos-2.2.src.tar.gz
+ tar -xf -
+ STATUS=0
+ '[' 0 -ne 0 ']'
++ /usr/bin/id -u
+ '[' 500 = 0 ']'
++ /usr/bin/id -u
+ '[' 500 = 0 ']'
+ /bin/chmod -Rf a+rX,g-w,o-w .
+ echo 'Patch #0 (unix2dos-mkstemp.patch):'
Patch #0 (unix2dos-mkstemp.patch):
+ patch -p1 -b --suffix .sec -s
+ echo 'Patch #1 (unix2dos-2.2-segfault.patch):'
Patch #1 (unix2dos-2.2-segfault.patch):
+ patch -p1 -b --suffix .segf -s
+ echo 'Patch #2 (unix2dos-2.2-manpage.patch):'
Patch #2 (unix2dos-2.2-manpage.patch):
+ patch -p1 -b --suffix .man -s
+ perl -pi -e 's,^#endif.*,#endif,g;s,^#else.*,#else,g' unix2dos.c unix2dos.h
+ exit 0
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.60650
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd unix2dos-2.2
+ LANG=C
+ export LANG
+ gcc -O2 -march=i386 -mcpu=i686 -ounix2dos unix2dos.c
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.35128
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd unix2dos-2.2
+ LANG=C
+ export LANG
+ rm -rf /var/tmp/unix2dos-root
+ mkdir -p /var/tmp/unix2dos-root/usr/bin /var/tmp/unix2dos-
root/usr/share/man/man1
+ install -m755 unix2dos /var/tmp/unix2dos-root/usr/bin
+ install -m444 unix2dos.1
/var/tmp/unix2dos-root/usr/share/man/man1
+ /usr/lib/rpm/redhat/brp-compress
+ /usr/lib/rpm/redhat/brp-strip
+ /usr/lib/rpm/redhat/brp-strip-comment-note
Processing files: unix2dos-2.2-17
Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.12033
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd unix2dos-2.2
+ DOCDIR=/var/tmp/unix2dos-root/usr/share/doc/unix2dos-2.2
+ export DOCDIR
+ rm -rf /var/tmp/unix2dos-root/usr/share/doc/unix2dos-2.2
+ /bin/mkdir -p
/var/tmp/unix2dos-root/usr/share/doc/unix2dos-2.2
+ cp -pr COPYRIGHT
/var/tmp/unix2dos-root/usr/share/doc/unix2dos-2.2
+ exit 0
Finding Provides: /usr/lib/rpm/find-provides
Finding Requires: /usr/lib/rpm/find-requires
PreReq: rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames)
<= 3.0.4-1
Requires(rpmlib): rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
Requires: libc.so.6 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1)
Checking for unpackaged file(s): /usr/lib/rpm/check-files /var/tmp/unix2dos-root
Wrote: /usr/src/redhat/RPMS/i386/unix2dos-2.2-17.i386.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.47653
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd unix2dos-2.2
+ rm -rf /var/tmp/unix2dos-root
+ exit 0
Executing(--clean): /bin/sh -e /var/tmp/rpm-tmp.47653
+ umask 022
+ cd /usr/src/redhat/BUILD
+ rm -rf unix2dos-2.2
+ exit 0
|
Действия, вызываемые rpmbuild с опцией --rebuild таковы: src.rpm устанавливается в систему, выполняется подготовка к сборке, компиляция и установка собранного бинарного пакета. Если по ходу не возникли ошибки, новый бинарный rpm будет найден в каталоге /usr/src/redhat/RPMS под соответствующей архитектурой.
После сборки и установки пакета происходит очистка директории сборки. Также в конце процесса удаляется установленный в систему src.rpm-пакет, то есть удаляется архив с исходными кодами и spec-файл.
Далее - Перекомпиляция бинарных пакетов из src.rpm
Назад - Работа с пакетами, содержащими исходный код (src.rpm)
Содержание