rpm打包记录

spec脚本常用路径宏变量

通过命令rpm --showrc查看实现代码。另外直接通过 rpm --eval "%{macro}"来查看具体对应路径。
比如我们要查看%{_bindir}的路径,就可以使用命令rpm --eval "%{ _bindir}"来查看。
另外,所有的宏都可以在/usr/lib/rpm/macros里找到。
下面是宏对应路径一览表:

Macros mimicking autoconf variables

%{_sysconfdir} /etc

%{_prefix} /usr

%{_exec_prefix} %{_prefix}

%{_bindir} %{_exec_prefix}/bin

%{_lib} lib (lib64 on 64bit systems)

%{_libdir} %{_exec_prefix}/%{_lib}

%{_libexecdir} %{_exec_prefix}/libexec

%{_sbindir} %{_exec_prefix}/sbin

%{_sharedstatedir} /var/lib

%{_datadir} %{_prefix}/share

%{_includedir} %{_prefix}/include

%{_oldincludedir} /usr/include

%{_infodir} /usr/share/info

%{_mandir} /usr/share/man

%{_localstatedir} /var

%{_initddir} %{_sysconfdir}/rc.d/init.d

Note: On releases older than Fedora 10 (and EPEL), %{_initddir} does not exist. Instead, you should use the deprecated %{_initrddir} macro.

RPM directory macros

%{_topdir} %{getenv:HOME}/rpmbuild

%{_builddir} %{_topdir}/BUILD

%{_rpmdir} %{_topdir}/RPMS

%{_sourcedir} %{_topdir}/SOURCES

%{_specdir} %{_topdir}/SPECS

%{_srcrpmdir} %{_topdir}/SRPMS

%{_buildrootdir} %{_topdir}/BUILDROOT

Note: On releases older than Fedora 10 (and EPEL), %{_buildrootdir} does not exist.

Build flags macros

%{_global_cflags} -O2 -g -pipe

%{_optflags} %{__global_cflags} -m32 -march=i386 -mtune=pentium4 # if redhat-rpm-config is installed

Other macros

%{_var} /var

%{_tmppath} %{_var}/tmp

%{_usr} /usr

%{_usrsrc} %{_usr}/src

%{_docdir} %{_datadir}/doc

rpm包查看

rpm -qpl jdk-linux-x64.rpm |more

用Python写了一段在多个rpm包中批量查找指定文件的脚本:

import os ,re
import commands
for root, dirs, files in os.walk('.'):
	for f in files:
		if f[-4:]=='.rpm':
			ret, output = commands.getstatusoutput('rpm -qpl  '+f+'|more |grep libceph-common.so.0')
			if ret == 0:
				if len(output)>1:
					print f

查看版本是1.8.0_131
在这里插入图片描述
也可以直接解压查看rpm包中的内容

rpm2cpio jdk-linux-x64.rpm |cpio -idmv

Python批量解压:

import os ,re
import commands
for root, dirs, files in os.walk('.'):
	for f in files:
		if f[-4:]=='.rpm':
			ret, output = commands.getstatusoutput('rpm2cpio '+f+' |cpio -idmv')
			print f

在这里插入图片描述
查看rpm版本

rpm -qa|grep rpm
在这里插入图片描述

解压所有rpm包
find . -type f -print0 | xargs -0 -I x sh -c ‘rpm2cpio x | cpio -idv’

问题整理
1. RPM 构建错误: 发现已安装(但未打包的)文件:
解决方式1:

vi /usr/lib/rpm/macros

#%__check_files %{_rpmconfigdir}/check-files %{buildroot}

注释以上行

解决方式2:

修改spec文件
在%install下面添加

%define _unpackaged_files_terminate_build 0
2. rpath检测错误

vi ~/.rpmmacros
注释下面这行

 #%__arch_install_post /usr/lib/rpm/check-rpaths /usr/lib/rpm/check-buildroot

参考:
https://www.cnblogs.com/noxy/p/7676871.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值