-1

我有一个要安装在 linux 中的补丁文件。我知道有一个补丁命令,我试着像这样使用它:

patch -i file --verbose

其中file是补丁文件。但它要求我修补文件(要更改):

Hmm...  Looks like a unified diff to me...
can't find file to patch at input line 17
Perhaps you should have used the -p or --strip option?
The text leading up to this was:
--------------------------
|From 13fac179aa50556ba3c60790a9beb6ca9d0b1b8b Mon Sep 17 00:00:00 2001
|From: Andrey Vagin <avagin@openvz.org>
|Date: Fri, 28 Jan 2011 23:31:20 +0300
|Subject: [PATCH rh5] vdso: export vdso_sysctl_vsyscall
|
|Signed-off-by: Andrey Vagin <avagin@openvz.org>
|---
| arch/x86_64/vdso/vclock_gettime.c |    4 ++--
| arch/x86_64/vdso/vextern.h        |    1 +
| include/asm-x86_64/vsyscall.h     |    1 +
| 3 files changed, 4 insertions(+), 2 deletions(-)
|
|diff --git a/arch/x86_64/vdso/vclock_gettime.c b/arch/x86_64/vdso/vclock_gettime.c
|index 5e15d01..3e586bf 100644
|--- a/arch/x86_64/vdso/vclock_gettime.c
|+++ b/arch/x86_64/vdso/vclock_gettime.c
--------------------------
File to patch: 

我不知道应该更改哪个文件,所以我试图从补丁文件本身中获取它。但是当然没有目录arch/x86_64/vdso/

这是完整的补丁文件。关于如何安装它的任何帮助?

4

3 回答 3

2

像这样的补丁文件包含两个版本的文本文件之间的差异。

这个包含对这些源文件的更改:

arch/x86_64/vdso/vclock_gettime.c |    4 ++--
arch/x86_64/vdso/vextern.h        |    1 +
include/asm-x86_64/vsyscall.h     |    1 +

你不能安装它。您可以使用它来修补源代码(如果有的话)、编译并安装结果。但我不认为那是你想要的。

如果你想安装错误修正,请使用你的包管理器(我猜 RedHat 是 'yum')。

于 2013-08-09T20:35:48.653 回答
1

我不擅长补丁文件,但它似乎是“git 格式”的补丁文件。

应用此类文件的最简单方法是

1) git clone <path_to_kernel_sources>
2) git checkout 13fac179aa50556ba3c60790a9beb6ca9d0b1b8b
3)git apply <patch_file>

这应该会自动为您应用它。
我不完全确定提交 ID13fac179aa50556ba3c60790a9beb6ca9d0b1b8b是否正确。我刚刚从你帖子的电子邮件部分中找到了这个。

于 2013-08-10T14:18:06.090 回答
0

您可能需要更多参数来进行patch(1)。特别是,尝试

 patch -p1 --verbose -i file
于 2013-08-10T03:53:48.160 回答