Spe c файл для сборки .tar.gz как .rpm - PullRequest
0 голосов
/ 28 февраля 2020

Я бы хотел улучшить распространение и управление версиями программы, которую я унаследовал, которая в настоящее время распространяется как файл .tar.gz, путем создания .rpm для RHEL7, который просто извлекает содержимое в /usr/bin/. Тарбол не маленький, состоит из файлов размером около 120 МБ.

Я новичок в сборке пакетов, поэтому я следовал примеру bello из https://rpm-packaging-guide.github.io, но пример слишком прост для моих нужд.

Пока у меня есть этот файл .spec:

Name:           my-app
Version:        2.0 
Release:        1%{?dist}
Summary:        My application

License:        Internal license
URL:            <my-website>
Source0:        <my-website>/%{name}-%{version}.rhel7.x86_64.tar.gz

Requires:       bash

BuildArch:      x86_64

%description
My application

%prep
%setup -q

%build

%install
mkdir -p %{buildroot}/%{_bindir}
install -m 0755 %{name} %{buildroot}/%{_bindir}/%{name}

%files
%{_bindir}/%{name}

, который генерирует очень маленький .rpm всего с /usr/bin/my-app. При установке, если жалуется на многие отсутствующие зависимости, которые находятся внутри каталога lib тарбола, но, конечно, не в моем пакете.

Насколько я понимаю, директива %files должна содержать список всех файлы, которые должны быть внутри .rpm, но их сотни. Итак, я предполагаю, что есть лучший способ собрать пакет, в конце концов просто распаковывает архив.

У вас есть какие-нибудь указатели?

1 Ответ

1 голос
/ 28 февраля 2020
install -m 0755 %{name} %{buildroot}/%{_bindir}/%{name}

вы устанавливаете только двоичный файл. Вам также следует установить зависимости, если они есть в вашем tgz, затем убедитесь, что они также упакованы в %files.

...