rpm打包之前会执行: /usr/lib/rpm/check-buildroot, 其逻辑为,检查将要打包的文件中是否包含buildroot,因为这只是build时候的临时目录,如果出现在打包文件中,就可能会出现问题,起检查方法简单粗暴:
| 
					 1  | 
						grep -F "$RPM_BUILD_ROOT"  | 
					
如果包含,就会报类似如下的错误信息,然后退出
| 
					 1  | 
						Found '/data3/rpmbuild/BUILDROOT/gdb-8.0-1.el7.centos.x86_64' in installed files; aborting  | 
					
关于check-buildroot脚本:
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19  | 
						test -z "$QA_SKIP_BUILD_ROOT" || exit 0 if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then         exit 0 fi tmp=$(mktemp ${TMPDIR:-/tmp}/cbr.XXXXXX) trap "rm -f $tmp" EXIT find "$RPM_BUILD_ROOT" \! \( \     -name '*.pyo' -o -name '*.pyc' -o -name '*.elc' -o -name '.packlist' \     \) -type f -print0 | \     LANG=C xargs -0r grep -F "$RPM_BUILD_ROOT" >$tmp test -s "$tmp" && {     cat "$tmp"     echo "Found '$RPM_BUILD_ROOT' in installed files; aborting"     exit 1 } || :  | 
					
其一:
通过mktemp来创建临时文件,根本不需要自己制造随机文件名
其二:
| 
					 1  | 
						trap "rm -f $tmp" EXIT  | 
					
保证在脚本退出后删除临时文件
其三:
| 
					 1  | 
						test -s "$tmp" && { exit 1; } || :  | 
					
注意,这里 ” || : ” 的用法,保证test为假时脚本退出码为零