我有一个我想在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。有关如何安装的任何帮助吗?
答案 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