一.关于srpm包

​ SRPM包是Source RPM的简称,SRPM包里包含有源代码,如果想要安装SRPM包,需要以RPM管理的方式编译,将SRPM编译成为

RPM文件,然后将编译完成的RPM文件安装到Linux系统中。SRPM 最大的优点就是可以让使用者自行修改设置参数,以符合使用者自己

的 Linux 环境;

二.srpm包和rpm包的区别

文件格式 软件包包名格式 是否可直接安装 内含程序类型 可否修改参数并编译
RPM xxx.rpm 已编译的二进制文件 不可
SRPM xxx.src.rpm 不可 源代码

三.不对srpm包做修改,直接安装srpm包

1.当我们拿到一个srpm包的时候,我们不准备对srpm包做修改,要直接安装的时候,有两种安装方法:

  • ​ 方法一:rpmbuild --rebuild ***.src.rpm ,这个命令将src.rpm包进行“编译”与“打包”产生 RPM安装包,然后我们可以使用rpm -ivh进行安装;
  • ​ 方法二:rpmbuild --recompile ***.src.rpm,这个命令将src.rpm包进行“编译”,“打包”和安装。执行这个命令后srpm包已经安装好了。

2.使用第一种方法安装srpm包(rpmbuild --rebuild)

#准备一个srpm源码包lrzsz
[root@node5 ~]# ll lrzsz-0.12.20-27.1.el6.src.rpm
-rw-r--r-- 1 root root 290240 Oct 25 2018 lrzsz-0.12.20-27.1.el6.src.rpm [root@node5 ~]# rpm -q lrzsz
lrzsz-0.12.20-36.el7.x86_64 #首先卸载系统中已经安装的lrzsz程序
[root@node5 ~]# yum remove lrzsz -y [root@node5 ~]# rpm -q lrzsz
package lrzsz is not installed #将src.rpm包进行“编译”与“打包”产生 RPM安装包
[root@node5 ~]# rpmbuild --rebuild lrzsz-0.12.20-27.1.el6.src.rpm
-bash: rpmbuild: command not found #发现没有rpmbuild这个命令,需要先安装一下
[root@node5 ~]# yum install rpm-build #将src.rpm包进行“编译”与“打包”产生 RPM安装包
[root@node5 ~]# rpmbuild --rebuild lrzsz-0.12.20-27.1.el6.src.rpm [root@node5 ~]# echo $?
0
[root@node5 ~]# ls rpmbuild/
BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
[root@node5 ~]# ls rpmbuild/RPMS/
x86_64 #rpmbuild --rebuild这一步产生的rpm安装包放在了/root/rpmbuild/RPMS/x86_64/下面
[root@node5 ~]# ls rpmbuild/RPMS/x86_64/
lrzsz-0.12.20-27.1.el7.centos.x86_64.rpm lrzsz-debuginfo-0.12.20-27.1.el7.centos.x86_64.rpm #安装rpm包
[root@node5 ~]# rpm -ivh /root/rpmbuild/RPMS/x86_64/lrzsz-0.12.20-27.1.el7.centos.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:lrzsz-0.12.20-27.1.el7.centos ################################# [100%] #自此,lrzsz已经重新安装
[root@node5 ~]# rpm -q lrzsz
lrzsz-0.12.20-27.1.el7.centos.x86_64

四.对srpm包的源码进行修改,然后安装srpm包

1.srpm包里含有源代码,那肯定就有配置文件和相关目录,下面先介绍srpm包中各个目录的作用。解压srpm包之后,一般会生成一个rpmbuild目录,我们是在/root目录下生成的,所以解压srpm包之后,对应的文件都在/root/rpmbuild/下面:

#解压srpm包
[root@node5 ~]# rpm -ivh ntp-4.2.6p5-19.el7.centos.1.src.rpm [root@node5 ~]# ls /root/rpmbuild/
BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
目录名 目录作用描述
/root/rpmbuild/SPECS 这个目录当中放置的是该软件的配置文件,例如这个软件的信息参数、设置项目等等都放置在这里,SPECS目录里一般有***.spec配置文件;
/root/rpmbuild/SOURCES 这个目录当中放置的是该软件的原始文件 (*.tar.gz 的文件) 以及 config 这个配置文件;
/root/rpmbuild/BUILD 在编译的过程中,有些暂存的数据都会放置在这个目录当中;
/root/rpmbuild/RPMS 经过编译之后,并且顺利的编译成功之后,将打包完成的文件放置在这个目录当中。里头有包含了 x86_64, noarch…. 等等的文件;
/root/rpmbuild/SRPMS 与 RPMS 内相似的,这里放置的就是 SRPM 封装的文件,有时候你想要将你的软件用 SRPM 的方式释出时, 你的 SRPM 文件就会放置在这个目录中了。

2.当我们拿到一个srpm包的时候,我们准备对srpm包做修改,一般都是修改SPECS目录下的***.spec文件,然后进行编译成为rpm包或者srpm包,编译指令有两个:

​ rpmbuild -ba rpmbuild/SPECS/***.spec #编译产生 RPM 文件与 SRPM 文件

​ rpmbuild -bb rpmbuild/SPECS/***.spec #仅编译成 RPM 文件

#首先下载我们需要的srpm包
[root@node5 ~]# wget http://vault.centos.org/7.1.1503/updates/Source/SPackages/ntp-4.2.6p5-19.el7.centos.1.src.rpm #解压srpm包,会有一堆warn,但是不影响
[root@node5 ~]# rpm -ivh ntp-4.2.6p5-19.el7.centos.1.src.rpm #解压srpm包之后,文件都在rpmbuild目录中
[root@node5 ~]# ls rpmbuild/
SOURCES SPECS [root@node5 ~]# ls rpmbuild/SPECS/
ntp.spec [root@node5 ~]# ls rpmbuild/SOURCES/
ntp-4.2.4p7-getprecision.patch ntp-4.2.6p4-droproot.patch ntp-4.2.6p5-fipsmd5.patch ntp-4.2.6p5-pwcipher.patch ntp.cryptopw ntp.keys ntp.step-tickers
ntp-4.2.6p1-cmsgalign.patch ntp-4.2.6p4-htmldoc.patch ntp-4.2.6p5-hexpw.patch ntp-4.2.6p5-refreshroute.patch ntpdate.service ntpstat-0.2-clksrc.patch ntp-wait.service
ntp-4.2.6p1-linkfastmath.patch ntp-4.2.6p5-cve-2014-9293.patch ntp-4.2.6p5-identlen.patch ntp-4.2.6p5-rootdisp.patch ntpdate.sysconfig ntpstat-0.2-errorbit.patch sntp.service
ntp-4.2.6p1-retcode.patch ntp-4.2.6p5-cve-2014-9294.patch ntp-4.2.6p5-logdefault.patch ntp-4.2.6p5.tar.gz ntpdate.wrapper ntpstat-0.2-maxerror.patch sntp.sysconfig
ntp-4.2.6p1-sleep.patch ntp-4.2.6p5-cve-2014-9295.patch ntp-4.2.6p5-mlock.patch ntp-4.2.6p5-updatebclient.patch ntp.dhclient ntpstat-0.2-multipacket.patch
ntp-4.2.6p3-bcast.patch ntp-4.2.6p5-cve-2014-9296.patch ntp-4.2.6p5-multiopts.patch ntp-4.2.6p5-xleap.patch ntpd.service ntpstat-0.2-sysvars.patch
ntp-4.2.6p3-broadcastdelay.patch ntp-4.2.6p5-delaycalib.patch ntp-4.2.6p5-noservres.patch ntp.conf ntpd.sysconfig ntpstat-0.2.tgz #假设我们已经按照要求修改过rpmbuild/SPECS/ntp.spec配置文件,下面进行编译
[root@node5 ~]# rpmbuild -ba /root/rpmbuild/SPECS/ntp.spec
error: Failed build dependencies:
libedit-devel is needed by ntp-4.2.6p5-19.el7.centos.1.x86_64
perl-HTML-Parser is needed by ntp-4.2.6p5-19.el7.centos.1.x86_64
pps-tools-devel is needed by ntp-4.2.6p5-19.el7.centos.1.x86_64
autogen is needed by ntp-4.2.6p5-19.el7.centos.1.x86_64
autogen-libopts-devel is needed by ntp-4.2.6p5-19.el7.centos.1.x86_64 #根据报错可知,缺少依赖包,我们先安装一下
[root@node5 ~]# yum -y install libedit-devel perl-HTML-Parser pps-tools-devel autogen autogen-libopts-devel #假设我们已经按照要求修改过rpmbuild/SPECS/ntp.spec配置文件,下面进行编译
[root@node5 ~]# rpmbuild -ba /root/rpmbuild/SPECS/ntp.spec [root@node5 ~]# echo $?
0 [root@node5 ~]# ls /root/rpmbuild/
BUILD BUILDROOT RPMS SOURCES SPECS SRPMS [root@node5 ~]# ls /root/rpmbuild/RPMS/
noarch x86_64
[root@node5 ~]# ls /root/rpmbuild/RPMS/x86_64/
ntp-4.2.6p5-19.el7.centos.1.x86_64.rpm ntpdate-4.2.6p5-19.el7.centos.1.x86_64.rpm ntp-debuginfo-4.2.6p5-19.el7.centos.1.x86_64.rpm sntp-4.2.6p5-19.el7.centos.1.x86_64.rpm [root@node5 ~]# ls /root/rpmbuild/SRPMS/
ntp-4.2.6p5-19.el7.centos.1.src.rpm

自此我们看到已经成功编译出了rpm包和srpm包,现在只需要按照“不对srpm包做修改,直接安装srpm包”安装即可。

参考链接:

https://www.bluestep.cc/22-4-srpm-的使用-:-rpmbuild-(optional)/

https://blog.csdn.net/huangdeijia/article/details/88953444

linux下srpm源码包的使用和安装的更多相关文章

  1. LINUX下编译源码时所需提前安装的常用依赖包列表

    yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-deve ...

  2. linux下 python源码包解压报错

    执行下面的命令 tar -zvxf Python.3.6.5.tgz 报错 gzip: stdin: not in gzip format tar: Child returned status 1 t ...

  3. Linux 系统下用源码包安装软件

    Linux系统下用源码包安装软件 by:授客 QQ:1033553122 下载源码安装包,解压或者直接双击打开(如果有安装zip或rar等压缩/解压缩软件的话),查找相关的安装说明文件,一般是READ ...

  4. Linux学习之源码包安装与脚本安装(十八)

    Linux学习之源码包安装与脚本安装 目录 源码包与RPM包的区别 源码包安装 脚本安装 源码包与RPM包的区别 1.区别 安装之前的区别:概念上的区别 安装之后的区别:安装位置不同 源码包: 开源的 ...

  5. Linux软件包(源码包和二进制包)及其区别和特点

    Linux 下的软件包众多,而且几乎都是经 GPL 授权的,也就是说这些软件都免费,振奋人心吧?而且更棒的是,这些软件几乎都提供源代码(开源的),只要你愿意,就可以修改程序源代码,以符合个人的需求和习 ...

  6. linux软件管理 源码包

    源码包安装位置 安装在指定位置当中,一般是 /usr/local/软件名/ ​ 注意: 需要指定安装路劲为了便于卸载,因为源码包的是没有卸载命令的,它的的卸载方式就是把对应安装文件夹删除了. 所以如果 ...

  7. ulipad源码包配置环境及安装

    一.准备下载的安装包: 1.python(我电脑配置的是2.7)下载地址http://pan.baidu.com/s/1qWrGZk4 2.wxpython(我这里是wxpy3.0,配套python2 ...

  8. 在Linux下用源码编译安装apache2

    Linux下安装一个软件,最好去看下它的官方guide,apache2.4的安装安装guide 0. installation guide http://httpd.apache.org/docs/2 ...

  9. linux下python3源码安装及卸载

    Linux下Python3的源码编译安装和卸载方法 [日期:2019-06-21] 来源:博客园  作者:wuli潇萧 [字体:大 中 小]     (一)Linux下软件的源码编译安装和卸载方法 L ...

  10. linux下JUCE源码编译依赖库

    JUCE 源码https://github.com/julianstorer/JUCE 想在ubuntu下编译需要提前安装以下依赖库 sudo apt-get install mesa-common- ...

随机推荐

  1. Spring Boot 嵌入式服务器、Hibernate 关系和 Spring Data 全解析

    嵌入式服务器 Spring Boot 的嵌入式服务器功能是一项方便而强大的功能,它允许你在应用程序中直接运行 Web 服务器,无需将其部署到单独的独立 Web 服务器中.这使得开发.测试和部署 Web ...

  2. 【鸿蒙千帆起】高德地图携手HarmonyOS NEXT,开启智能出行新篇章

    2024年1月18日下午,华为举办了鸿蒙生态千帆启航仪式,对外宣布HarmonyOS NEXT星河预览版现已开放申请,同时,首批200+鸿蒙原生应用加速开发,鸿蒙生态设备数量更是突破了8亿大关.这些进 ...

  3. Device Partner平台合作伙伴认证和数据安全保护

     Device Partner平台是面向AIoT产业链伙伴的一站式服务平台,伙伴可以通过平台获取最新的产品.服务与解决方案,实现智能硬件产品的开发.认证.量产和推广等全生命周期的管理,加入Harmon ...

  4. HarmonyOS NEXT调优工具Smart Perf Host高效使用指南

      在软件开发的过程中,很多开发者都经常会遇到一些性能问题,比如应用启动慢.点击滑动卡顿.应用后台被杀等,想要解决这些问题势必需要收集大量系统数据.而在收集数据的过程中,开发者则需要在各种工具和命令之 ...

  5. WGAN

    wgan之前, 原始GAN出现了什么问题? https://www.cnblogs.com/Allen-rg/p/10305125.html 判别器越好,生成器梯度消失越严重 一句话概括:最小化第二种 ...

  6. Ez_pycode_dis qsnctfwp

    Python字节码基础 下载相关文件并打开,其中为 Python 字节码. 字节码格式为 源码行号 | 指令在函数中的偏移 | 指令符号 | 指令参数 | 实际参数值 根据上述字节码格式以及文件内容开 ...

  7. InnoDB常用锁总结(行锁、间隙锁、临键锁、表锁)

    相关文章 数据库系列:MySQL慢查询分析和性能优化 数据库系列:MySQL索引优化总结(综合版) 数据库系列:高并发下的数据字段变更 数据库系列:覆盖索引和规避回表 数据库系列:数据库高可用及无损扩 ...

  8. 使用OpenMMLab系列的开源库时,常用的脚本合集。

    使用OpenMMLab系列的开源库时,常用的脚本合集. 开源仓库:gy-7/mmlab_scripts 脚本解释: anchor_visiual.py 生成的锚框可视化 aug_test.py 自动数 ...

  9. Linux 安装 adb环境

    一. 查看系统是否安装有adb adb或者adb version 二.通过apt-get安装adb 1. 安装adb sudo apt-get install android-tools-adb 2. ...

  10. 我在阿里巴巴做 Serverless 云研发平台

    简介: Serverless 云研发平台经过这半年多的蜕变,已经从简单的解决工程链路的平台演进成一个面向研发.上线.运维的全生命周期研发平台,后续要解决的命题会集中在用户低门槛上. 作者 | 林昱(苏 ...