1 常用命令
- 如何查看已经安装的rpm包?
yum list installed |grep xxx
- 如何查看rpm包里打包了什么?
rpm -qpl packetname.rpm
- 如何解压rpm包
直接解压查看rpm包中的内容
rpm2cpio jdk-linux-x64.rpm |cpio -idmv
-i或--extract:执行copy-in模式,还原备份档
-d或--make-directories:如有需要cpio会自行建立目录
-m或preserve-modification-time:不去更改文件的更改时间
-v或--verbose:详细显示指令的执行过程
- 如何安装srpm?
- 如何查看SPEC里面宏的定义值
rpm --eval xxx
例如:
rpm --eval %{buildroot}
/root/rpmbuild/BUILDROOT/%{NMAE}-%{VERSION}-%{RELEASE}.x86_64
其中%{NAME} %{VERSION} %{RELEASE}就是SPEC开头写的Name,Version,Release
rpm --eval %{kernel_module_package}
- 如何查看spec脚本中的宏
您可以查看 /etc/rpm/* 和 /usr/lib/rpm,以及 /usr/lib/rpm/macros 以进一步了解宏。或使用 rpm --showrc
显示当前 RPM 所使用的宏变量和值(根据 rpmrc 和宏配置文件)
- -n参数 n是name
2 小知识
- %buildroot 等价于$RPM_BUILD_ROOT
- %clean 不写的话,默认BUILDROOT下的文件会被默认删除的
- %files 基础
**您应该列出该软件包拥有的所有文件和目录。**尽量使用宏代替目录名,查看宏列表 Packaging:RPMMacros(例如:使用 %{_bindir}/mycommand 代替 /usr/bin/mycommand)。如果路径以 “/” 开头(或从宏扩展),则从 %{buildroot} 目录取用。否则,假设文件在当前目录中(例如:在 %{_builddir} 中,包含需要的文档)。如果您的包仅安装一个文件,如 /usr/sbin/mycommand,则 %files 部分如下所示:
%files
%{_sbindir}/mycommand
- %defattr(<文件权限>, <用户>, <用户组>, <目录权限>)
第 4 个参数通常会省略。常规用法为 %defattr(-,root,root,-),其中 “-” 表示默认权限。
3 参考资料
- https://fedoraproject.org/wiki/How_to_create_an_RPM_package/zh-cn#.25files_.E9.83.A8.E5.88.86 (推荐,很详细,中文)
- https://blog.csdn.net/biaotai/article/details/108610288
- https://blog.csdn.net/get_set/article/details/53453320
- http://rpm.org/documentation.html (推荐,官网)