![在 debian 软件包中应用补丁 - 第 2 部分](https://linux22.com/image/105189/%E5%9C%A8%20debian%20%E8%BD%AF%E4%BB%B6%E5%8C%85%E4%B8%AD%E5%BA%94%E7%94%A8%E8%A1%A5%E4%B8%81%20-%20%E7%AC%AC%202%20%E9%83%A8%E5%88%86.png)
我曾询问过有关应用补丁的问题这里。我今天尝试在不同的源包上使用相同的过程,但失败了。分享-
~/games $ mkdir decopy
~/games/decopy $ apt-get source decopy
Reading package lists... Done
NOTICE: 'decopy' packaging is maintained in the 'Git' version control system at:
https://anonscm.debian.org/git/collab-maint/decopy.git
Please use:
git clone https://anonscm.debian.org/git/collab-maint/decopy.git
to retrieve the latest (possibly unreleased) updates to the package.
Need to get 46.9 kB of source archives.
Get:1 http://debian-mirror.sakura.ne.jp/debian unstable/main decopy
0.2-1 (dsc) [1,943 B]
Get:2 http://debian-mirror.sakura.ne.jp/debian unstable/main decopy
0.2-1 (tar) [43.2 kB]
Get:3 http://debian-mirror.sakura.ne.jp/debian unstable/main decopy
0.2-1 (diff) [1,760 B]
Fetched 46.9 kB in 42s (1,103 B/s)
dpkg-source: info: extracting decopy in decopy-0.2
dpkg-source: info: unpacking decopy_0.2.orig.tar.gz
dpkg-source: info: unpacking decopy_0.2-1.debian.tar.xz
然后列出——
~/games/decopy $ ls
decopy-0.2 decopy_0.2-1.debian.tar.xz decopy_0.2-1.dsc decopy_0.2.orig.tar.gz
显然 decopy-0.2 就是事情所在。
/games/decopy/decopy$ wget https://bugs.debian.org/cgi-bin/bugreport.cgi?att=1;bug=854052;filename=use_tqdm_progress.patch;msg=10
~/games/decopy/ $ ─[$] ls
decopy-0.2 decopy_0.2-1.debian.tar.xz decopy_0.2-1.dsc
decopy_0.2.orig.tar.gz use_tqdm_progress.patch
~/games/decopy $ cd decopy-0.2
~/games/decopy/decopy-0.2 $ patch -p1 < ../use_tqdm_progress.patch
(Stripping trailing CRs from patch; use --binary to disable.)
patching file decopy/cmdoptions.py
(Stripping trailing CRs from patch; use --binary to disable.)
patching file decopy/tree.py
Hunk #2 succeeded at 190 (offset -6 lines).
Hunk #3 succeeded at 201 (offset -6 lines).
Hunk #4 succeeded at 303 (offset -6 lines).
Hunk #5 succeeded at 364 (offset -6 lines).
修补了它,现在使用 dch 进行另一次尝试 -
~/games/decopy/decopy-0.2 $ dch -n "Apply patch given in #854052".
~/games/decopy/decopy-0.2 $
现在目录没有改变,显然是因为这个包不是本国的像 dpkg 这样的包 is/was 。
这里推荐的步骤是什么?
还有一种方法可以知道哪个软件包是 debian本国的包又有哪些不是?有什么测试什么的吗?
答案1
这是一个“3.0 (quilt)”包(请参阅 参考资料debian/source/format
),因此您需要使用quilt
它来管理补丁。恢复补丁:
patch -R -p1 < ../use_tqdm_progress.patch
然后创建适当的结构:
mkdir -p debian/patches
cp ../use_tqdm_progress.patch debian/patches
echo use_tqdm_progress.patch >> debian/patches/series
您应该刷新补丁:
quilt push
quilt refresh
你的dch
情况很好,因为目录名称没有改变。您现在可以构建包:
dpkg-buildpackage -us -uc
就本机包而言,您可以通过其版本中没有连字符(一般来说)来识别本机包。这里的版本是0.2-1,所以它不是原生包。在包内,debian/source/format
对于本机包将是“3.0(本机)”。