Я установил 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? Я хочу, чтобы мой файл спецификации работал для установки 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
Эта ошибка возникает из-за того, что %setup
на самом деле макрос, который при расширении попытается отключить ваш источник и cd
в исходный каталог.
Если исходный каталог в tarball отличается от имени пакета, вам необходимо установить -n
, как это:
%setup -n cfengine-3.6.5
В вашем случае это должно сработать, потому что при извлечении cfengine-3.6.5.tar.gz
вы получаете каталог с именем cfengine-3.6.5
- и rpmbuild ожидает Propulsion-1
в зависимости от имени и версии вашего пакета.