做运维几年没用过patch,说来也怪了~~趁着上一篇自己的小改动,熟悉一下这个命令的简单用法。
首先是patch的制作,用diff命令。
bashtar zxvf squid-2.7.STABLE9.tar.gz
cp squid-2.7.STABLE9 squid-2.7.STABLE9-old && mv squid-2.7.STABLE9 squid-2.7.STABLE9-new
#然后按照上篇的内容修改squid-2.7.STABLE9-new/里的文件
diff -uNr squid-2.7.STABLE9-old squid-2.7.STABLE9-new > squid-snmp.patch
这就完成了,好简单啊~来看看patch文件的内容吧:
```cdiff -uNr squid-2.7.STABLE9-old/include/cache_snmp.h squid-2.7.STABLE9-new/include/cache_snmp.h
— squid-2.7.STABLE9-old/include/cache_snmp.h 2006-09-22 10:49:24.000000000 +0800
+++ squid-2.7.STABLE9-new/include/cache_snmp.h 2011-06-23 13:25:04.000000000 +0800
@@ -125,6 +125,7 @@
MESH_PTBL_KEEPAL_S,
MESH_PTBL_KEEPAL_R,
MESH_PTBL_INDEX,
- MESH_PTBL_CONN_OPEN,
MESH_PTBL_HOST,
MESH_PTBL_END
};
diff -uNr squid-2.7.STABLE9-old/src/snmp_agent.c squid-2.7.STABLE9-new/src/snmp_agent.c
— squid-2.7.STABLE9-old/src/snmp_agent.c 2009-06-26 06:58:10.000000000 +0800
+++ squid-2.7.STABLE9-new/src/snmp_agent.c 2011-06-23 13:27:31.000000000 +0800
@@ -264,6 +264,11 @@
index,
ASN_INTEGER);
break;
- case MESH_PTBL_CONN_OPEN:
- Answer = snmp_var_new_integer(Var->name, Var->name_length,
- p->stats.conn_open,
- ASN_INTEGER);
- break;
default:
*ErrP = SNMP_ERR_NOSUCHNAME;
break;
diff -uNr squid-2.7.STABLE9-old/src/snmp_core.c squid-2.7.STABLE9-new/src/snmp_core.c
— squid-2.7.STABLE9-old/src/snmp_core.c 2008-05-05 07:23:13.000000000 +0800
+++ squid-2.7.STABLE9-new/src/snmp_core.c 2011-06-23 20:36:54.000000000 +0800
@@ -321,7 +321,7 @@
snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 1, 1, 15),
LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_Inst, 0)),
snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 2, SQ_MESH, 1, 2),
- LEN_SQ_MESH + 2, NULL, NULL, 15,
- LEN_SQ_MESH + 2, NULL, NULL, 16,
snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 1, 2, 1),
LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_InstIndex, 0),
snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 1, 2, 2),
@@ -351,6 +351,8 @@
snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 1, 2, 14),
LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_InstIndex, 0),
snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 1, 2, 15),
- LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_InstIndex, 0),
- snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 3, SQ_MESH, 1, 2, 16),
LEN_SQ_MESH + 3, snmp_meshPtblFn, peer_InstIndex, 0))),
snmpAddNode(snmpCreateOid(LEN_SQ_MESH + 1, SQ_MESH, 2),
LEN_SQ_MESH + 1, NULL, NULL, 1,
制作练完了,再练一次使用:
bashcd squid-2.7.STABLE9-old
mv ../squid-snmp.patch .
patch -p1 < squid-snmp.patch
-p指定从那层目录开始,因为之前diff的时候顶层目录分别叫old和new,如果在其他地方时候的话,别人的目录肯定不会这么命名的,所以就往里进一层,然后用-p1来patch。
然后more一下那三个文件,确认都修改了~
最后回退patch:
bashpatch -R -p1 < squid-snmp.patch```
完成~