Как мне получить базовый файл спецификаций для работы с rpmbuild?

Я установил rpmlint и rpmdevtools. Я использовал rpmdevtools для создания шаблона файла.spec. Я изменил файл спецификации, чтобы он установил cfengine. Я запустил rpmlint в файле спецификации и не увидел ни предупреждений, ни ошибок. Затем я попытался запустить specfile по-настоящему, но это не удалось. Вот команда, которую я выполнил:

$ rpmbuild -ba newpackage.spec

Вот что я увидел:

Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.wNGgcV
+ umask 022
+ cd /home/ec2-user//BUILD
+ cd /home/ec2-user/BUILD
+ rm -rf Propulsion-1
+ /usr/bin/tar -xf -
+ /usr/bin/gzip -dc /home/ec2-user/SOURCES/cfengine-3.6.5.tar.gz
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd Propulsion-1
/var/tmp/rpm-tmp.wNGgcV: line 35: cd: Propulsion-1: No such file or directory
error: Bad exit status from /var/tmp/rpm-tmp.wNGgcV (%prep)


RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.wNGgcV (%prep)

Файл выше в строке 35 имеет это:

кд "г.-1"

Название "Propulsion" происходит из файла.spec. Очевидно, что одинарные кавычки, дефис и 1 происходят из обработки команды rpm-build.

Что я должен сделать, чтобы не было ошибки сборки RPM? Я хочу, чтобы мой spec-файл работал для установки cfengine.

Вот файл спецификации:

Name:  Propulsion
Version: 1
Release:        1%{?dist}
Summary:  First time

License:        GNU
#URL:
Source0: http://s3.amazonaws.com/cfengine.package-repos/tarballs/cfengine-3.6.5.tar.gz

BuildRequires: gettext
# Requires:

%description
This is a test.

%prep
%setup -q


%build
%configure
make %{?_smp_mflags}


%install
rm -rf $RPM_BUILD_ROOT
%make_install


%files
%doc


%changelog

1 ответ

Решение

Эта ошибка происходит потому, что %setup на самом деле макрос, который при расширении будет пытаться распаковать ваш источник и cd в исходный каталог.

Если исходный каталог в tarball отличается от имени пакета, вам нужно установить -n, как это:

%setup -n cfengine-3.6.5

В вашем случае это должно работать, потому что когда вы извлекаете cfengine-3.6.5.tar.gz вы получаете каталог с именем cfengine-3.6.5 - и rpmbuild ожидает Propulsion-1 на основе вашего имени пакета и версии.

Вы можете прочитать больше о макросе установки здесь и здесь.

Другие вопросы по тегам