首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RPM-SPEC - Bash脚本未安装%post规范文件中指定的软件包

RPM-SPEC - Bash脚本未安装%post规范文件中指定的软件包
EN

Stack Overflow用户
提问于 2019-09-28 00:27:04
回答 1查看 291关注 0票数 0

我编写了一个bash脚本来安装多个包,并在%post中调用该bash脚本。但是它并没有执行脚本。我是这个领域的新手,我不确定我错过了什么。

如果我手动执行这个脚本,它工作得很好,但不是通过rpm包。

InstallRPM.spec文件:

代码语言:javascript
复制
Name:           InstallRPM
Version:        1
Release:        1%{?dist}
Summary:        Install RPM Packages

License:        Script
URL:            NA
Source0:        InstallRPM-1.tar.gz
BuildArch:      noarch
BuildRoot:      %{_tmppath}/%{name}-buildroot
Requires:       /bin/sh

%description
Install RPM files from the /tmp/ folder

%prep
%setup -q

%install
mkdir -p "$RPM_BUILD_ROOT"
cp -R * "$RPM_BUILD_ROOT"


%post
echo "Executing the script /tmp/InstallRPM.sh"
/tmp/InstallRPM.sh

%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root,-)
/tmp/InstallRPM.sh

Shell脚本:

代码语言:javascript
复制
#!/bin/bash
echo "Installing package using YUM"
package="vim zip"

echo "Install $package ..."
if [ "`cat /etc/centos-release | awk '{print $1}'`" == "CentOS" ]
then
{
        for i in $package
        do
        {
                #if [ "`/bin/rpm -qa $i | cut -d. -f1`" == "" ]
                if [ "`/bin/rpm -qa $i`" == "" ]
                then
                {
                        echo "Clean Install"
                        /usr/bin/sudo /bin/yum install -y $i
                }
                else
                {
                        echo "Upgrade"
                        /usr/bin/sudo /bin/yum update -y $i
                }
                fi
                echo "****************"
        }
        done
}
fi

我运行了rpmbuild -ba InstallRPM.spec,它创建了一个rpm文件,我执行了该文件,但什么也没有发生。它被挂在下面提到的地方。

代码语言:javascript
复制
Downloading packages:
vim-enhanced-7.4.629-6.el7.x86_64.rpm                                                                                               | 1.1 MB  00:00:02
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
^C
EN

回答 1

Stack Overflow用户

发布于 2019-09-30 17:23:10

您正在以错误的方式使用rpm。不要在%post脚本中安装依赖项。我建议你先读一下the rpm packaging guide

您应该在等级库文件中使用Requires,如下所示:

代码语言:javascript
复制
Requires: vim
Requires: zip
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58138331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档