我正在构建一个自定义程序包,它在很大程度上具有几个依赖项并安装我自己的文件和脚本。我将这些文件放在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
答案 0 :(得分:3)
构建RPM的方法是%prep
部分(通常只是%setup
宏)将任何源文件解压缩到构建目录中。
然后%build
部分在构建目录中执行任何编译等,并生成构建/输出文件。
然后%install
部分将构建目录中的相应文件复制到%{buildroot}
下的“最终”位置。
然后%files
部分路径与%{buildroot}
中的文件匹配并打包到RPM中。
规范文件中的%install
部分没有正确执行此操作。