【问题标题】:RPM-Build -How to print error message at rpm install at clientRPM-Build - 如何在客户端安装 rpm 时打印错误消息
【发布时间】:2012-12-04 08:34:19
【问题描述】:

我的要求是,如果 rpm 安装在任何情况下在客户端机器上失败,我想在屏幕上打印一些消息。或者在屏幕上显示消息,如 rpm install 由于任何生成的原因而失败。就像其他标准 rpm 给出的那样。

我没有在我的 .spec 文件中制作任何 c 文件或制作命令。我在规范文件本身中所做的一切。请建议如何使用规范文件在客户端控制台中打印这种类型的东西。


是的,这不是我关心的问题——测试我只给出了示例。我的 excet 要求低于规范文件内容。

#Pre-Uninstall section

%preun
Processes=`ps -Ao"%p:%a"  --cols 150 |
 egrep "Launcher|rmiregistry" | grep -v grep | cut -d ":" -f1`
         if [ -n "$Processes" ]; then
                echo 'xyz is running ,first stop it then uninstall.' > /dev/stderr;
                exit 1;
         else
                 echo 'xyz service is not running' >/dev/stdout;
         fi

然后我尝试使用命令卸载 rpm

rpm -ev xyz

输出: 两条消息都是根据服务状态打印的。如果客户端使用选项 -v 卸载,我想然后它在屏幕上显示消息,否则不显示。我该怎么做?

【问题讨论】:

    标签: rpm rpmbuild rpm-spec sharpmap


    【解决方案1】:

    打印到STDERR 将始终显示给客户。 STDOUT 如果安装时带有详细选项,则会显示。

    echo 'Something may be wrong!' > /dev/stderr
    

    【讨论】:

    • 文件大小为0,链接其他文件 /dev/stdout --> /proc/self/fd/1 --> /dev/pts/0
    • @miteshpatel 是的,但没关系。这些只是进程 IO 正常处理的系统内部结构。 /dev/pts/0 是您工作的(虚拟)终端,例如。 G。终端仿真或 SSH 连接中的一个选项卡。
    • 你的命令行是什么?我问是因为昨天您声称它不起作用,因为您使用的是--test,我已经在另一个答案的 cmets 中提到了这一点。
    【解决方案2】:

    您可以定义%pre%post%preun%postun 部分。他们将包的当前安装数量作为参数。见here

    RPM 书的相应部分详细介绍了这些脚本。本质上,脚本在执行前被写入文件,然后运行。

    【讨论】:

    • 您能否提供更多详细信息。
    • 是的,但我的要求就像我在客户端机器上安装时构建 rpm 然后假设安装命令是 rpm -ivh demo.rpm 代替我使用 rpm -ivh --test demo.rpm它没有给出任何错误消息。我不确定它是否可能。
    • 这是因为--test 只会测试事务是否有效。它不会执行任何从只读操作运行的脚本。
    猜你喜欢
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多