2012-01-30 130 views
1

我想爲我的java代碼構建RPM.RPM構建和安裝部分工作正常。但是,後來我添加了一個shell腳本, post部分來運行shell腳本文件來創建一些文件並啓動java應用程序。文件被複製得很好。但是,在%post部分,我得到了失敗的依賴項bin/sh錯誤。我在linux機器和目標機器上構建了rpm是centOS.I也試過AutoReqProv:沒有在spec文件中。我沒有以root用戶的身份運行安裝程序。另外,目標機器不希望有ANT(iam使用它來構建java代碼 - 這可能是與問題無關)。我附上下面的代碼。安裝的默認位置在tmp文件夾中(用於測試)。安裝RPM時發生錯誤 - spec-failed依賴關係的%post腳本/ bin/sh

Summary: test   Summary: test 
     Name: test 
     Version: 1 
     Release: 1 
     License: Restricted 
     Group: Applications/System 
     BuildRoot: ~/rpm/BUILD/helloworld-root 
     URL: http://mycompany.net/helloworld.tar 
     Vendor: Mycompany 
     Packager: Mycompany 
     Prefix: /tmp 
     BuildArchitectures: x86_64 

     %description 
     Hello World 

     %prep 
     pwd 
     %build 
     pwd 
     echo "changing directory" 
     echo $RPM_BUILD_ROOT 
     cd %{_sourcedir} 
     pwd 
     ant -f testbuild.xml 
     %install 
     pwd 
     echo "in install" 
     echo $RPM_BUILD_ROOT 
     rm -rf $RPM_BUILD_ROOT 
     mkdir -p $RPM_BUILD_ROOT/tmp/test/ 
     cd $RPM_BUILD_ROOT/tmp/test/ 
     tar -xf %{_builddir}/test.tar 

     %post 
     sh /tmp/test/createdb.sh 
     %clean 
     %files 
     /tmp/test 
     %changelog 

我還搜查谷歌,但找不到如何從spec.with運行shell腳本推翻後段,我曾嘗試通過命令行來運行它執行fine.I欣賞的幫助,如果有人能問題出在哪裏?

+0

'AutReqProv:no' [可能是一個錯誤](http://www.rpm.org/max-rpm/s1-rpm-inside-tags.html#S3-RPM-INSIDE-AUTOREQPROV-TAG)。你能複製和粘貼實際的命令和錯誤信息嗎? – sarnold 2012-01-30 00:52:09

+0

錯誤是相同的http://stackoverflow.com/questions/3959040/rpm-installation-fails-due-to-depencency-bin-sh-not-found.Except iam沒有登錄作爲根,我得到錯誤當我嘗試安裝rpm.Now IAM不使用AutReqProv時:不。上面介紹了我正在使用的SPEC文件。我的%post帖子是否正確? – keerthi 2012-01-30 01:22:33

回答

1
%post -p /bin/bash 

這會給你的發佈腳本一個終端來運行bash命令和你正在做的所有事情。