Как сделать бинарный RPM-пакет из готового набора файлов
27 Jun 2016Для примера мы возьмем файл (в данном случае пустой sh-скрипт) testapp.sh
, который находится в каталоге /opt/testapp
. Представим, что это программа, состоящая всего лишь из одного файла, и ее необходимо распространять в виде RPM-пакета.
Создаем директорию для Source
-приложения и кладем туда наше приложение:
user@localhost mkdir -p testapp-1.0/testapp
user@localhost cp /opt/testapp.sh testapp-1.0/testapp/
Сделаем архив Source
-приложения:
user@localhost tar -xzf testapp-1.0.tar.gz testapp-1.0
Настоятельно рекомендуется собирать RPM-пакеты НЕ под учетной записью root в целях безопасности. Я собираю пакеты под учетной записью rpmbuild
. Все дальнейшие действия выполняются под ней.
Теперь необходимо создать дерево каталогов (окружение) для сборки rpm следующего содержания:
rpmbuild@localhost mkdir -p ~/RPMBUILD/{RPMS,SRPMS,SPECS,SOURCES,BUILD,BUILDROOT}
Переопределить макросы в файле ~/.rpmmacros
:
Архив Source
-приложения testapp-1.0.tar.gz
должен находиться в директории ~/RPMBUILD/SOURCES
.
Самое главное - правильно заполнить файл спецификации ~/RPMBUILD/SPECS/testapp.spec
:
И запустить сборку RPM-пакета:
rpmbuild@localhost ~/RPMBUILD/SPECS $ rpmbuild -bb testapp.spec
По умолчанию, rpmbuild
собирает пакет под текущую архитектору. В данном случае, x86_64.
В случае успешной сборки готовый rpm-пакет testapp-1.0-1.x86_64.rpm
будет располагаться в каталоге ~/RPMBUILD/RPMS/x86_64
.
Для другой архитектуры, например, i686, используйте опцию --target i686
.
Теперь можно посмотреть информацию о нашем пакете и убедиться, что всё в порядке: