⑥ 源 SRPM 安装

目录

1. 源 SRPM 介绍

2. 获取 SRPM

下载的网站:

3.使用 SRPM 来安装软件

3.1 实验:tree 命令的 SRPM 的编译安装使用

3.3.1 方式一:

3.3.2 方式二:


1. 源 SRPM 介绍

RPM 包是已经编译好的归档的软件包,这类包只要在符合的环境下就可以使用了,但是这也是 RPM 的一个问题,由于 RPM包 的使用对环境有要求,所以适配A环境的RPM包就不能适配B环境。

  • RPM包分为:
    • 二进制包 Binary
    • 源代码包 Source
    • Delta包

SRPM 是一种特殊的包,这个包含有源代码,由于源代码没有进行编译所以需要在某台机器上进行编译生成一个 新的RPM包 随后就能在该主机上使用了,通常情况下都是使用官方的、安装介质上的 RPM包。

SRPM 包与 RPM包  的命名类似只是在 RPM包的后缀前面有 rsrc。示列:xxx.src.rpm

大多的软件项目在推出 rpm 的时候也会有 源rpm

还有一种 tar包 的格式,tar包 用于最后的情况,一般是指没有 SRPM 的情况。

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

早期的 SRPM 必须要使用 root 身份来进行编译,同时源代码会放置在 /usr/src/redhat 目中中,现在则存放于 /家目录/rpmbuild/ 目录中

编译的时候需要有 make、gcc、c、c++ 等其它编译用的程序语言来进行编译。

2. 获取 SRPM

一般软件在发行编译包的时候会附带源码包。

下载的网站:

https://pkgs.org/

pkgs 是一个不错的网站,里面整合了各个发行版的包,在下载的包页面会有包的出处,这里面也就有源RPM包的下载地址。

比如在 CentOS7 的 x86_64​​​​ 中可以找到这些包,这里 MySQL-python-1.2.5-1.el7.x86_64.rpmicon-default.png?t=N7T8https://centos.pkgs.org/7/centos-x86_64/MySQL-python-1.2.5-1.el7.x86_64.rpm.html

在下载页面可以的 Download 板块可以找到 RPM包 的下载页面、SRPM 包的下载页面如下:

这样就可以获取 SRPM包 的下载地址了。

3.使用 SRPM 来安装软件

有两种方式来实现 SRPM包 的安装

  • 方式一:编译 + 打包形成一个新的 RPM,用新的 RPM包 来安装
  • 方式二:编译 → 安装

由于第二种方式并不能生成 rpm包 所以并不推荐使用。

3.1 实验:tree 命令的 SRPM 的编译安装使用

  • 编译的SRPM:tree-1.6.0-10.el7.src.rpm
  • 操作系统平台:CentOS Linux release 7.5.1804 (Core)
  • 预先安装程序:gcc、mock、rpm-build

预先需要的操作:

[root@localhost ~]# useradd -s /sbin/nologin mockbuild

tree-1.6.0-10.el7.src.rpm 的下载地址:

https://vault.centos.org/centos/7/os/Source/SPackages/tree-1.6.0-10.el7.src.rpmicon-default.png?t=N7T8https://vault.centos.org/centos/7/os/Source/SPackages/tree-1.6.0-10.el7.src.rpm

3.3.1 方式一:

rpm -ivh tree-1.6.0-10.el7.src.rpm 
rpmbuild -bb rpmbuild/SPECS/tree.spec
rpm -ivh rpmbuild/RPMS/x86_64/tree-1.6.0-10.el7.x86_64.rpm

使用 SRPM包 的过程与安装标准 RPM包  的过程是一样的,都是使用 rpm -ivh 。

rpm -ivh xxx.src.rpm 会创建一个名为 rpmbuild 的目录,在这个目录中有两个子目录 SOURCE、SPECS 。

  • rpmbuild 
    • SOURCE:用于保存源代码
    • SPECS:保存配置文件

rpmbuild 会的 -bb 第一个是的 b 是 build ,第二个是 binary 二进制的意思这用于构建二进制包。

rpmbuild 会根据 /SPECS/tree.spec 这个文件来进行相关的操作在 /家目录/rpmbuild/ 会有

  • BUILD                  在编译过程中,有些暂时的数据都会放置在这个目录中
  • BUILDROOT
  • RPMS                   编译后将打包的完成的包文件放置在该目录下
  • SOURCE              这个目录当中放置的是该软件的原始文件以及 config 这个配置文件
  • SPECS                 这个目录放置该软件的配置文件,包括这个软件的信息参数、设置项目等
  • SRPMS                 放置的是 SRPM 封装的文件,用于将软件以 SRPM 的方式输出

这四个新的子目录,tree.spec 这个参数文件会把源代码解压到 BUILD 目录下,随后需要调用 gcc 编译生成二进制文件,编译后就能生成一个 RPM 包,文件会保存在 RPMS 目录中。

在 /家目录/rpmbuild/BUILD/tree-1.6.0/tree 这里包括了源文件、生成文件、这里面的 tree 是可以执行的。

如:

[root@localhost ~]# /家目录/rpmbuild/BUILD/tree-1.6.0/tree /home/

3.3.2 方式二:

[root@localhost ~]# mkdir testsrcrpm
[root@localhost ~]# cd testsrcrpm/
[root@localhost testsrcrpm]# wget https://vault.centos.org/centos/7/os/Source/SPackages/tree-1.6.0-10.el7.src.rpm
[root@localhost ~]# rpm -ivh testsrcrpm/tree-1.6.0-10.el7.src.rpm
[root@localhost ~]# rpmbuild -bp rpmbuild/SPECS/tree.spec
[root@localhost ~]# cd rpmbuild/BUILD/tree-1.6.0/
[root@localhost tree-1.6.0]# more INSTALL
[root@localhost tree-1.6.0]# make
[root@localhost tree-1.6.0]# ./tree
[root@localhost tree-1.6.0]# make install
[root@localhost tree-1.6.0]# ll /usr/bin/tree
-rwxr-xr-x 1 root root 71000 Jun 28 03:18 /usr/bin/tree
[root@localhost tree-1.6.0]# rpm -qi tree

与 方式一 类似,只是使用的不是 rpmbuild -bb 而是 rpmbild -bp 这里的 p 是准备的意思,表示并不会进行编译而是创建目录结构,之后提取包中的源文件,并打上补丁。

第二种编译安装与 tar包 类似,在操作的目录下进行 make、make install 。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值