Linux的RPM包 -- 制作

1.简单实现rpm包的制作

1.首先我们需要编写源代码

2.把源代码打包成压缩包

3.在自定义的路径下创建一个rpmbuild文件目录,其中必须包括有{SPECS,SOURCES,RPMS,SRPMS,BUILD,BUILDROOT}这几个文件目录

4.将压缩包存储到SOURCE中

5.在SPECS文件目录中创建一个spec file文件,对其进行编写(之前介绍过)

6.编写完毕后输入rpmbuild -ba spec file,只要之前正确即可生成rpm包

7.查看SPRMS和RPMS这两个文件目录,分别看到两个类型的rpm包

8.以RPMS的rpm包为例子,rpm -ihv rpm.这样就下载了rpm包中的内容

9.rpm -ql <rpmname>查看文件的路径信息

10.在指定的位置就能找到我们rpm安装得到的源文件,并且可运行
特别说明:

1.打包的源代码可以有非常多的形式

2.存放在SOURCES中的东西也不是只有源文件的压缩包而已.他还可以包括补丁用于更新rpm包,还有一些环境配置的文件

3.rpmbuild -ba spec file可能会报错,那么就需要对错误的地方进行修改

复制代码
-ba 构建二进制和源代码打包 (在执行 %prep, %build 和 %install 之后。编译后做成*.rpm和src.rpm)
-bb 构建二进制打包 (在执行 %prep, %build 和 %install 之后。编译后做成*.rpm)
-bp 执行 spec 文件的 "%prep" 阶段。通常,这会解包源代码并应用补丁
-bc 执行 spec 文件的 "%build" 阶段 (在执行了 %prep 阶段之后)。这通常等价于执行了一次 "make"
-bi 执行 spec 文件的 "%install" 阶段 (在执行了 %prep 和 %build 阶段之后)。这通常等价于执行了一次 "make install"
-bl 执行一次 "列表检查"。spec 文件的 "%files" 段落中的宏被扩展,检测是否每个文件都存在。
-bs 只构建源代码打包(只做成*.src.rpm)

4.rpm -ihv其实并不是简单的把压缩包解压而已.由于可能存在环境配置文件,那么其rpm就会自动把我们设置的环境设置好;还有可能存在.patch文件,也就是补丁,每一次的更新其实都与补丁文件有关,那么他还会帮忙把补丁的东西一起生成出最新的源文件

2.更新rpm包

更新分为两个方面:

小更新,即更新后不影响其他内容,内部的更新

大更新,即更新的内容过于重要导致出现与其他的配置不兼容,就将其看成类似于新的一个软件
小版本的改动

1.下载源码包

2.安装源码包,rpm -ivh

3.他就会构建出rpmbuild的文件目录

4.在rpmbuild文件目录中的SPECS中得到spec file文件,对其进行rebuild -bp spec file时.就会在BUILD文件目录解压出所有的源文件.

5.由于我们要去更新,那么其实就意味着需要在BUILD生成的文件都备份一个.origin文件

6.其中.origin文件就是源代码,我们在被拷贝的文件改动自己想实现的内容

7.diff -upNr .origin源代码文件 修改代码文件 > ../SOURCES/.path补丁文件.到此我们就得到了补丁,这个补丁其实就是每次rpm把原先的源代码解析后自动帮我们升级的这么一个文件.他里面记载了我们在此之后升级的所有操作

8.生成的.patch文件放在SOURCE中后,还要在SPECS的spec file中添加标注上本次的补丁文件以及本次修改的日志

  1. rpmbuild -ba spec file重新打包,这样就实现了更新
    大版本的改动

需要对压缩包进行改动,并且将补丁等一系列资源文件全部重新补齐.

相关推荐
明天好,会的24 分钟前
分形生成实验(五):人机协同破局--30万token揭示Actix-web状态管理的微妙边界
运维·服务器·前端
天骄t28 分钟前
嵌入式系统与51单片机核心原理
linux·单片机·51单片机
猫头虎1 小时前
如何在浏览器里体验 Windows在线模拟器:2026最新在线windows模拟器资源合集与技术揭秘
运维·网络·windows·系统架构·开源·运维开发·开源软件
C_心欲无痕1 小时前
nginx - alias 和 root 的区别详解
运维·前端·nginx
阿部多瑞 ABU1 小时前
`chenmo` —— 可编程元叙事引擎 V2.3+
linux·人工智能·python·ai写作
徐同保2 小时前
nginx转发,指向一个可以正常访问的网站
linux·服务器·nginx
HIT_Weston2 小时前
95、【Ubuntu】【Hugo】搭建私人博客:_default&partials
linux·运维·ubuntu
实心儿儿2 小时前
Linux —— 基础开发工具5
linux·运维·算法
oMcLin2 小时前
如何在SUSE Linux Enterprise Server 15 SP4上通过配置并优化ZFS存储池,提升文件存储与数据备份的效率?
java·linux·运维
SelectDB3 小时前
驾驭 CPU 与编译器:Apache Doris 实现极致性能的底层逻辑
运维·数据库·apache