Questions tagged «patch»

补丁是用于更改源代码包的文件,例如为了纠正错误或添加功能。

2
用dd修补二进制文件
我读过几次(下面)这个引用,最近一次是在这里阅读的,并且不断地困惑于如何dd使用它来修补任何东西,更不用说编译器了: 我30年前在学校使用的Unix系统在RAM和磁盘空间方面非常有限。特别是/usr/tmp文件系统非常小,当有人尝试编译大型程序时会导致问题。当然,无论如何,学生都不应该编写“大型程序”。大型程序通常是从“某处”复制的源代码。我们中的许多人都复制/usr/bin/cc到/home/<myname>/cc,并用来dd修补二进制文件,/tmp而不是来使用/usr/tmp更大的二进制文件。当然,这只会使问题变得更糟-这些副本所占用的磁盘空间在当时确实很重要,并且现在会/tmp定期装满,从而阻止其他用户甚至编辑其文件。他们发现发生了什么事后,系统管理员执行了chmod go-r /bin/* /usr/bin/* 它“解决”了问题,并删除了我们所有的C编译器副本。 (强调我的) 该dd手册页只字未提修补和不认为它可能是重新定意要做到这一点呢。 二进制文件真的可以修补dd吗?这有任何历史意义吗?
32 dd  history  patch 

1
如何从任何工作目录中应用-p0补丁?
我有一个包含我要使用的绝对路径的补丁。即前几行如下。 --- /usr/share/apps/plasma/packages/org.kde.pager/contents/ui/main.qml 2014-10-10 18:47:23.000000000 +1100 +++ /usr/share/apps/plasma/packages/org.kde.pager/contents/ui/main.qml.mod 2014-11-11 09:44:17.786200477 +1100 但是,除非我在根目录中,否则它将失败。 ~$ cd ~$ sudo patch -i /tmp/fix_kde_icons.patch -p0 Ignoring potentially dangerous file name /usr/share/apps/plasma/packages/org.kde.pager/contents/ui/main.qml Ignoring potentially dangerous file name /usr/share/apps/plasma/packages/org.kde.pager/contents/ui/main.qml.mod can't find file to patch at input line 3 Perhaps you used the wrong -p or --strip option? …
26 patch 

3
如何解决“ Hunk#1 FAILED at 1(不同的行尾)”消息?
我正在尝试使用命令创建补丁 git diff sourcefile >/var/lib/laymab/overlay/category/ebuild/files/thepatch.patch 当我应用补丁时,它给了我 $ patch -v GNU patch 2.7.5 $ /usr/bin/patch -p1 </var/lib/laymab/overlay/category/ebuild/files/thepatch.patch patching file sourcefile Hunk #1 FAILED at 1 (different line endings). Hunk #2 FAILED at 23 (different line endings). Hunk #3 FAILED at 47 (different line endings). Hunk #4 FAILED at 65 (different line …
22 git  diff  newlines  patch 


2
Linux内核补丁的目的是什么?
对于每个Linux内核版本,都有一个可供下载的补丁文件。例如,linux-3.12.22有一个对应的patch-3.12.22。 该补丁的目的是什么?要始终在编译相应内核之前对其进行修补,还是将先前的内核版本与该修补程序所匹配的内核一起更新(在本例中为3.12.22)?

3
仅显示基于正则表达式的差异/补丁的相关块
git log -G<regex> -p是一个很棒的工具,可以在代码库的历史记录中搜索与指定模式匹配的更改。但是,将相关的块放置在差异较大/不相关的块的海洋中的diff / patch输出中可能会让人不知所措。 当然可以在的输出中搜索git log原始的字符串/正则表达式,但这并不能减少视觉噪音和许多无关更改的干扰。 继续阅读git log,我看到有--pickaxe-all,它与我想要的完全相反:它扩大了输出(扩展到整个变更集),而我想将其限制(到特定的块)。 本质上,我正在寻找一种“智能”地将差异/补丁解析为单个块的方法,然后针对每个块执行搜索(仅针对更改的行),丢弃不匹配的块,然后将其输出那做。 我所描述的工具是否存在?有没有更好的方法来获得匹配的/受影响的大块头? 我已经完成了一些初步的研究... 如果可以grep比较/修补程序输出并使上下文选项值动态(例如,通过正则表达式而不是行数),则可能就足够了。但是grep并不是完全按照这种方式构建的(我也不一定要求该功能)。 我找到了patchutils套件,最初听起来好像它可以满足我的需求。但是在阅读其man页面之后,这些工具似乎无法处理基于正则表达式的匹配块。(不过,他们可以接受帅哥列表...) 我终于遇到了splitpatch.rb,它似乎可以很好地处理补丁的解析,但是需要对其进行显着扩展,以通过stdin,匹配所需的块,然后输出块来处理读取补丁。
20 git  diff  patch 


5
为什么在仅使用cp更容易时使用diff / patch
diff -u file1.txt file2.txt > patchfile 创建一个补丁文件,该文件包含用于patch将file1.txt转换为与file2.txt完全相同的指令 不能使用cp命令代替吗?我可以想象这对于文件太大并且必须通过网络传输的网络很有用,这种方法可能会节省带宽。还有其他方法可以使用diff / patch在其他情况下是有利的吗?
19 shell  cp  diff  patch 

7
如何使用patch和diff合并两个文件并自动解决冲突
我已经阅读了有关diff和patch的内容,但我不知道如何应用所需的内容。我想这很简单,因此为了显示我的问题,请使用以下两个文件: xml文件 <resources> <color name="same_in_b">#AAABBB</color> <color name="not_in_b">#AAAAAA</color> <color name="in_b_but_different_val">#AAAAAA</color> <color name="not_in_b_too">#AAAAAA</color> </resources> b.xml <resources> <color name="same_in_b">#AAABBB</color> <color name="in_b_but_different_val">#BBBBBB</color> <color name="not_in_a">#AAAAAA</color> </resources> 我想要一个输出,看起来像这样(顺序无关紧要): <resources> <color name="same_in_b">#AAABBB</color> <color name="not_in_b">#AAAAAA</color> <color name="in_b_but_different_val">#BBBBBB</color> <color name="not_in_b_too">#AAAAAA</color> <color name="not_in_a">#AAAAAA</color> </resources> 合并应包含遵循以下简单规则的所有行: 仅在其中一个文件中的任何行 如果一行具有相同的名称标签但值不同,则从第二行取值 我想在bash脚本中应用此任务,因此如果另一个程序更合适,那么它不一定需要完成diff和patch的操作。


4
如何从邮件列表中获取Linux内核补丁集?
我没有订阅linux-kernel邮件列表,但是我想获得几周前发布的一组补丁程序,并将其应用于我的内核进行测试。我对补丁,构建等非常熟悉。我的问题是,获取此补丁集的最佳方法是什么?它不适用于我所知道的任何Git仓库,只是发布到邮件列表中进行讨论。 我找到了许多可将linux-kernel邮件列表存档的站点,并且在那里可以看到补丁集,但是这些站点都没有(可以找到)下载原始电子邮件的任何方法,因此我可以使用“ git apply” ”或“补丁”或其他任何内容。由于空白差异等原因,仅从我的Web浏览器复制/粘贴内容似乎不太成功。 人们如何管理这个?

1
这是创建补丁的好方法吗?
我想从一个特定的gcc分支创建一个补丁,并将其与官方版本进行比较;因此,当我从稳定版本中解压缩tarball时,我可以应用补丁并获得与该特定分支中相同的内容。 这是我第一次需要创建补丁,所以这是我第一次这样做。我主要关心的是正确获取选项和解析,因为我们正在谈论的是非常重要的软件 diff -crB GccStable GccGit > /tmp/fromStabletoBranch.patch 这足够了,并且是最好的方法吗?
15 diff  patch 


2
如何使补丁忽略已应用的块
我有一个非常大的补丁文件,试图将其应用于我的代码。问题是,我的补丁程序中的某些更改已存在于代码中。有没有一种方法可以使补丁优雅地忽略已应用的更改? 该-N选项无法满足我的要求。如果遇到已应用的大块,它将生成拒绝文件,并且不再将大块应用于该文件。我希望它只忽略该大块,并继续应用其余的补丁程序。我唯一希望它生成一个.rej文件的地方是,如果不能应用块并且似乎还没有应用块。 有没有办法做到这一点?
14 patch 

2
将差异应用到带有补丁的wget源时出现“格式错误的补丁”错误
我想应用此补丁,所以我复制了从“索引:src / options.h”开始并以“ + @ item”结束的代码,并将其放入在wget的源代码文件夹中创建的新文件中。然后我做了: $ patch -p0 < name_of_patch (Patch is indented 1 space.) patching file src/options.h patch: **** malformed patch at line 6: char **excludes; /* List of excluded FTP directories. */ 我应该如何应用呢? 这是我创建的文件的内容: Index: src/options.h =================================================================== --- src/options.h (revision 2276) +++ src/options.h (working copy) @@ -62,6 …
10 wget  patch 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.