我正在構建一個自定義軟件包,該軟件包大部分都有一些依賴關係,並安裝了我自己的文件和腳本。我在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