Сборка простого RPM на Oracle Linux (RedHat) с использованием сборки rpm
Я хочу сделать RPM, используя определенного пользователя, из указанного местоположения каталога сборки. RPM содержит несколько файлов или один gzip и должен копировать эти файлы в заранее заданное место (поэтому его следует перемещать).
Я был на сайте Fedora и других учебных пособиях (включая переполнение стека), но, похоже, ничего не работает. Все, что я мог получить (в лучшем случае), это просто src.rpm, который выдает ошибку при попытке записи в%sourcedir /usr/src/redhat/SOURCES по какой-то причине.
Все, что мне нужно, - это один файл спецификации, который может создать RPM, который может обрабатывать один gzip или несколько текстовых файлов, распаковать его / скопировать их в заданное место. Сборка rpm должна генерировать файл rpm в каталоге RPM.
Меня не интересуют другие инструменты, которые создают RPM, но как их создать с помощью rpm build.
Использование RPM версии 4.4.2.3
1 ответ
Будет чуть больше информации, чем вы просили. Я предполагаю, что оригинальный плакат с вопросом знает, как работает rpmbuild, но, возможно, кто-то еще не знает.
Простая процедура для создания RPM с установкой двух файлов.
Создайте иерархию каталогов для rpmbuild: mkdir -p ~/rpmbuild/{SPEC,SOURCES}
,
Скопируйте пример содержимого в свои фиктивные RPM-файлы (они необходимы при использовании файла SPEC позже в этом примере): cp /etc/profile ~/rpmbuild/SOURCES/dummy.file && cp /etc/shells ~/rpmbuild/dummy.another.file
,
Вставить следующее в ~/rpmbuild/SPEC/dummyrpmfile.spec
:
Summary: A dummy RPM. Creates file /etc/dummy/file.
Name: dummyrpmfile
Version: 0.1
Release: 1
Vendor: Super User
Packager: Super User
License: GPL
Group: System Environment/Base
BuildArch: noarch
Source0: dummy.file
Source1: dummy.another.file
Prefix: /etc/dummy
%description
A dummy RPM. Creates file /etc/dummy/file. And also directory /etc/dummy.
Very cool package. You should install this. Oh, yes, and it also makes
/etc/dummy/another.file too.
%install
# create directory /etc/dummy
%{__install} -d -m0755 %{buildroot}/etc/dummy
# and copy the file from SOURCES/file to <buildroot>/etc/dummy
%{__install} -m 0644 %{SOURCE0} %{buildroot}/etc/dummy/file
%{__install} -m 0644 %{SOURCE1} %{buildroot}/etc/dummy/another.file
%files
/etc/dummy/file
/etc/dummy/another.file
Тогда беги cd ~/rpmbuild && rpmbuild -ba SPEC/dummyrpmfile.spec
,
Это должно создать RPM "noarch" в случае, если это просто данные и такие, которые не имеют различия между 32-битной и 64-битной архитектурами, например. Результаты должны быть в ~/rpmbuild/RPMS/noarch/dummyrpmfile.rpm
,
Ссылки на справку: как работает префикс.