2016-08-20 3 views
1

を失敗した私は、パッチなしで罰金コンパイルspecファイル、持っている:RPMスペックパッチ適用が

[email protected]:~/rpmbuild/SPECS> cat testSoftware.spec 
# 
# This file and all modifications and additions to the pristine 
# package are under the same license as the package itself. 
# 

# norootforbuild 

Name:   testSoftware 
Version:   1.0 
Release:   2 
Summary:   Demo - patch 
Group:   Deployment 
License:   GPLv2 
Url:    www.dell.com 
#PreReq: 
#Provides: 
#BuildRequires: 
Source:   testSoftware.tar.gz 
patch0:   test1.patch 
BuildRoot:  %{_tmppath}/%{name}-%{version}-build 
AutoReqProv: on 

%description 

Authors: 
-------- 
    Raj Kumar 
%prep 
%setup -q 

%build 

%install 
mkdir -p $RPM_BUILD_ROOT/opt/testSoftware 

install test1.sh $RPM_BUILD_ROOT/opt/testSoftware 
install test2.sh $RPM_BUILD_ROOT/opt/testSoftware 

%patch -P 0 
%clean 
rm -rf $RPM_BUILD_ROOT 


%post 
%postun 

%files 
/opt/testSoftware/test1.sh 
/opt/testSoftware/test2.sh 
%defattr(-,root,root,0755) 

をマイSOURCESディレクトリがtest1.patchと* .tar.gzの

[email protected]:~/rpmbuild/SOURCES> ls 
testSoftware.tar.gz 
test1.patch testSoftware-1.0 

を持っています私はspecファイルを実行すると、ここでtest1.patch

[email protected]:~/rpmbuild/SOURCES> cat test1.patch 
--- testSoftware-1.0/test1.sh 2016-08-20 04:49:19.000000000 -0400 
+++ test1.sh 2016-08-20 05:33:45.000000000 -0400 
@@ -1 +1 @@ 
-Hello - Test1 
+Test1 - Test1 - patch 

あり、それは失敗します。

[email protected]:~/rpmbuild/SPECS> rpmbuild -bb testSoftware.spec 
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.10960 
+ umask 022 
+ cd /home/build/rpmbuild/BUILD 
+ cd /home/build/rpmbuild/BUILD 
+ rm -rf testSoftware-1.0 
+ /usr/bin/gzip -dc /home/build/rpmbuild/SOURCES/testSoftware.tar.gz 
+ tar -xf - 
+ STATUS=0 
+ '[' 0 -ne 0 ']' 
+ cd testSoftware-1.0 
++ /usr/bin/id -u 
+ '[' 1001 = 0 ']' 
++ /usr/bin/id -u 
+ '[' 1001 = 0 ']' 
+ /bin/chmod -Rf a+rX,u+w,g-w,o-w . 
+ exit 0 
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.10960 
+ umask 022 
+ cd /home/build/rpmbuild/BUILD 
+ /bin/rm -rf /var/tmp/testSoftware-1.0-build 
++ dirname /var/tmp/testSoftware-1.0-build 
+ /bin/mkdir -p /var/tmp 
+ /bin/mkdir /var/tmp/testSoftware-1.0-build 
+ cd testSoftware-1.0 
+ exit 0 
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.10960 
+ umask 022 
+ cd /home/build/rpmbuild/BUILD 
+ cd testSoftware-1.0 
+ mkdir -p /var/tmp/testSoftware-1.0-build/opt/testSoftware 
+ install test1.sh /var/tmp/testSoftware-1.0-build/opt/testSoftware 
+ install test2.sh /var/tmp/testSoftware-1.0-build/opt/testSoftware 
+ %patch -P 0 
/var/tmp/rpm-tmp.10960: line 28: fg: no job control 
error: Bad exit status from /var/tmp/rpm-tmp.10960 (%install) 


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

誰かが問題点を教えていただけますか?

答えて

-1

%setup -qの後に適用すると機能します。私は%のbuild` `の下で`%のpatch`を移動しても、あるいは、私は同じの下で `%パッチ-p0`を移動した場合でも、

Name:   testSoftware 
Version:   1.0 
Release:   2 
Summary:   Demo - patch 
Group:   Deployment 
License:   GPLv2 
Url:    www.dell.com 
#PreReq: 
#Provides: 
#BuildRequires: 
Source:   testSoftware.tar.gz 
Patch0:   test1.patch 
BuildRoot:  %{_tmppath}/%{name}-%{version}-build 
AutoReqProv: on 

%description 

Authors: 
-------- 
    Raj Kumar 
%prep 
%setup -q 
%patch -p0 

%build 

%install 
mkdir -p $RPM_BUILD_ROOT/opt/testSoftware 

install test1.sh $RPM_BUILD_ROOT/opt/testSoftware 
install test2.sh $RPM_BUILD_ROOT/opt/testSoftware 

%clean 
rm -rf $RPM_BUILD_ROOT 
1

%patchマクロを認識しておらず、そのテキストをシェルに正確に送信していることがわかります。これは、%をバックグラウンドジョブ制御プロセスの参照として解釈します。これは%patch%buildのステップであり、specfileの間違ったセクションにあるためです(%installにあります)。

%buildに移動しても問題ありません。

+0

それでも同じエラー:以下 作品修正specファイルです。 – kingsmasher1

+0

それは変です。その上に空白があることを確認してください。私はRPMが時には説明や何かの一部として物事を誤解しているのを見ました。場合によっては(ストローで把握)、 'パッチ:'フィールドを大文字にすることがありますか? –

+0

私は 'Patch0:test1.patch'を大文字にし、'%build'と '%patch'の間に空白を追加しました。その間に私はいつも毎回 'rpmbuild -bb testSoftware_patch.spec'として実行します。('%patch'は '%Patch'と同様に試してみましたが、運がありません) – kingsmasher1

関連する問題