首页 > 系统相关 >Linux 源码包安装

Linux 源码包安装

时间:2023-11-13 20:31:42浏览次数:33  
标签:el6 rpm RPM rpmbuild 源码 Linux root SRPM 安装

SRPM 包,比 RPM 包多了一个“S”,是“Source”的首字母,所以 SRPM 可直译为“源代码形式的 RPM 包”。也就是说,SRPM 包中不再是经过编译的二进制文件,都是源代码文件。可以这样理解,SRPM 包是软件以源码形式发布后直接封装成 RPM 包的产物。

Linux 源码包安装_当前目录

从表中可以看到,SRPM 包的命名与 RPM 包基本类似,唯一区别在于 SRPM 包多了“src”标志,即 SRPM 包采用“包名-版本号-发布次数-发行商-src.rpm”的方式进行命名,比如“MySQL-5.5.29-2.el6.src.rpm”。

Linux 源码包安装_当前目录_02

rpmbuild 命令的安装

rpmbuild 命令也是一个程序,但是这个程序不会默认安装,所以要想使用 rpmbuild 命令就必须提前安装。这里我们使用 rpm 命令来安装 rpmbuild 命令,如下所示:

[root@localhost~]#rpm -ivh /mnt/cdroin/Packages/rpm-build-4.8.0-27.el6.i686.rpm
Preparing...
###################
[100%]
1:rpm-build
###################
[100%]

Linux 源码包安装_当前目录_03

rpmbuild命令安装SRPM包

如果我们只想安装 SRPM 包,而不用修改源代码,那么直接使用 rpmbuild 命令即可。使用 rpmbuild 安装 SRPM 包的命令格式如下:

[root@localhost ~]# rpmbuild [选项] 包全名

可使用如下 2 个选项:

Linux 源码包安装_编译过程_04

-rebuild:编译 SRPM 包生成 RPM 二进制包;
-recompile:编译 SRPM 包,同时安装。

这里我们选择使用 -rebuild 选项先将 SRPM 包编译成 RPM 二进制包,命令如下所示:

Linux 源码包安装_当前目录_05

[root@localhost ~]# rpmbuild -rebuild httpd-2.2.15-5.el6.src.rpm
warning: InstallSourcePackage at: psm.c:244: Header V3 RSA/SHA256 Signature, key
ID fd431d51: NOKEY
warning: user mockbuild does not exist - using root
warning: group mockbuild does not exist - using root
#警告为mockbuild用户不存在,使用root代替。这里不是报错,不用紧张
…省略部分输出…
Wrote: /root/rpmbuild/RPMS/i386/ httpd-2.2.15-5.el6.i386.rpm
Wrote: /root/rpmbuild/RPMS/i386/httpd-devel-2.2.15-5.el6.i386.rpm
Wrote: /root/rpmbuild/RPMS/noarch/httpd-manual-2.2.15-5.el6.noarch.rpm
Wrote: /root/rpmbuild/RPMS/i386/httpd-tools-2.2.15-5.el6.i386.rpm
Wrote: /root/rpmbuild/RPMS/i386/ mod_ssl-2.2.15-5.el6.i386.rpm
#写入RPM包的位置,只要看到,就说明编译成功
Executing(%clean): /bin/sh -e/var/tmp/rpm-tmp.Wb8TKa
+ umask 022
+ cd/root/rpmbuild/BUILD
+ cd httpd-2.2.15
+ rm -rf /root/rpmbuild/BUILDROOT/httpd-2.2.15-5.el6.i386
+ exit 0
Executing(-clean): /bin/sh -e/var/tmp/rpm-tmp.3UBWql
+ umask 022
+ cd/root/rpmbuild/BUILD
+ rm-rf httpd-2.2.15
+ exit 0

exit 0 是编译成功的标志,此编译过程产生的临时文件会自动删除。SRPM 包编译完成后,会在当前目录生成 rpmbuild 目录,整个编译过程生成的文件(软件包)都存在这里。

[root@localhost ~]# ls /root/rpmbuild/BUILD RPMS SOURCES SPECS SRPMS

利用 *.spec 文件安装

想利用 .spec 文件安装软件,需先将 SRPM 包解开。当然,我们可以使用 rpmbuild 命令解开 SRPM 包,但这里选择另一种方式,即使用 rpm -i 命令,如下所示:

[root@localhost ~]# rpm -i httpd-2.2.15-5.el6.src.rpm

-i 选项用于安装 rpm 包时表示安装,但对于 SRPM 包的安装来说,这里只会将 .src.rpm 包解开后将个文件放置在当前目录下的 rpmbuild 目录中,并不涉及安装操作。通过此命令,也可以在当前目录下生成 rpmbuild 目录,但与表 2 不同,此 rpmbuild 目录中仅有 SOURCES 和 SPECS 两个子目录。其中,SOURCES 目录中放置的是源码,SPECS 目录中放置的是设置文件。接下来使用 SPECS 目录中的设置文件生成 RPM 包,命令如下:

[root@localhost ~]# rpmbuild -ba /root/rpmbuild/SPECS/httpd.spec

其中,-ba 选项的含义是编译,会同时生成 RPM 二进制包和 SRPM 源码包。这里还可以使用 -bb 选项用来仅生成 RPM 二进制包。命令执行完成,会在 /root/rpmbuild/ 目录下生成 BUILD、RPMS、SOURCES、SPECS 和 SRPMS 目录,RPM 包放在 RPMS 目录中,SRPM 包生成在 SRPMS 目录中。

以上两种方式都可实现将 SRPM 包编译为 RPM 二进制包,剩下的工作就是使用 RPM 包安装软件,这部分内容已在前面章节中讲过,因此不再赘述。

标签:el6,rpm,RPM,rpmbuild,源码,Linux,root,SRPM,安装
From: https://blog.51cto.com/u_15641375/8353067

相关文章

  • Linux第12章学习笔记
    第十二章学习笔记块设备I/O和缓冲区管理本章讨论了块设备1O和缓冲区管理;解释了块设备I/O的原理和I/O缓冲的优点;论述了Unix的缓冲区管理算法,并指出了其不足之处;还利用信号量设计了新的缓冲区管理算法,以提高I/O缓冲区的缓存效率和性能;表明了简单的PV算法易于实现,缓存效果好,不存在......
  • linux xfce 在文件管理器里点击运行shell脚本文件
    1.打开SettingsEditor2.点击左边的thunar3.点击右边的添加,在属性中输入/misc-exec-shell-scripts-by-default在类型中选择布尔类型在值中选择真保存4.给shell脚本文件添加运行权限命令行chmod+xyour_filename或者gui界面在右键脚本文件,点击属性,在权限里允许......
  • ES安装报错
    1.配置了日志启动失败由于权限问题导致启动失败,原因是我在elasticsearch/conf/elasticsearch.yml中设置了path.data和path.logs,ES启动建议使用普通用户启动,root权限过大,初期未给path.data和path.logs设置普通用户属组,导致启动失败。需要给配置的日志路劲设置用户组chown-Res......
  • TD支持的库:python库、自身的python库、已经内置但需要自行引用的第三方库、第三方以外
    这是内置的第三方库asn1crypto (asn1crypto)-ParsingandserializingASN.1structuresAuthlib (authlib)-LibrarytobuildOAuthandOpenIDConnectservers.Certifi (certifi)- Root CertificatesforvalidatingthetrustworthinessofSSLcertificateswhi......
  • macOs Catalina 10.15.7安装xcode
    iMac新装了系统(Catalina10.15.7)之后,安装git提示缺少xcode试了以下方法,都没有成功:1、执行 xcode-select--install,提示:requestedforcommandlinedevelopertools2、通过appstore下载xcode,提示:不能将Xcode安装在macOs上,因为需要macOsv13.5或更高版本 查询了网上的方法......
  • Linux第二次博客
     这一次作业主要讲了第三章用户管理的内容。 主要就是去了解用户和组的意义,掌握创建、修改与删除用户/组的方法,还有熟悉用户相关配置文件和用户身份切换。 用户/组概览学习了用户标识,UID(用户的id)、GID(用户所属组的id),还有一个groups为用户属于的所有组的id。在了解过程中我......
  • linux自动更新代码并打包
     #为了解决本地打包上传到服务器时耗时过久,直接用服务器自动更新代码并打包  linux-dabao-1-git-pull.sh#更新代码/home/app/szzy/yjdaxt/git/git-2.42.1/gitpulloriginmaster linux-dabao-2-clean-install.sh#打包-离线模式sh/home/app/szzy/yjdaxt/mysoft/a......
  • linux进程通信的六种方法
    一、管道​ 一个进程:​ ​ 所谓的管道,就是内核里面的一串缓存。从管道的一段写入的数据,实际上是缓存在内核中的,另一端读取,也就是从内核中读取这段数据。另外,管道传输的数据是无格式的流且大小受限。​ 父子进程:​ ​ 创建的子进程会复制父进程的文件描述符,这样就做到了两个......
  • Linux多路径IO流量负载和单链路负载压测
     LinuxMultipath的IO流量多链路负载和单链路负载压测 再linux下,对于udev和multipath均能做到自定义并持久化设备名,其中udev还能做到更改设备权限。而multipath也能做到持久化设备名,但无法更改设备权限,但是multipath能够实现更多的功能,比如IO流量负载功能。 测试情况1......
  • 医院等级评审,离不开不良事件上报系统【医院不良事件报告源码】
    不良事件上报系统对事件的报告、处置、跟踪、评价、分析、改进、学习等进行了综合管理,通过双向互评机制实现临床科室与职能部门之间的进一步互动,加强不良事件报告处置过程中的信息互通能力。围绕患者安全、医疗、护理、药品、器械耗材、输血、感染、后勤、治安、患者满意度、职业暴......