1.rpm常用命令
https://blog.51cto.com/u_16152230/6440742
-ivh:安装显示安装进度--install--verbose--hash
-Uvh:升级软件包--Update;
-e:删除包
--nodeps 忽略软件包的依赖关系强行安装
--force 忽略软件包及文件的冲突
-qi #查询已经安装的rpm组件的信息【 rpm -qi nginx-filesystem 】
-ql #查询已经安装的文件清单 【 rpm -ql wget 】
-qa | grep nginx #查询所有安装的rpm包
-qpl:列出RPM软件包内的文件信息[Query Package list];
rpm -qpl rpms/wget-1.19.5-10.el8.x86_64.rpm
-qpi:列出RPM软件包的描述信息[Query Package install package(s)];
rpm -qpi rpms/wget-1.19.5-10.el8.x86_64.rpm
-qf:查找指定文件属于哪个RPM软件包[Query File];
rpm -qf /usr/share/man/man1/wget.1.gz
-Va:校验所有的RPM软件包,查找丢失的文件[View Lost];
2.rpm包解压与重新打包
yum -y install rpmrebuild rpm-build rpmdevtools
https://blog.csdn.net/bandaoyu/article/details/128597343
2.1提取spec文件:
rpmrebuild -p -n -s wget.spec /root/rpms/wget-1.19.5-10.el8.x86_64.rpm
rpmrebuild 参数说明:
rpmrebuild是一个从rpm包重建rpm文件的工具
-n, --notest-install do not perform a test install
-p, --package use package file, not installed rpm
-s, --spec-only=<specfile> generate specfile only. (If <specfile> "-" stdout will be used)
2.2解压原rpm包
mkdir dst && cd dst #建一个dst目录存放解压出来的文件:
rpm2cpio /root/rpms/wget-1.19.5-10.el8.x86_64.rpm | cpio -div
rpm2cpio
命令用于将rpm软件包转换为cpio格式的文件。
https://blog.csdn.net/qq_33681891/article/details/133375715
2.3重新编出rpm包
mv wget.spec dst/
cd dst/ #将spec文件和解压出来的文件都放在dst目录下
rpmbuild -ba --buildroot /root/dst/ dst/wget.spec #重新编出rpm包
2.4结束
最终新rpm文件位置:
/root/rpmbuild/RPMS/x86_64/wget-1.19.5-10.el8.x86_64.rpm
编译输出:
# ls /root/rpmbuild/
BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
# 生成两个结果文件:
/root/rpmbuild/SRPMS/wget-1.19.5-10.el8.src.rpm
/root/rpmbuild/RPMS/x86_64/wget-1.19.5-10.el8.x86_64.rpm
[root@localhost ~]# rpmbuild -ba --buildroot /root/dst/ dst/wget.spec
Processing files: wget-1.19.5-10.el8.x86_64
warning: Explicit %attr() mode not applicable to symlink: /root/dst/usr/lib/.build-id/8d/ec58c9a41fa3f0d9966de12c634bfa25b11451
warning: File listed twice: /usr/lib/.build-id
warning: File listed twice: /usr/lib/.build-id/8d/ec58c9a41fa3f0d9966de12c634bfa25b11451
Provides: bundled(gnulib) config(wget) = 1.19.5-10.el8 webclient wget = 1.19.5-10.el8 wget(x86-64) = 1.19.5-10.el8
Requires(interp): /bin/sh /bin/sh
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires(post): /bin/sh /bin/sh /sbin/install-info
Requires(preun): /bin/sh /bin/sh /sbin/install-info
Wrote: /root/rpmbuild/SRPMS/wget-1.19.5-10.el8.src.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/wget-1.19.5-10.el8.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.kEIRpv
+ umask 022
+ cd /root/rpmbuild/BUILD
+ /usr/bin/rm -rf /root/dst
+ exit 0