我已经下载了.tar.gz
和.dsc
.diff.gz
巴什来自 Wheezy 的包:https://packages.debian.org/wheezy/bash。然后我运行dpkg-source -x
该dsc
文件来解压,结果如下:
$ ls -l
total 2696
-rw-rw-r-- 1 pgimeno pgimeno 2748840 Dec 30 2012 bash-4.2dfsg.tar.xz
drwxrwxr-x 3 pgimeno pgimeno 4096 Apr 3 23:36 debian
更新:我可以手动提取存档,问题不是这样。请仔细阅读下文。我对一些关键句子进行了强调。
这让我很困惑。我应该怎么做才能获得完全解压的存档应用了 Debian 补丁,这样我就可以处理源代码并生成一个可以构建的修改包?我必须自己拆开包装并手工贴上补丁吗?如果是这样,我应该将其解压到哪个目录?运行后默认tar -xf bash-4.2dfsg.tar.xz
是bash-4.2
,我应该保持这样还是将文件移动到主目录?然后什么?
答案1
记录对源码包做什么的中心位置是debian/rules
。它是一个 makefile,一些目标是强制性的或标准化的,包括build
,它必须解压和修补任何源存档,以及patch
,它应该解压和修补任何源存档。许多包使用帮助脚本,主要是德布帮助者(dh_*
以及较新的dh
前端)和商业银行。
wheezy 中的 bash 包使用一些 debhelper 脚本,并且不提供目标patch
。它unpack
也不提供目标(常见约定),但它确实提供了一些内部使用的目标:
make -f debian/rules bash_src=bash unpack-bash
make -f debian/rules bash_src=bash patch-bash
答案2
valdynirc.oftc.net
帮助我找到了一个解决方案,即运行:
debian/rules bash-configure
它做了一些额外的工作并留下了一些不属于源代码的目录,但至少它解压了它并应用了补丁,这样我就可以现在处理修补的源代码了。正如我怀疑的那样,目标目录并不像bash-4.2
手动解包那样,而只是bash
.
但这感觉像是一个肮脏的黑客行为。我仍在寻找“正确”的解决方案,该解决方案只需让源代码为正常构建做好准备,同时仍然允许我像大多数包一样首先处理它,而不需要进行配置运行。