rpmbuild нет такого файла или каталога

Я просто учусь создавать пакеты rpm для некоторых пользовательских сборок программного обеспечения, которое компилируется из исходного кода (некоторые устаревшие вещи нуждаются в этом, поэтому я пытаюсь научиться, поскольку некоторые пакеты не могут использовать последние версии), но выдает ошибку (Я делаю это в Vagrant, а также как root, но обычно я стараюсь не использовать root, поскольку я знаю, что это может повредить, его только этот пример, кажется, требует некоторых изменений root).

sudo rpmbuild -ba testspec.spec --define "_topdir /tmp/"

Пока что похоже, что используется каталог, который я ожидал, / tmp / rpmbuild

make[2]: Entering directory `/tmp/rpmbuild/BUILD/exim-4.80.1/build-Linux-x86_64/pdkim'
make[2]: `pdkim.a' is up to date.
make[2]: Leaving directory `/tmp/rpmbu

Но потом я вижу эти ошибки ...

/usr/lib/rpm/brp-compress: line 8: cd: /tmp/BUILDROOT/custom-exim-4.80.1-1.x86_64: No such file or directory
+ /usr/lib/rpm/brp-strip
find: `/tmp/BUILDROOT/custom-exim-4.80.1-1.x86_64': No such file or directory
+ /usr/lib/rpm/brp-strip-static-archive
find: `/tmp/BUILDROOT/custom-exim-4.80.1-1.x86_64': No such file or directory
+ /usr/lib/rpm/brp-strip-comment-note

Итак, теперь кажется, что он смотрит в / tmp / BUILDROOT

Я новичок в rpmbuild и не совсем понимаю этот процесс.

Мой тестовый файл спецификаций находится по адресу ...


%define myversion       exim-4.80.1
##%define mybase                %{getenv:HOME}
%define mybase          /tmp

%define _topdir         %{mybase}/rpmbuild
%define _tmppath        %{mybase}/rpmbuild/tmp
%define name            custom-exim
%define release         1
%define version         4.80.1
%define buildroot       %{_topdir}/%{name}-%{version}-root


BuildRoot:      %{buildroot}
Summary:        %{name}
Name:           %{name}
Version:        %{version}
Release:        %{release}
Source0:        ftp://exim.noris.de/exim/exim4/old/exim-4.80.1.tar.gz

License:        GPLv1+
Group:          Language
AutoReq:        no
AutoProv:       no
Requires:       db4-devel pcre-devel libdb-devel libXt-devel libXaw-devel

%description
Custom Exim Build

%prep

#Do the following manually before building rpm
#mkdir -p /tmp/rpmbuild/BUILD /tmp/rpmbuild/SPECS /tmp/rpmbuild/SOURCES /tmp/rpmbuild/BUILDROOT /tmp/rpmbuild/RPMS /tmp/rpmbuild/SRPMS
#wget ftp://exim.noris.de/exim/exim4/old/exim-4.80.1.tar.gz -O /tmp/rpmbuild/SOURCES/exim-4.80.1.tar.gz


%setup -q -n %{myversion}
grep exim /etc/passwd ||  useradd -c "Exim" -d /var/spool/exim -m -s /bin/bash exim

%build

# exim needs to config changes before compiling, may do these first and repackage

cp %{mybase}/rpmbuild/BUILD/%{myversion}/src/EDITME %{mybase}/rpmbuild/BUILD/%{myversion}/Local/Makefile
cp %{mybase}/rpmbuild/BUILD/%{myversion}/exim_monitor/EDITME %{mybase}/rpmbuild/BUILD/%{myversion}/Local/eximon.conf

sed -i -e 's/EXIM_USER=$/EXIM_USER=exim/g' "%{mybase}/rpmbuild/BUILD/%{myversion}/Local/Makefile"
sed -i -e 's/LOOKUP_DNSDB=yes/#LOOKUP_DNSDB=yes/g' "%{mybase}/rpmbuild/BUILD/%{myversion}/Local/Makefile"

make

%install

rm -rf $RPM_BUILD_ROOT
#%{__mkdir_p} '%{buildroot}%{_sbindir}'
make install

%clean
rm -rf $RPM_BUILD_ROOT

%post

%postun

%files

Почему он буквально использует / tmp / BUILDROOT вместо / tmp / rpmbuild, и есть ли другие очевидные вещи, которые я делаю неправильно? Я просмотрел множество других руководств по rpmbuild, но не очень понимаю передовой опыт или то, что происходит на каждом этапе.


person Ian    schedule 19.05.2015    source источник


Ответы (2)


Поскольку параметр buildroot не передается в rpmbuild, ваш файл спецификации использует путь по умолчанию:

BuildRoot:      %{buildroot}

Попробуйте добавить параметр buildroot ... Добавить buildroot /tmp/rpmbuild в --define

Или, если вы используете make-файл:

BUILD_TMP=/tmp/rpmbuild
TOP_DIR=/tmp

rpmbuild -bb 
  --buildroot $(BUILD_TMP)
  --topdir $(TOP_DIR)
  $(SPEC_DIR)/testspec.spec
person GoinOff    schedule 19.05.2015
comment
На данный момент собираюсь принять это, поэтому извиняюсь за отсутствие обратной связи, у нас не будет возможности проверить в ближайшее время, но это имеет смысл, и я не знал об этом. - person Ian; 19.05.2015

В моем случае rpm-build отсутствовал. Итак, sudo yum install rpm-build решил проблему. Или, если вы используете марионетку:

package { 'rpm-build':
    ensure  => latest,
  }
person IKo    schedule 26.02.2020