2015-08-30 2 views
0

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

Summary: My Package 
Name: my-package 
Version: 1.1 
Release: Public 
Group: Applications/System 
License: Public 
Requires: collectd 
Source: sources.tar.gz 

%prep 
%setup 

%install 
mkdir -p %{buildroot}/etc/collectd/ 
mkdir -p %{buildroot}/etc/collectd/collectd.conf.d/ 
mkdir -p %{buildroot}/usr/bin/ 


# list files owned by the package here 
%files 
%defattr(-,root,root) 
%config /etc/collectd/collectd.conf.custom 
%config /etc/collectd/collectd.d/http.conf 
%config /etc/collectd/collectd.d/csv.conf 
/usr/local/bin/myfile.py 
/usr/local/bin/my-package 

%post 
ln -sf /etc/collectd.conf.custom /etc/collectd.conf 

я в настоящее время получить выход, который выглядит следующим образом:

Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.m5Qvz9 
+ umask 022 
+ cd ./BUILD 
+ LANG=C 
+ export LANG 
+ unset DISPLAY 
+ cd /BUILD 
/var/tmp/rpm-tmp.m5Qvz9: line 31: cd: /BUILD: No such file or directory 
error: Bad exit status from /var/tmp/rpm-tmp.m5Qvz9 (%prep) 


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

Я не знаю, почему он пытается cd в каталог /BUILD дважды.

Если я оставлю вне %setup линию я получаю следующий результат:

Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.3c5as7 
+ umask 022 
+ cd ./BUILD 
+ LANG=C 
+ export LANG 
+ unset DISPLAY 
+ exit 0 
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.FAF3wq 
+ umask 022 
+ cd ./BUILD 
+ '[' ./BUILDROOT/my-package-1.1-Public.x86_64 '!='/']' 
+ rm -rf ./BUILDROOT/my-package-1.1-Public.x86_64 
++ dirname ./BUILDROOT/my-package-1.1-Public.x86_64 
+ mkdir -p ./BUILDROOT 
+ mkdir ./BUILDROOT/my-package-1.1-Public.x86_64 
+ LANG=C 
+ export LANG 
+ unset DISPLAY 
+ mkdir -p ./BUILDROOT/my-package-1.1-Public.x86_64/etc/collectd/ 
+ mkdir -p ./BUILDROOT/my-package-1.1-Public.x86_64/usr/bin/ 
+ mkdir -p ./BUILDROOT/my-package-1.1-Public.x86_64/usr/bin/collectd.conf.d/ 
+ /usr/lib/rpm/check-buildroot 
+ /usr/lib/rpm/redhat/brp-compress 
+ /usr/lib/rpm/redhat/brp-strip /usr/bin/strip 
+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip 
+ /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump 
+ /usr/lib/rpm/brp-python-bytecompile 
+ /usr/lib/rpm/redhat/brp-python-hardlink 
+ /usr/lib/rpm/redhat/brp-java-repack-jars 
Processing files: my-package-1.1-Public.x86_64 
error: File not found: /BUILDROOT/my-package-1.1-Public.x86_64/etc/collectd.conf.custom 
error: File not found: /BUILDROOT/my-package-1.1-Public.x86_64/etc/collectd.d/http.conf 
error: File not found: /BUILDROOT/my-package-1.1-Public.x86_64/etc/collectd.d/csv.conf 
error: File not found: /BUILDROOT/my-package-1.1-Public.x86_64/usr/local/bin/myfile.py 
error: File not found: /BUILDROOT/my-package-1.1-Public.x86_64/usr/local/bin/my-package 


RPM build errors: 
    File not found: /BUILDROOT/my-package-1.1-Public.x86_64/etc/collectd.conf.custom 
    File not found: /BUILDROOT/my-package-1.1-Public.x86_64/etc/collectd.d/http.conf 
    File not found: /BUILDROOT/my-package-1.1-Public.x86_64/etc/collectd.d/csv.conf 
    File not found: /BUILDROOT/my-package-1.1-Public.x86_64/usr/local/bin/myfile.py 
    File not found: /BUILDROOT/my-package-1.1-Public.x86_64/usr/local/bin/my-package 

который я бы ожидать после удаления %setup, как это уже не распаковывает источник. Любая помощь оценивается.

ответ

1

Вы можете игнорировать эти два «компакт-диска», это, вероятно, в другом процессе. Итак, что на самом деле имеет значение

cd /BUILD 

И я предполагаю, что этот каталог действительно не существует. Он устанавливается макросом% _topdir. Настоятельно рекомендуется поставить

%_topdir %(echo $HOME)/rpmbuild 

в файле ~/.rpmmacros. Затем вам нужно будет создать несколько каталогов в ~/rpmbuild. Вы можете запустить команду «rpmdev-setuptree» (из пакета rpmdevtools), которая создаст его для вас.

Edit:

Additionaly эта линия:

error: File not found: /BUILDROOT/my-package-1.1-Public.x86_64/etc/collectd.conf.custom 

означает, что rpmbuild не может найти этот файл в Buildroot в то время как вы перечислить его в разделе% файлов. Вы должны положить что-то вроде этого в разделе% install:

cp -a collectd.conf.custom %{buildroot}/etc/collectd/collectd.conf.custom 

если этот файл является частью вашего файла tar.gz. Или используйте любую другую команду оболочки, которая создает этот файл в этом месте. Аналогично для всех файлов, которые сообщают rpmbuild как отсутствующие.

+0

У меня нет файла '~/.rpmmacros', возможно ли, что он будет установлен в другом месте? – eignhpants

+0

Также '/ BUILD' на'% _topdir', похоже, существует. Если я разделяю содержимое своего каталога на просто '/ SOURCES' и'/SPECS' (где мои файлы), rpmbuild сделает другие каталоги, включая '/ BUILD'. Это когда я использую команду 'rpmbuild -bb -D '_topdir.' SPECS/my-package.spec' – eignhpants

+0

Я изменил свой ответ. – msuchy