在linux中安装补丁

时间:2013-08-09 20:32:18

标签: linux linux-kernel patch

我有一个我想在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/

这是完整的patch file。有关如何安装的任何帮助吗?

3 个答案:

答案 0 :(得分: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')。

答案 1 :(得分:1)

我对补丁文件不太满意,但它似乎是'git格式'的补丁文件。

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

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

应该自动为您应用它 我不完全确定提交ID 13fac179aa50556ba3c60790a9beb6ca9d0b1b8b是否正确。我刚刚从你帖子的电子邮件部分中选择了它。

答案 2 :(得分:0)

您可能需要更多patch(1)的参数。特别是,试试

 patch -p1 --verbose -i file