1

我正在尝试为我的 java 代码构建 RPM。RPM 构建和安装部分工作正常。但是,后来我在 %post 部分添加了一个 shell 脚本来运行创建一些文件并启动 java 应用程序的 shell 脚本文件。文件获取复制得很好。但是,在 %post 部分中,我得到了失败的依赖项 bin/sh 错误。我正在 linux 机器上构建 rpm,目标机器是 centOS。我也尝试过AutoReqProv: no in spec file。我没有运行安装作为 root 用户。另外,目标机器上不应该有 ANT(iam 使用它来构建 java 代码 - 这可能与问题无关)。我附上下面的代码。默认安装位置在tmp 文件夹。(用于测试)。

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 oust post部分运行shell脚本,我试图通过命令行运行它执行得很好。如果有人能指出问题所在,我很感激帮助?

4

1 回答 1

2
%post -p /bin/bash

这将为您的 post 脚本提供一个终端来运行 bash 命令以及您正在执行的所有操作。

于 2012-02-13T07:19:42.493 回答