linux - 运行带有 --quiet 选项标志的 rpmbuild 命令会产生大量调试信息

标签 linux debugging shell rpm sh

我希望最小化我的 rpm 构建过程的输出。

我运行以下命令:rpmbuild -ba --quiet "/tmp/yaneeve/kit/linux/rpm_spec"

我的系统是:Linux yaneeve-lnx-82-5 2.4.21-47.ELsmp #1 SMP Wed Jul 5 20:38:41 EDT 2006 i686 i686 i386 GNU/Linux

rpmbuild 版本为:RPM version 4.2.3

我的 rpm 规范文件的 %prep 部分是:

%prep

. $LOGGER_FUNC_FILE_LOCATION/logger.sh

SCRIPT_NAME='rpm_spec-prep'
SOURCE_DIR=`readlink -f -n %{_sourcedir}`
PACKAGE_DIR=`readlink -f -n %{_pkg_script_dir}`
BUILD_PRODUCT_DIR=`readlink -f -n %{_build_product_dir}`
RESOURCE_DIR=`readlink -f -n %{_resource_dir}`

log $SCRIPT_NAME INFO "In the prep stage of the rpm spec file..."

if [[ -d $SOURCE_DIR && `ls -a $SOURCE_DIR | wc -w` -gt 2 ]] ; then
    log $SCRIPT_NAME INFO "Source directory exists and is not empty - deleting content."
    rm -rf $SOURCE_DIR//*
    if [ $? -ne 0 ]; then
        log $SCRIPT_NAME ERROR "Unable to remove $SOURCE_DIR/* - exiting."
        exit 1
    fi
fi

if [ ! -f $PACKAGE_DIR/include_src_files.sh ]; then
    log $SCRIPT_NAME ERROR "File list does not exist - aborting."
    exit 1
else
    $PACKAGE_DIR/include_src_files.sh $BUILD_PRODUCT_DIR $RESOURCE_DIR $SOURCE_DIR
    if [ $? -ne 0 ]; then
        log $SCRIPT_NAME ERROR "Unable to run include_src_files.sh script - exiting."
        exit 1
    fi
fi

rpmbuild 结果创建了以下脚本(注意 set -x):

#!/bin/sh

  RPM_SOURCE_DIR="/tmp/yaneeve/output/kit/SOURCES"
  RPM_BUILD_DIR="/tmp/yaneeve/output/kit/BUILD"
  RPM_OPT_FLAGS="-O2 -g -pipe -march=i386 -mcpu=i686"
  RPM_ARCH="i386"
  RPM_OS="linux"
  export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_ARCH RPM_OS
  RPM_DOC_DIR="/usr/share/doc"
  export RPM_DOC_DIR
  RPM_PACKAGE_NAME="YANEEVE-APP"
  RPM_PACKAGE_VERSION="4.2.2.0"
  RPM_PACKAGE_RELEASE="01.0"
  export RPM_PACKAGE_NAME RPM_PACKAGE_VERSION RPM_PACKAGE_RELEASE
  RPM_BUILD_ROOT="/tmp/yaneeve/output/kit/SOURCES"
  export RPM_BUILD_ROOT


  set -x
  umask 022
  cd /tmp/yaneeve/output/kit/BUILD
LANG=C
export LANG
unset DISPLAY


. $LOGGER_FUNC_FILE_LOCATION/logger.sh

SCRIPT_NAME='rpm_spec-prep'
SOURCE_DIR=`readlink -f -n /tmp/yaneeve/output/kit/SOURCES`
PACKAGE_DIR=`readlink -f -n /tmp/yaneeve/output/kit/../../kit/linux`
BUILD_PRODUCT_DIR=`readlink -f -n /tmp/yaneeve/output/kit/..`
RESOURCE_DIR=`readlink -f -n /tmp/yaneeve/output/kit/../../conf`

log $SCRIPT_NAME INFO "In the prep stage of the rpm spec file..."

if [[ -d $SOURCE_DIR && `ls -a $SOURCE_DIR | wc -w` -gt 2 ]] ; then
    log $SCRIPT_NAME INFO "Source directory exists and is not empty - deleting content."
        rm -rf $SOURCE_DIR//*
        if [ $? -ne 0 ]; then
        log $SCRIPT_NAME ERROR "Unable to remove $SOURCE_DIR/* - exiting."
        exit 1
    fi
fi

if [ ! -f $PACKAGE_DIR/include_src_files.sh ]; then
        log $SCRIPT_NAME ERROR "File list does not exist - aborting."
        exit 1
else
    $PACKAGE_DIR/include_src_files.sh $BUILD_PRODUCT_DIR $RESOURCE_DIR $SOURCE_DIR
        if [ $? -ne 0 ]; then
        log $SCRIPT_NAME ERROR "Unable to run include_src_files.sh script - exiting."
        exit 1
    fi
fi

为什么要插入 set -x? 我相信这就是打印大量调试信息的原因? 我究竟做错了什么? 或者,我的 rpmbuild 程序有错误吗?

(抱歉,如果我的问题描述性太强...)

最佳答案

您的发行版上的 %prep 宏已展开,并包含 set -x。
在我的发行版/usr/lib/rpm/macros 中,我发现了以下内容:

export CLASSPATH}\
%{verbose:set -x}%{!verbose:exec > /dev/null}\
umask 022\
cd \"%{u2p:%{_builddir}}\"\

您需要取消设置 verbose 变量以删除“set -x”。

关于linux - 运行带有 --quiet 选项标志的 rpmbuild 命令会产生大量调试信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/919537/

相关文章:

python - 数据打印不正确

c - 使用结构变量数组访问结构

windows - 将 DebugDiag 与内部应用程序结合使用

android - 无法使用 ADB : Error Cannot connect to 127. 0.0.1 在 Hyper-V 虚拟机上调试 android 应用程序

regex - SVN 标签版本号从命令行递增

Java SWT - 缩放背景图像在编译后不起作用

用于登录网站的 Shell 脚本

linux - 每 5 分钟将 curl 输出重定向到动态文件名

c - 如何在我的源代码或系统库中获取一个函数的 cpu 周期和执行时间

linux - 如何从 .NET Core 控制台应用程序创建 Linux 守护进程?