我正在构建一个自定义软件包,该软件包大部分都有一些依赖关系,并安装了我自己的文件和脚本。我在tar
文件中有这些文件,在尝试构建后,我可以看到这些文件在rpmbuild/BUILD
目录中解压缩。然而,%files
指令似乎存在问题,因为其中的任何文件被列为error: File not found
。我spec
文件的相关部分如下所示:rpmbuild无法找到我从源代码解压的文件
%prep
%setup
%install
mkdir -p %{buildroot}/etc/collectd/
mkdir -p %{buildroot}/usr/bin/
mkdir -p %{buildroot}/usr/bin/collectd.conf.d/
install -m 777 collectd.conf.custom %{_builddir}/%{name}-%{version}/etc/collectd/
# list files owned by the package here
%files
%defattr(-,root,root)
%config /etc/collectd.conf.custom
%config /etc/collectd.d/http.conf
%config /etc/collectd.d/csv.conf
/usr/local/bin/my-plugin.py
/usr/local/bin/my-script
就像我说的这些文件解压缩到/BUILD
但建设者在%install
指令失败,执行三个mkdir
语句后。我只是试图在上面的脚本中安装一个文件,这样我可以更容易地告诉它它成功了。我一直得到以下错误无论怎样我尝试:
+ install -m 777 collectd.conf.turbine /home/vagrant/rpmbuild/BUILD/my-package-1.1/etc/collectd/
install: cannot stat `collectd.conf.custom': No such file or directory
这个文件是在这个目录中为我检查使用ls
,但由于某种原因,我不断收到此错误。
编辑:
我%.spec
文件如下:
Summary: my-package Collectd
Name: my-package-collectd
Version: 1.1
Release: Public
Group: Applications/System
License: Public
Requires: collectd
BuildArch: noarch
BuildRoot: %{_tmppath}/%{name}-%{version}
Source: %{name}-%{version}.tar.gz
%prep
%setup
%install
rm -rf %{buildroot}
mkdir -p %{buildroot}/etc/collectd/
mkdir -p %{buildroot}/etc/collectd/collectd.conf.d/
mkdir -p %{buildroot}/usr/bin/
install -m 777 %{_builddir}/%{name}-%{version}/etc/collectd/collectd.conf.custom %{buildroot}/etc/collectd/
install -m 777 %{_builddir}/%{name}-%{version}/etc/collectd/collectd.conf.d/csv.conf %{buildroot}/etc/collectd/collectd.conf.d/
install -m 777 %{_builddir}/%{name}-%{version}/etc/collectd/collectd.conf.d/http.conf %{buildroot}/etc/collectd/collectd.conf.d/
# list files owned by the package here
%files
%defattr(-,root,root)
%config /etc/collectd.conf.my-package
%config /etc/collectd.d/http.conf
%config /etc/collectd.d/csv.conf
/usr/local/bin/cloudhealth.py
/usr/local/bin/my-package-collectd
'collectd.conf.custom'中有什么目录? '%install'代码段的工作目录? *%install'代码段的工作目录下的'BUILD'目录*您需要将'%install'代码段的工作目录中的文件复制到正确位置的'%{buildroot}'中。 '%file'节的路径*位于*'%{buildroot}'之下。 –
为什么你要创建'%{buildroot}/etc/collectd /',然后尝试安装到'%{_ builddir} /%{name} - %{version}/etc/collectd /'? –
'collectd.conf.custom'位于源目录中,并在'%prep'指令期间解压缩为'BUILD'。我的理解是我需要将该文件移动到“BUILDROOT”中。如果我更改为'install -m 777%{_ builddir} /%{name} - %{version} /etc/collectd/collectd.conf.turbine%{buildroot}/etc/collectd /'发生这种情况,然后我得到错误:错误:File not found:/ home/vagrant/rpmbuild/BUILDROOT/turb-collectd-1.1-Public.x86_64/etc/collectd.conf.turbine'这也是令人困惑的,因为我在spec中指定了'noarch',但'BUILDROOT'总是包含'x86_64' – eignhpants