Сборка простого RPM на Oracle Linux (RedHat) с использованием сборки rpm

2663
random

Я хочу сделать RPM, используя определенного пользователя, из указанного местоположения каталога сборки. RPM содержит несколько файлов или один gzip и должен копировать эти файлы в заранее заданное место (поэтому его следует перемещать).

Я был на сайте Fedora и других учебных пособиях (включая переполнение стека), но, похоже, ничего не работает. Все, что я мог получить (в лучшем случае), это просто src.rpm, который выдает ошибку при попытке записи в% sourcedir / usr / src / redhat / SOURCES по какой-то причине.

Все, что мне нужно, - это один файл спецификации, который может создать RPM, который может обрабатывать один gzip или несколько текстовых файлов, распаковать его / скопировать их в заданное место. Сборка rpm должна генерировать файл rpm в каталоге RPM.

Меня не интересуют другие инструменты, которые создают RPM, но как их создать, используя rpm build.

Использование RPM версии 4.4.2.3

0

1 ответ на вопрос

1
Sami Laine

There is going to be a tad more information than you asked for. I assume that the original question poster knows how rpmbuild works, but maybe someone else doesn't.

Simple procedure to create an RPM installing two files.

Create directory hierarchy for rpmbuild: mkdir -p ~/rpmbuild/.

Copy some example content to your your dummy RPM files (these are needed when using the SPEC file later on in this example): cp /etc/profile ~/rpmbuild/SOURCES/dummy.file && cp /etc/shells ~/rpmbuild/dummy.another.file.

Paste following into ~/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 % -d -m0755 %/etc/dummy # and copy the file from SOURCES/file to <buildroot>/etc/dummy % -m 0644 % %/etc/dummy/file % -m 0644 % %/etc/dummy/another.file %files /etc/dummy/file /etc/dummy/another.file 

Then run cd ~/rpmbuild && rpmbuild -ba SPEC/dummyrpmfile.spec.

This should produce a "noarch" RPM in case it's just data and such which doesn't have differ between 32-bit and 64-bit architectures for example. Results should be in ~/rpmbuild/RPMS/noarch/dummyrpmfile.rpm.

Help links: How Prefix works.

Спасибо за Ваш ответ. Одна вещь, которую я не вижу, это как вы устанавливаете место установки. Я прочитал кое-что о "Префиксе". Можете ли вы включить его в свой пример? Благодарю. 10 лет назад 0
Вам необходимо создать соответствующую структуру директорий в вашем каталоге компоновки. Если вы хотите, чтобы ваши файлы попали в `/ home / foouser / bardir / bazdir /`, просто создайте% / home / foouser / bardir / bazdir / и перейдите оттуда. Я не уверен, правильно ли я понял ваш вопрос. Sami Laine 10 лет назад 0
Я имел в виду, как настроить rpm, чтобы вы могли указать путь установки во время установки, используя rpm --prefix. 10 лет назад 0
Теперь я читаю тебя. Это происходит из головы, так как у меня нет возможности проверить это. Но добавление только `Prefix:` должно сделать это, и вы можете впоследствии использовать `rpm --relocate`, чтобы заменить` / usr / local` на то, что вы хотите в этом примере. Более подробная информация находится в http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch10s05.html. Sami Laine 10 лет назад 0
Обновление: тег prefix четко задокументирован здесь: [http://www.rpm.org/max-rpm/s1-rpm-reloc-prefix-tag.html](http://www.rpm.org/max- об / мин s1-RELOC-префикс-tag.html). Я обновлю ваш пример, чтобы быть более понятным об использовании префикса. 9 лет назад 0

Похожие вопросы