rpmbuild无法找到我从源解压缩的文件

时间:2015-08-31 17:31:49

标签: rpm yum rhel rpmbuild

我正在构建一个自定义程序包,它在很大程度上具有几个依赖项并安装我自己的文件和脚本。我将这些文件放在rpmbuild/BUILD文件中,在尝试构建之后,我可以看到这些文件在%files目录中解压缩。但是error: File not found指令似乎存在问题,因为其中的任何文件都列为spec。我的%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 文件如下:

float

1 个答案:

答案 0 :(得分:3)

构建RPM的方法是%prep部分(通常只是%setup宏)将任何源文件解压缩到构建目录中。

然后%build部分在构建目录中执行任何编译等,并生成构建/输出文件。

然后%install部分将构建目录中的相应文件复制到%{buildroot}下的“最终”位置。

然后%files部分路径与%{buildroot}中的文件匹配并打包到RPM中。

规范文件中的%install部分没有正确执行此操作。