标签: patch

xdelta3 无法在块设备上解码

我正在尝试使用xdelta3远程块设备与本地块设备同步。我可以xdelta3使用以下命令轻松生成补丁文件:

xdelta3 -e -B 33554432 -v -9 -I 0 -s /dev/loop5p2 /dev/loop4p2 patch.xd3
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用以下命令在远程系统上解码时:

 xdelta3 -v -d -B 33554432 -s /dev/sda2 patch.xd3 /dev/sda3
Run Code Online (Sandbox Code Playgroud)

...我收到以下错误:

xdelta3: non-seekable source in decode: XD3_INTERNAL
Run Code Online (Sandbox Code Playgroud)

据我了解,这是由于没有足够大的缓冲区造成的。然而,我的-B论点等于补丁的创建者。事实上,我可以将这个尺寸加倍,但仍然行不通。

patch buffer upgrade block-device

5
推荐指数
0
解决办法
203
查看次数

使用 dkms 修补内核

我需要应用内核补丁(https://lkml.org/lkml/2015/3/31/929)才能让我的触摸板正常工作。我想我应该使用 dkms 来做到这一点。我正在阅读的大部分内容都是关于让 dkms 创建模块的。它也可以用来修补内核吗?

我期待什么:

  • 包管理系统决定升级内核。
  • dkms/package-management-system 下载内核源代码。
  • dkms 应用补丁。
  • dkms 编译内核。
  • dkms 安装修补过的内核。

全部自动进行,但比安装预编译内核慢一点。

我走在正确的轨道上吗?我该怎么做?(你能指出手册中正确的页面吗)


我使用的是Ubuntu 15.04

Linux kubuntu 3.19.0-15-generic #15-Ubuntu SMP 四月 16 日星期四 23:32:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

kernel patch dkms

5
推荐指数
1
解决办法
986
查看次数

我可以在“正常”差异/补丁文件中写入注释吗?

我曾经diff制作过补丁文件。diff old.txt new.txt:

1c1
< Lorem ipsum dolor sit amet, consectetur adipiscing
---
> The quick brown fox jumps over the lazy dog.
Run Code Online (Sandbox Code Playgroud)

输出采用默认的“正常差异”格式。

我可以在这个补丁文件中写注释吗?如果是这样,补丁文件是否可以合理移植?

diff patch

5
推荐指数
1
解决办法
3304
查看次数

修补文件(在本例中为 dwm)和失败的大块头

我正在尝试将transparency补丁添加到dwm. 我下载了.diff文件并在我的 dwm 目录中运行了这个:

max@linux-vwzy:~/misc/dwm/dwm-5.9> patch < dwm-transparency.diff 
patching file config.def.h
patching file dwm.c
Hunk #1 FAILED at 58.
Hunk #5 succeeded at 306 (offset 1 line).
Hunk #6 succeeded at 847 (offset 27 lines).
Hunk #7 succeeded at 882 (offset 27 lines).
Hunk #8 FAILED at 1125.
Hunk #9 succeeded at 1558 with fuzz 1 (offset 2 lines).
2 out of 9 hunks FAILED -- saving rejects to file dwm.c.rej
Run Code Online (Sandbox Code Playgroud)

我之前打过补丁dwm以添加其他几个补丁。它们有可能发生冲突吗?或者这是另一个错误?

diff patch dwm

4
推荐指数
1
解决办法
8862
查看次数

使用 .diff 修补文件时出现“行中格式错误的补丁”错误

我在将 .diff 补丁添加到文件时遇到一些问题。补丁文件本身似乎没问题,但它不断给出错误:

\n\n
root@pipiripi:/home/tomek/mad# patch mifare-mad.pl < pastie1.diff\npatching file mifare-mad.pl\npatch: **** malformed patch at line 434:  \n
Run Code Online (Sandbox Code Playgroud)\n\n

补丁的代码是:

\n\n
--- mifare-mad.pl   2011-02-06 08:41:06.000000000 +0100\n+++ mifare-mad.pl   2012-06-28 10:59:36.000000000 +0200\n@@ -7,16 +7,20 @@\n # MIFARE Application Directory (MAD)\n # http://www.nxp.com/acrobat_download2/other/identification/MAD_overview.pdf\n\n-use Data::Dump qw(dump);\n+use Data::Dumper;\n\n my $debug = $ENV{DEBUG} || 0;\n\n my $function_clusters;\n my $mad_id;\n+my $wkm_ttid;\n+my $wkm_pos;\n+my $wkm_line;\n\n while(<DATA>) {\n    chomp;\n    next if m/^#?\\s*$/;\n+   $_=~s/\\s+#.*//;\n    my ( $code, $function ) = split(/\\s+/,$_,2);\n    my $h = \'[0-9A-F]\';\n    if ( $code =~ m/^($h{2})-($h{2})$/ ) …
Run Code Online (Sandbox Code Playgroud)

debian patch

3
推荐指数
1
解决办法
8773
查看次数

应用差异补丁

我从来没有在 Linux 中打过任何补丁,我无法完全弄清楚写这篇文章(第二段)的人是什么意思。该目标源qemu来自 github,要应用的更改是:

diff --git a/linux-user/flatload.c b/linux-user/flatload.c
index 58f679e..c13a201 100644
--- a/linux-user/flatload.c
+++ b/linux-user/flatload.c
@@ -44,7 +44,7 @@
 #define ntohl(x) be32_to_cpu(x)
 #include 
 
-//#define DEBUG
+#define DEBUG
 
 #ifdef DEBUG
 #define        DBG_FLT(...)    printf(__VA_ARGS__)
Run Code Online (Sandbox Code Playgroud)

diff对我来说似乎是一个很长的命令,但尝试执行它失败了。经过一番搜索,我虽然必须将其保存为 ieqemu.patch并使用 运行它patch,但是在尝试了一些失败的组合之后。

在这种情况下,我应该如何处理上面的代码片段?

diff patch

3
推荐指数
1
解决办法
2042
查看次数

将目录及其内容打包为差异补丁?

我有一个包含文本文件的小项目文件夹,我想将其张贴在某处以便在论坛上提问。在最简单的情况下,让我们假设我有这样的事情:

mkdir aaa
cd aaa
echo AAA > aaa.txt
mkdir bbb
echo BBB > bbb/bbb.txt
Run Code Online (Sandbox Code Playgroud)

显然,我想要子文件夹结构:

aaa/
??? aaa.txt
??? bbb
    ??? bbb.txt
Run Code Online (Sandbox Code Playgroud)

......当我分享这个时会被保留下来。所以我想首先使用https://gist.github.com/并为每个文件输入子目录名称;不幸的是 github 回应:

内容文件不能在子目录中或在名称中包含“/”

...而且我不打算在那里注册,只是为了能够通过 检出子目录并将子目录提交到要点git,对于这样的事情(人们希望他们接受 openID,但是......呃)。

所以,我想,也许我可以以某种方式将整个目录结构和文件内容打包为一个diff补丁文件;那么作为单个文件,应该很容易上传到一个要点。但是,我不知道如何指定我的文件夹和空文件夹之间的差异;我试过:

$ diff -Naur /dev/null /tmp/aaa
diff: /tmp/aaa/null: No such file or directory
Run Code Online (Sandbox Code Playgroud)

......但显然,这行不通。

但是,原则上应该是可能的 - 这是一个测试用例git

mkdir aaa
cd aaa
git init
git config user.name test
git config user.email test@test.com

echo AAA > aaa.txt
mkdir bbb
echo BBB > bbb/bbb.txt

git …
Run Code Online (Sandbox Code Playgroud)

bash diff patch

3
推荐指数
1
解决办法
1871
查看次数

当询问“要修补的文件”时应用补丁,我该怎么办?

我遇到了系统冻结问题,我在 github 上找到了这个讨论,其中之一建议添加 5 个补丁:

在此输入图像描述

当我输入:

patch p1 < 0001-PM-autocomplet.patch
Run Code Online (Sandbox Code Playgroud)

它问File to patch,我不知道该填什么。我该如何继续并应用这些补丁。 在此输入图像描述

kernel patch system-installation

3
推荐指数
1
解决办法
2万
查看次数

在 debian 软件包中应用补丁 - 第 2 部分

我曾询问过如何在这里应用补丁。我今天尝试在不同的源包上使用相同的过程,但失败了。分享-

\n\n
~/games $ mkdir decopy\n\n~/games/decopy $ apt-get source decopy\n\nReading package lists... Done\nNOTICE: \'decopy\' packaging is maintained in the \'Git\' version control system at:\nhttps://anonscm.debian.org/git/collab-maint/decopy.git\nPlease use:\ngit clone https://anonscm.debian.org/git/collab-maint/decopy.git\nto retrieve the latest (possibly unreleased) updates to the package.\nNeed to get 46.9 kB of source archives.\nGet:1 http://debian-mirror.sakura.ne.jp/debian unstable/main decopy\n0.2-1 (dsc) [1,943 B]\nGet:2 http://debian-mirror.sakura.ne.jp/debian unstable/main decopy\n0.2-1 (tar) [43.2 kB]\nGet:3 http://debian-mirror.sakura.ne.jp/debian unstable/main decopy\n0.2-1 (diff) [1,760 B]\nFetched 46.9 kB in 42s (1,103 B/s)\ndpkg-source: info: extracting decopy in decopy-0.2\ndpkg-source: info: unpacking decopy_0.2.orig.tar.gz\ndpkg-source: info: unpacking decopy_0.2-1.debian.tar.xz\n
Run Code Online (Sandbox Code Playgroud)\n\n …

compiling debian patch package-management

3
推荐指数
1
解决办法
2036
查看次数

如何将补丁文件应用到当前 Linux 安装的内核?

我想将补丁文件应用于我当前的 Ubuntu 安装(补丁文件示例)。将补丁文件正确应用到我的 Linux 内核的过程是什么?

我是否需要完成将补丁应用到磁盘映像文件、将其刷入 USB 并安装新的 Linux 副本的整个过程?我可以只修补当前安装吗?或者我可以修补磁盘映像然后使用它来升级我当前的安装吗?

我试过的:

  1. 找出我正在运行的内核版本:

    $ uname -srm
    Linux 5.11.0-25-generic x86_64
    
    Run Code Online (Sandbox Code Playgroud)
  2. 转到我的内核目录(我认为):

    cd /lib/modules/5.11.0-25-generic/kernel
    
    Run Code Online (Sandbox Code Playgroud)
  3. 应用补丁文件

    patch -p1 < ~/my-patch-file.patch
    
    Run Code Online (Sandbox Code Playgroud)

但是没有应用补丁。输出是:

can't find file to patch at input line 23
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
...
File to patch:
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?

注意:这个问题不同于如何修补任何随机文件。我知道该怎么做。问题具体是关于如何修补当前安装的内核

patch upgrade system-installation linux-kernel

3
推荐指数
1
解决办法
225
查看次数