如何给 debian 软件包打补丁?
How to patch a debian package?
我用 apt-get source
得到了一个 debian 软件包 $PKG-VERSION。我现在有文件夹 $PKG-VERSION/
、文件 $PKG-VERSION.diff.gz
、$PKG-VERSION.dsc
和 $PKG.orig.tar.gz
。如果我没理解错的话,$PKG-VERSION.diff.gz
中存档的diff文件$PKG-VERSION.diff
代表了.orig.tar.gz
中的upstream版本和debian版本的区别,并且已经应用到了.orig.tar.gz
中的文件中文件夹 $PKG-VERSION/
。但后来我去看看 $PKG-VERSION/debian/patches/
子文件夹。那里有一堆 .diff
和 .patch
文件。当我查看其中一个 .diff
时,我发现补丁尚未应用。然后我尝试 运行 quilt push -a
应用补丁。 returns
"the patch ... is already applied; check your series file"
每个补丁。但是当我检查来源时显然不是。
同样在读完debian/README.source
后,建议运行debian/rules
中的目标patch
。但是我在 rules
文件中没有看到任何 patch:
并且 运行ning make patch
给出
make: *** No rule to make target 'patch'. Stop.
所以我不明白:即使源文件未打补丁,debian/patches/
中的补丁是否已应用到二进制 $PKG-VERSION.deb
中?我该如何修补源代码?我可以只写一个 bash 脚本来循环并 运行 patch
超过 debian/patches/*.diff
但肯定不是它应该如何工作?
debian/patches 中的补丁在构建过程中应用。所以二进制文件将基于补丁。
我用 apt-get source
得到了一个 debian 软件包 $PKG-VERSION。我现在有文件夹 $PKG-VERSION/
、文件 $PKG-VERSION.diff.gz
、$PKG-VERSION.dsc
和 $PKG.orig.tar.gz
。如果我没理解错的话,$PKG-VERSION.diff.gz
中存档的diff文件$PKG-VERSION.diff
代表了.orig.tar.gz
中的upstream版本和debian版本的区别,并且已经应用到了.orig.tar.gz
中的文件中文件夹 $PKG-VERSION/
。但后来我去看看 $PKG-VERSION/debian/patches/
子文件夹。那里有一堆 .diff
和 .patch
文件。当我查看其中一个 .diff
时,我发现补丁尚未应用。然后我尝试 运行 quilt push -a
应用补丁。 returns
"the patch ... is already applied; check your series file"
每个补丁。但是当我检查来源时显然不是。
同样在读完debian/README.source
后,建议运行debian/rules
中的目标patch
。但是我在 rules
文件中没有看到任何 patch:
并且 运行ning make patch
给出
make: *** No rule to make target 'patch'. Stop.
所以我不明白:即使源文件未打补丁,debian/patches/
中的补丁是否已应用到二进制 $PKG-VERSION.deb
中?我该如何修补源代码?我可以只写一个 bash 脚本来循环并 运行 patch
超过 debian/patches/*.diff
但肯定不是它应该如何工作?
debian/patches 中的补丁在构建过程中应用。所以二进制文件将基于补丁。