如何在linux中对文件应用修补程序(并创建修补程序)

Linux patch命令允许您快速、安全地将更改从一组文件传输到另一组文件。学习如何使用补丁的简单方法。...

Linux patch命令允许您快速、安全地将更改从一组文件传输到另一组文件。学习如何使用补丁的简单方法。

patch和diff命令

假设你的电脑上有一个文本文件。您将从其他人处收到该文本文件的修改版本。如何将修改后的文件中的所有更改快速传输到原始文件中?这就是patch和diff发挥作用的地方。在Linux和其他类似Unix的操作系统(如macOS)中可以找到patch和diff。

diff命令检查文件的两个不同版本,并列出它们之间的差异。这些差异可以存储在一个称为补丁文件的文件中。

patch命令可以读取修补程序文件并将其内容用作一组指令。按照这些说明,修改后的文件中的更改将复制到原始文件中。

现在想象一下,这个过程发生在整个文本文件目录上。一气呵成。这就是补丁的威力。

有时你不会收到修改过的文件。你收到的只是补丁文件。如果你可以发送一个文件,或者发布一个文件以便于下载,为什么还要发送几十个文件呢?

如何处理修补程序文件来实际修补文件?除了几乎是绕口令,这也是一个好问题。我们将在这篇文章中为您介绍它。

patch命令最常用于处理软件源代码文件的人员,但它同样适用于任何一组文本文件,不管它们的用途是什么,源代码与否。

相关:如何比较Linux终端中的两个文本文件

我们的示例场景

在这个场景中,我们在一个名为work的目录中,该目录包含另外两个目录。一个叫工作,另一个叫最新。工作目录包含一组源代码文件。最新目录保存这些源代码文件的最新版本,其中一些已被修改。

为了安全起见,工作目录是文本文件当前版本的副本。这不是他们的唯一副本。

查找文件的两个版本之间的差异

diff命令查找两个文件之间的差异。它的默认操作是在终端窗口中列出修改的行。

其中一个文件名为slang.c。我们将比较工作目录中的版本和最新目录中的版本。

-u(unified)选项告诉diff还列出每个更改部分前后的一些未修改的文本行。这些行称为上下文行。它们有助于patch命令精确定位必须在原始文件中进行更改的位置。

我们提供文件名,以便diff知道要比较哪些文件。首先列出原始文件,然后列出修改后的文件。这是我们向diff发出的命令:

diff -u working/slang.c latest/slang.c

如何在linux中对文件应用修补程序(并创建修补程序)

diff生成一个输出列表,显示文件之间的差异。如果文件是相同的,则根本不会列出任何输出。从diff看到这种类型的输出可以确认两个文件版本之间存在差异,并且原始文件需要修补。

**修补程序文件

要在修补程序文件中捕获这些差异,请使用以下命令。这与上面的命令相同,diff的输出重定向到一个名为俚语.patch.

diff -u working/slang.c latest/slang.c > slang.patch

如何在linux中对文件应用修补程序(并创建修补程序)

修补程序文件的名称是任意的。你可以随便叫它什么。给它一个“.patch”扩展名是个好主意;但是,因为它确实清楚地表明了它是什么类型的文件。

要使修补程序作用于修补程序文件并修改working/slang.c文件,请使用以下命令。u(unified)选项让patch知道补丁文件包含统一的上下文行。换句话说,我们对diff使用了-u选项,所以对patch使用了-u选项。

补丁-u工作。俚语c-i级俚语.patch

如何在linux中对文件应用修补程序(并创建修补程序)

如果一切顺利,只有一行输出告诉您patch正在修补文件。

备份原始文件

我们可以使用-b(backup)选项指示patch在更改修补文件之前对其进行备份。-i(input)选项告诉patch要使用的修补程序文件的名称:

patch -u -b working.slang.c -i slang.patch

如何在linux中对文件应用修补程序(并创建修补程序)

文件像以前一样被修补,输出中没有明显的差异。但是,如果您查看工作文件夹,您将看到名为slang.c.orig的文件已经创建。文件的日期和时间戳显示slang.c.orig是原始文件,slang.c是由patch创建的新文件。

如何在linux中对文件应用修补程序(并创建修补程序)

对目录使用diff

我们可以使用diff创建一个补丁文件,其中包含两个目录中文件之间的所有差异。然后,我们可以将该修补程序文件与patch一起使用,通过一个命令将这些差异应用于工作文件夹中的文件。

我们将与diff一起使用的选项是我们之前使用的-u(统一上下文)选项、-r(递归)选项(使diff可以查看任何子目录)和-N(新文件)选项。

N选项告诉diff如何处理最新目录中不在工作目录中的文件。它强制diff将指令放入修补程序文件中,以便修补程序创建出现在最新目录中但在工作目录中丢失的文件。

您可以将这些选项组合在一起,以便它们使用一个连字符(-)。

请注意,我们只提供目录名,没有告诉diff查看特定文件:

diff -ruN working/ latest/ > slang.patch

如何在linux中对文件应用修补程序(并创建修补程序)

窥视修补程序文件

让我们快速查看一下补丁文件。我们会用较少的时间来查看它的内容。

如何在linux中对文件应用修补程序(并创建修补程序)

文件顶部显示了slang.c的两个版本之间的差异。

如何在linux中对文件应用修补程序(并创建修补程序)

进一步向下滚动补丁文件,我们看到它描述了另一个名为structs.h的文件中的更改。这验证了补丁文件肯定包含多个文件的不同版本之间的差异。

如何在linux中对文件应用修补程序(并创建修补程序)

三思而后行

修补大量文件可能会有点让人不安,因此我们将使用--dry run选项检查一切是否正常,然后再进行更改。

--dry run选项告诉修补程序除了实际修改文件之外,还可以做其他事情。补丁程序将对这些文件执行所有飞行前检查,如果遇到任何问题,它会报告它们。不管怎样,都不会修改任何文件。

如果没有报告任何问题,我们可以在不使用--dry run选项的情况下重复该命令,并自信地修补文件。

-d(directory)选项告诉修补程序要处理哪个目录。

请注意,我们没有使用-i(输入)选项来告诉修补程序哪个修补程序文件包含来自diff的指令。相反,我们将修补程序文件重定向到带有<的修补程序中;。

patch --dry-run -ruN -d working < slang.patch

如何在linux中对文件应用修补程序(并创建修补程序)

在整个目录中,diff找到了两个要修补的文件。有关这两个文件的修改说明已通过修补程序进行检查,未报告任何问题。

飞行前的检查还可以,我们准备起飞了。

修补目录

要真正地将修补程序应用于文件,我们使用前面的命令,而不使用--dry run选项。

patch -ruN -d working < slang.patch

如何在linux中对文件应用修补程序(并创建修补程序)

这次输出的每一行不是以“checking”开头,而是以“patching”开头

没有问题报告。我们可以编译我们的源代码,我们将使用最新版本的软件。

解决分歧

这是迄今为止最简单和最安全的使用补丁的方法。将目标文件复制到文件夹并修补该文件夹。如果您对修补过程完成而没有错误感到满意,请将它们复制回来。

  • 发表于 2021-04-03 12:36
  • 阅读 ( 202 )
  • 分类:互联网

你可能感兴趣的文章

肮脏的奶牛脆弱性:你需要知道的一切,以保持安全

...,我们来看看这个漏洞到底是什么,它影响的系统,以及如何保护自己。 ...

  • 发布于 2021-03-11 18:42
  • 阅读 ( 415 )

修补电脑真的是最安全的选择吗?

... 如何安全修补 ...

  • 发布于 2021-03-14 07:50
  • 阅读 ( 174 )

是时候尝试一些新的东西了:初级的os loki

...改进。软件类别很容易探索。更新非常简单。如果你知道如何在**上安装应用程序,那么使用AppCenter应该是小菜一碟。 ...

  • 发布于 2021-03-16 08:21
  • 阅读 ( 196 )

使用ubuntu定制套件推出自己的linux操作系统

...需向实时系统添加任何包,然后创建定制的发行版。看看如何**一个自定义的Ubuntu发行版,从安装Ubuntu定制工具包到选择包和运行实时CD。 ...

  • 发布于 2021-03-16 21:22
  • 阅读 ( 382 )

linux Ubuntu19.04的10个新特性及其使用方法

...19.04“Disco Dingo”就可以享受Linux内核5.0的好处。下面介绍如何在不更新的情况下在Ubuntu中升级Linux内核。 ...

  • 发布于 2021-03-20 08:45
  • 阅读 ( 296 )

对于新电脑用户来说,无尽的操作系统可能是最好的linux版本

...统是用来工作的,无论你是否有互联网连接,或者你知道如何安装软件。 ...

  • 发布于 2021-03-23 17:06
  • 阅读 ( 230 )

linux和ubuntu入门

... 如果你不想重新学习如何使用电脑,吃肉桂可以帮你省去一些头痛。它是Linux Mint中的默认桌面环境。 ...

  • 发布于 2021-03-26 09:32
  • 阅读 ( 258 )

如何检查您的电脑或手机是否受到保护,以防熔毁和幽灵

...脑也可能无法完全免受崩溃和幽灵CPU缺陷的影响。下面是如何检查你是否得到了充分的保护,如果你没有得到保护怎么办。 相关:熔毁和幽灵的缺陷将如何影响我的电脑? 为了完全防止熔毁和幽灵,您需要安装一个UEFI或BIOS更...

  • 发布于 2021-04-06 20:54
  • 阅读 ( 301 )

熔毁和幽灵的缺陷将如何影响我的电脑?

...如今,操作系统的崩溃正在得到修补。 但是这些缺陷是如何工作的呢? 相关:什么是Linux内核,它做什么? 计算机上运行的程序具有不同级别的安全权限。例如,操作系统内核Windows内核或Linux内核具有最高级别的权限,因为它...

  • 发布于 2021-04-06 21:52
  • 阅读 ( 257 )

如何访问chromebook上的共享文件夹、网络打印机和VPN

...配置正确,这应该很容易。 访问网络文件共享 相关:如何在网络上的Windows、Mac和Linux PC之间共享文件 Chromebooks不支持从其他操作系统浏览Windows文件共享(称为SMB或CIFS共享)或NFS共享。这似乎有点愚蠢,因为Mac OS X和Linux都可...

  • 发布于 2021-04-11 08:36
  • 阅读 ( 402 )
d5477089g
d5477089g

0 篇文章

相关推荐