Я просто хочу создать RPM-файл для распространения моего бинарного Linux-файла "foobar", имеющего только пару зависимостей. Он имеет конфигурационный файл /etc/foobar.conf и должен быть установлен в / usr / bin / foobar.
К сожалению, документация для RPM состоит из 27 глав, и у меня действительно нет времени сидеть и читать это, потому что я также занят созданием установщиков .deb и EXE для других платформ.
Какой абсолютный минимум я должен сделать, чтобы создать RPM? Предположим, что двоичный файл foobar и foobar.conf находятся в текущем рабочем каталоге.
Ответы:
Я часто делаю двоичные обороты в минуту для пакетов проприетарных приложений - в том числе и веб-сферы - в Linux. Так что мой опыт может быть полезен и вам, кроме того, что было бы лучше сделать ИСТИННЫЕ обороты, если вы можете. Но я отвлекся.
Итак, основной шаг для упаковки вашей (бинарной) программы заключается в следующем: я предполагаю, что программа - toybinprog с версией 1.0, имеет файл conf, устанавливаемый в /etc/toybinprog/toybinprog.conf, и пакет bin для установки. в / usr / bin называется tobinprog:
1. Создайте свой RPM build env для RPM <4.6,4.7
2. создать тарбол вашего проекта
3. Скопировать в источник dir
4. построить исходный и двоичный rpm
И это все.
Надеюсь это поможет
источник
sudo dnf install rpm-build
- Команда Fedora 23 для установки rpmbuild v4.13 +Как дистрибьютор приложений, fpm звучит идеально для ваших нужд . Здесь есть пример, который показывает, как упаковать приложение из исходного кода. FPM может создавать как файлы deb, так и файлы RPM.
источник
Для быстрого создания RPM, проверьте Того:
https://github.com/genereese/togo-rpm
В проекте есть краткое руководство, и мне удалось создать базовый RPM менее чем за 3 минуты.
Пример с использованием данных, приведенных в исходном вопросе:
1) Создайте каталог проекта, используя скрипт:
2) Создайте нужную структуру каталогов в ./root и скопируйте в нее свои файлы:
3) Исключить системные каталоги из собственности вашего RPM:
4) (НЕОБЯЗАТЕЛЬНО) Измените сгенерированную спецификацию, чтобы изменить описание вашего пакета / зависимости / версию / что угодно, и т.д .:
5) Постройте RPM:
-и ваш RPM выплевывается в каталог ./rpms.
источник
Точно так же мне нужно было создать rpm всего с несколькими файлами. Так как эти файлы контролировались исходным кодом, и потому что это казалось глупым, я не хотел разбираться с ними, просто чтобы rpm распаковывал их. Я придумал следующее:
Настройте свою среду:
mkdir -p ~/rpm/{BUILD,RPMS}
echo '%_topdir %(echo "$HOME")/rpm' > ~/.rpmmacros
Создайте свой файл спецификаций foobar.spec со следующим содержимым:
Создайте свой RPM:
rpmbuild -bb foobar.spec
Там есть небольшая хитрость, указывающая «источник» в качестве текущего каталога, но он казался гораздо более элегантным, чем альтернатива, которая заключалась в том, чтобы, в моем случае, написать отдельный скрипт для создания архива и т. Д., И т. Д.
Примечание: в моей конкретной ситуации мои файлы были расположены в папках в соответствии с тем, куда они должны идти, например:
и поэтому раздел подготовки стал:
Который немного чище.
Кроме того, я нахожусь на RHEL5.6 с версиями 4.4.2.3 об / мин, поэтому ваш пробег может отличаться.
источник
$RPM_BUILD_ROOT
чтобы%{buildroot}
заставить его работать на моем "Red Hat Enterprise Linux Server версии 6.9". Кроме того, два файла, которые были установлены, должны были находиться в текущем каталоге, когда я запускал rpmbuild. Я установил его на другой машине с:sudo rpm -Uvh --nodeps foobar-0.1a-1.x86_64.rpm
Если
make config
работает для вашей программы или у вас есть сценарий оболочки, который копирует ваши два файла в соответствующее место, вы можете использовать checkinstall . Просто перейдите в каталог, где находится ваш make-файл, и вызовите его с параметром-R
(для RPM ) и, при необходимости, с помощью сценария установки.источник
Простой способ собрать пакет rpm из двоичного файла (эти шаги были протестированы в Fedora 18):
1) Сначала вы должны установить rpmdevtools, поэтому выполните эти команды (внимание: запускайте как обычный пользователь)
2) В папке ~ / rpmbuild / SPECS создайте новый файл: имя_пакета.spec
3) Откройте его с помощью редактора (например, gedit) и напишите:
4) Создайте ~ / rpmbuild / BUILDROOT / package_name-version-release.i386 и воспроизведите пути, в которые будут помещены файлы. Так, в этом случае, например, создайте:
5) Поместите в эти папки файлы, которые вы хотите вставить в пакет:
usr / share / pixmaps / package_name.png - это значок бинарного файла usr / share / Applications / package_name.desktop - это правила для вставки программы в пункты меню.
6) имя_пакета.desktop должно быть таким:
Категории таковы: standard.freedesktop.org/menu-spec/latest/apa.html
7) Беги
$ rpmbuild -bb ~/rpmbuild/SPECS/package_name.spec
8) Ваш пакет был встроен в папку ~ / rpmbuild / RPMS
если вы устанавливаете этот пакет, он устанавливает:
Спасибо: losurs.org/docs/tips/redhat/binary-rpms
Для получения более подробной информации о сборке RPM взгляните на эту ссылку .
Java-программное обеспечение с графическим интерфейсом для сборки rpm: https://sourceforge.net/projects/javarpmbuilder/
источник
Если вы знакомы с Maven, это также
rpm-maven-plugin
упрощает создание RPM: вам нужно написать только то,pom.xml
что затем будет использовано для создания RPM. Среда сборки RPM создается неявно плагином.источник
Процесс генерации RPM из исходного файла:
источник
RPM обычно создаются из исходного кода, а не из двоичных файлов.
Вам нужно написать спецификационный файл, который описывает, как настроить и скомпилировать ваше приложение; также, какие файлы включить в ваш RPM.
Беглый взгляд на руководство показывает, что большая часть того, что вам нужно, описана в Главе 8, а также, поскольку большинство дистрибутивов на основе RPM имеют доступные источники, существует буквально миллион примеров различных подходов, на которые вы могли бы взглянуть.
источник