rpm打patch的方式
如何使用git命令打patch
以下的说明只针对于centos/frdora/kylinos等rpm包管理的操作系统
在我们平时的业务开发和维护中,遇到业务的一些问题的时候,就需要去修改源代码。像我平时中,修改的方式就两个,一个直接去源码中修改,一个就是打patch。前面的方式就是方便,带来的问题就是别人拿到修改的源码,不知道哪里修改了。常用的还是打patch,打patch呢,一个使用diff命令打,还有一个就是使用git的方式。
准备工作:
一个src包,这里我们以portainer-2.0.0-3.ky10.src.rpm为例
在打patch之前,我们都需要把原有的patch先打到源码中去,使用rpmbuild -bp xxxx.spec命令
现在我们介绍一下两种打patch的方式,像rpm的使用就不细说了啊
1. diff方式
这个其实很简单的,看下面的步骤
[root@host157 BUILD]# cp portainer/ portainer.bk -af
[root@host157 BUILD]# vim portainer/public/index.html
[root@host157 BUILD]#
[root@host157 BUILD]# diff -urN portainer.bk/ portainer > 1.patch
[root@host157 BUILD]# cat 1.patch
diff -urN portainer.bk/public/index.html portainer/public/index.html
--- portainer.bk/public/index.html 2020-08-31 16:58:59.000000000 +0800
+++ portainer/public/index.html 2021-08-13 19:31:24.241043659 +0800
@@ -4,7 +4,7 @@<meta charset="utf-8" /><title>Portainer</title><meta name="description" content="" />
- <meta name="author" content="Portainer.io" />
+ <meta name="author" content="leechm" /><!-- HTML5 shim, for IE6-8 support of HTML5 elements --><!--[if lt IE 9]>
[root@host157 BUILD]#
这样一个简单的patch就打好了,然后直接就可以去用了。
2.git方式
git的方式最大的有点就是通过git log可以看到的之前的操作
[root@host157 BUILD]# cd portainer
[root@host157 portainer]# ls
portainer public
[root@host157 portainer]# git init
已初始化空的 Git 仓库于 /root/rpmbuild/BUILD/portainer/.git/
[root@host157 portainer]# git add .
[root@host157 portainer]# git commit -a -m "abc"
[master(根提交) a70d308] abc33 files changed, 307 insertions(+)create mode 100755 portainercreate mode 100644 public/07745d55b001c85826eedd479285cdbb.svgcreate mode 100644 public/249bec13697c484bcfe40241cabfd053.pngcreate mode 100644 public/24b23490023e318f9c08cf94253542a0.pngcreate mode 100644 public/2ab6d77445159e590879381735de9ff1.pngcreate mode 100644 public/412a43d6840addd683665ec12c30f810.woff2create mode 100644 public/4806ce9049e1e082dd3da4063ceb0eea.xmlcreate mode 100644 public/4a5d4d855d11fae79cc864bdacb2f479.eotcreate mode 100644 public/4c1da237bdae0773309df93b2cd48e09.ttfcreate mode 100644 public/5734d789b25228cbafc64a58ae971aca.woffcreate mode 100644 public/5b98afb96054e0fa36a8299869f7f464.pngcreate mode 100644 public/5ba13dcb526292ae707310a54e103cd1.pngcreate mode 100644 public/5da83cfb4883a59354abeff852cb7394.pngcreate mode 100644 public/6b03ffb82223ffdcc7fc093f199f758b.pngcreate mode 100644 public/8d4556f217181796cf3d542e7726e425.svgcreate mode 100644 public/91a23e8bf2b4b84c39311cb5eb23aaa0.woff2create mode 100644 public/9a1672a8a8d91fbf82c71f451d495253.eotcreate mode 100644 public/a371dc5d333617ab2eca53d8db50b5da.svgcreate mode 100644 public/c2a38918194e73e3ddaf75bbc84a25b7.svgcreate mode 100644 public/c65d154888aa166982dac3e72e7380ec.ttfcreate mode 100644 public/dc4d092847be46242d8c013d1bc7c494.pngcreate mode 100644 public/e18bbf611f2a2e43afc071aa2f4e1512.ttfcreate mode 100644 public/eb45a68ab4c8d154c69396d27d5721be.pngcreate mode 100644 public/f0a03e151fb4eec3a5e655fae9886ac5.ttfcreate mode 100644 public/f0ea477ef046ba5fef9249ec3172903e.svgcreate mode 100644 public/f3a7d3b5880544a91e9a7e6f8f35d4d2.woffcreate mode 100644 public/f461b0cc3c2692b7b8475389b6a051ec.pngcreate mode 100644 public/f9508a64a1beb81be174e194573f7450.pngcreate mode 100644 public/index.htmlcreate mode 100644 public/main.df5487ae7f62fcda715d.csscreate mode 100644 public/main.df5487ae7f62fcda715d.jscreate mode 100644 public/vendor.1.csscreate mode 100644 public/vendor.df5487ae7f62fcda715d.js
[root@host157 portainer]# vim public/index.html
[root@host157 portainer]# git commit -a -m "change index.html"
[master d865846] change index.html1 file changed, 1 insertion(+), 1 deletion(-)
[root@host157 portainer]# git format-patch -1
0001-change-index.html.patch
[root@host157 portainer]#
[root@host157 portainer]# cat 0001-change-index.html.patch
From d865846a31d9019bea8e70b7609b3c154aa57283 Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: Fri, 13 Aug 2021 19:35:47 +0800
Subject: [PATCH] change index.html---public/index.html | 2 +-1 file changed, 1 insertion(+), 1 deletion(-)diff --git a/public/index.html b/public/index.html
index b185cf9..9128b16 100644
--- a/public/index.html
+++ b/public/index.html
@@ -4,7 +4,7 @@<meta charset="utf-8" /><title>Portainer</title><meta name="description" content="" />
- <meta name="author" content="Portainer.io" />
+ <meta name="author" content="leechm" /><!-- HTML5 shim, for IE6-8 support of HTML5 elements --><!--[if lt IE 9]>
--
2.23.0
[root@host157 portainer]#
这个方式我看龙芯公司经常用,因为像diff那样的方式,有时候遇到patch打不进源码中去的现象,用git的话,倒是没怎么遇到过。
git的话,有几个注意的地方
1. git format-patch -1 表示单次提交
2. 记得-bp完之后,git init初始化一下
详细的git format-patch操作,可以查阅官方文档https://git-scm.com/docs/git-format-patch
rpm打patch的方式相关推荐
- nginx patch补丁方式添加 nginx_upstream_check_module 模块,并测试健康检查
原创博客地址:陈帅同学-nginx patch补丁方式添加 nginx_upstream_check_module 模块,并测试健康检查 我的测试环境 contos:6.7nginx:1.63 che ...
- 使用RPM包安装(yum方式)
注意:使用RPM包安装(yum方式)的前提:虚拟机能够访问互联网. 特点:不需要手动卸载系统自带的 MariaDB,yum 工具会自动帮我们卸载. 配置 Yum 源 首先,下载配置 yum 仓库的 r ...
- rpm安装包安装方式
全文来自参考xmind的安装方式链接 1.安装alien sudo apt-get install alien 2.到下载的文件目录下将.rpm格式的软件包转换成.deb格式 sudo alien X ...
- linux mysql5.7.9下载_关于linux-Centos 7下mysql 5.7.9的rpm包的安装方式
环境介绍>>>>>>>>>>>>>>>>>> 操作系统:Centos 7.1 mysql数据 ...
- 关于linux-Centos 7下mysql 5.7.9的rpm包的安装方式
环境介绍>>>>>>>>>>>>>>>>>> 操作系统:Centos 7.1 mysql数据 ...
- 破解VProtect所有版本,PATCH HWID方式过注册
运行后: 本机机器码"195F9059606EEB4723128A216ED1426B",在内存中搜索该字符串,可以得到3个地方,我这里以最后搜索到的地方为切入点, 为什么? 找到 ...
- Enigma所有版本过注册 高版本通过PATCH HWID方式
软件打开界面: V2.0以下的貌似只要跳过注册框即可,无需解码.(以下内容摘自本人发自upk的原创,并非抄袭) 以下以V3.7为例子PATCH HWID: 一,查找HWID生成地址: 1, 先在.rs ...
- Centos安装MySQL(RPM安装方式)
Centos安装MySQL(RPM安装方式) 1.centos中以rpm安装包的方式进行安装测试 2.在MySQL官网下载安装包官网下载 Product Version:5.7.33 Operatin ...
- rpm包与deb包的制作过程
制作RPM包 第一步: BUILD目录:tar.gz包的解压后存放的位置,并在此目录进行编译安装 SPECS目录:存放SPEC文件(important) RPMS目录:存放制作好的rpm包 SOURC ...
最新文章
- 第五周周记(国庆第一天)
- 如何利用Partitioner将消息路由到分区?
- 如何避免表单重复提交
- linux tail 命令,Linux tail命令的巧妙应用
- Calibration校准halcon算子,持续更新
- android监听器作用,android - 监听器和接收器(Android)有什么区别?
- PHP简单方法判断文件是否是图片 PHP best way to check if file is an image
- JSP标准标签库、通用标签
- 这款国产神器,我爱了
- 经济应用文写作【10】
- 公司/组织苹果开发者账号申请流程
- 数据分析-PART1--数据获取和步骤
- IOS开发百度地图API入门到精通-用点生成路线,导航,气泡响应
- 分布式数据结构与算法面试题
- 【转】140种Python标准库、第三方库和外部工具
- SQL语句之单行函数
- Xftp安装或卸载报1605和1628问题
- 科幻大作明日边缘首曝预告
- 修复Microsoft Office的Word、Excel、PPT丢失图标
- Android——Handler、Loop、MessageQueue的工作原理
热门文章
- NO5的士高-(疯狂哨子) DJ极品哨子战歌舞曲 qq空间背景音乐
- ibatis.cache接口实现:RedisCache,MemcachedCache,EhcacheCache
- LoveChat独立部署即时通讯IM 私人部署 完善的售后体系
- 程序员去国企面试,看到工作环境后:给多少工资也不去,评论炸锅
- cpu架构----通俗理解
- ESP32 单片机学习笔记 - 03 - MCPWM脉冲输出/PCNT脉冲计数
- 为什么我们要做小程序?
- uni-app(1)— 环境搭建(安装编辑器,创建项目,项目运行)
- Programming Language Pragmatics 习题解答七(类型系统)、八(子程序和控制抽象)
- 国科大学习资料--模式识别--2016-2017期末试卷及解析(刘成林)