Я пытаюсь создать свой первый RPM-пакет и борюсь с процессом rpmbuild.
Это моя среда, с которой мне приходится иметь дело:
cat /home/rpmadm/.rpmmacros
%_topdir /export/standardbuild
%_tmppath /export/standardbuild/tmp
%_sourcedir /export/standardbuild/SOURCES
%_rpmdir /export/standardbuild/RPMS
%_srcrpmdir /export/standardbuild/SRPMS
%_builddir /export/standardbuild/COMP_BUILDS/%{name}
Мой Makefile выглядит так:
packagename = metricconf
%_sourcedir = /export/standardbuild/SOURCES
# version number of package: make sure you also update the version
# number in the spec file
version = 1.0
all:
@echo "usage: make dist | package"
install:
if [ ! -d $(DESTDIR)/tmp/$(packagename) ]; \
then \
mkdir -p $(DESTDIR)/tmp/$(packagename); \
fi
cp mb_system_betrieb.yml $(DESTDIR)/tmp/$(packagename)/mb_system_betrieb.yml
cp metricbeat $(DESTDIR)/tmp/$(packagename)/metricbeat
cp metricbeat.yml $(DESTDIR)/tmp/$(packagename)/metricbeat.yml
dist:
tar cvf $(packagename)-$(version).tar ../$(packagename)-$(version)
gzip $(packagename)-$(version).tar
cp $(packagename)-$(version).tar.gz $(%_sourcedir) && rm $(packagename)-$(version).tar.gz
package: rpm
rpm:
rpmbuild -ba $(packagename).spec
rm -rf $(packagename)-$(version).tar
А это мой файл .spec:
Summary: configures Metricbeat for AIX
Name: metricconf
Version: 1.0
Release: 0
Vendor: Comp
Source: metricconf-1.0.tar.gz
BuildRoot: %{_builddir}/%{name}-{version}
Requires: metricbeat
%description
metricconf prepares AIX for metricbeat
%prep
%setup -c
%build
%install
%files
%defattr(644,root,system)
/tmp/metricbeat.yml
/tmp/mb_system_betrieb.yml
/tmp/metricbeat
make dist
работает хорошо, и файл .tar.gz будет создан правильно. Но команда make rpm
каждый раз терпит неудачу со следующей ошибкой:
make rpm
rpmbuild -ba metricconf.spec
Executing(%prep): /bin/sh -e /export/standardbuild/tmp/rpm-tmp.cIlqQa
+ umask 022
+ cd /export/standardbuild/COMP_BUILDS/metricconf
+ cd /export/standardbuild/COMP_BUILDS/metricconf
+ rm -rf metricconf-1.0
+ /usr/bin/mkdir -p metricconf-1.0
+ cd metricconf-1.0
+ /bin/gzip -dc /export/standardbuild/SOURCES/metricconf-1.0.tar.gz
+ /bin/tar -xvvof -
x ../COOPmetricbeat-1.0
x ../COOPmetricbeat-1.0/metricconf.spec, 2289 bytes, 5 tape blocks
x ../COOPmetricbeat-1.0/ChangeLog, 135 bytes, 1 tape blocks
x ../COOPmetricbeat-1.0/Makefile, 885 bytes, 2 tape blocks
x ../COOPmetricbeat-1.0/README, 74 bytes, 1 tape blocks
x ../COOPmetricbeat-1.0/mb_system_betrieb.yml, 1161 bytes, 3 tape blocks
x ../COOPmetricbeat-1.0/metricbeat, 1552 bytes, 4 tape blocks
x ../COOPmetricbeat-1.0/metricbeat.yml, 1240 bytes, 3 tape blocks
+ STATUS=0
+ [ 0 -ne 0 ]
+ /bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ exit 0
Executing(%build): /bin/sh -e /export/standardbuild/tmp/rpm-tmp.dalqQb
+ umask 022
+ cd /export/standardbuild/COMP_BUILDS/metricconf
+ cd COOPmetricbeat-1.0
+ exit 0
Executing(%install): /bin/sh -e /export/standardbuild/tmp/rpm-tmp.delqQc
+ umask 022
+ cd /export/standardbuild/COMP_BUILDS/metricconf
+ cd metricconf-1.0
+ exit 0
Processing files: metricconf-1.0-0.ppc
error: File not found: /export/standardbuild/tmp/metricconf-1.0-0.ppc/tmp/metricbeat.yml
error: File not found: /export/standardbuild/tmp/metricconf-1.0-0.ppc/tmp/mb_system_betrieb.yml
error: File not found: /export/standardbuild/tmp/metricconf-1.0-0.ppc/tmp/metricbeat
RPM build errors:
File not found: /export/standardbuild/tmp/metricconf-1.0-0.ppc/tmp/metricbeat.yml
File not found: /export/standardbuild/tmp/metricconf-1.0-0.ppc/tmp/mb_system_betrieb.yml
File not found: /export/standardbuild/tmp/metricconf-1.0-0.ppc/tmp/metricbeat
make: 1254-004 The error code from the last command is 1.## Heading ##
Пожалуйста, кто-нибудь может мне объяснить, почему rpmbuild ищет файлы в /export/standardbuild/tmp/metricconf-1.0-0.ppc, а не в /export/standardbuild/COMP_BUILDS/metricconf/metricconf-1.0 ???
Я много читал о создании RPM, особенно на страницах документации Fedora, но не имеет значения, что я изменяю в файле Makefile или .spec, ошибка остается.