Chapter 3. 工具的配置

    devscripts 软件包应当安装在维护者的工作环境中。

    尽管这个不是绝对的要求,但是在维护者的工作环境内装上并配置好本章节提到的各个常用的软件包会有助于维护者高效投入工作。这些软件可以构成我们共同确立的一个基准工作环境。

    如有需要,请同样按需安装在“Debian 开发者参考”文中 Debian 维护者工具概览 一节提到的各个工具。

    许多 Debian 维护工具识别并使用 shell 环境变量 $DEBEMAIL$DEBFULLNAME 作为作为您的电子邮件地址和名称。

    我们可以通过将下面几行加入 ~/.bashrc 的方式对这些软件进行配置。

    添加至 ~/.bashrc 文件.

    3.2. mc

    mc 命令提供了管理文件的简单途径。它可以打开二进制 deb 文件,并仅需对二进制 deb 文件按下回车键便能检查其内容。它调用了 dpkg-deb 命令作为其后端。我们可以按照下列方式对其配置,以支持简易 chdir 操作。

    添加至 ~/.bashrc 文件.

    1. export HISTCONTROL=ignoreboth
    2. . /usr/lib/mc/mc.sh

    3.3. git

    如今 git 命令已成为管理带历史的源码树的必要工具。

    git 命令的用户级全局配置,如您的名字和电子邮件地址,保存在 ~/.gitconfig 文件中,且可以使用如下方式配置。

    1. $ git config --global user.name "Name Surname"
    2. $ git config --global user.email yourname@example.com

    如果您仍然只习惯 CVS 或者 Subversion 的命令风格,您可以使用如下方式设置几个命令别名。

    1. $ git config --global alias.ci "commit -a"
    2. $ git config --global alias.co checkout

    您可以使用如下命令检查全局配置。

    Tip

    有必要使用某些图形界面 git 工具,例如 gitkgitg 命令来有效地处理 git 仓库的历史。

    为了避免改变 quilt 命令自身的行为,我们在这里创建一个用于 Debian 打包工作的命令别名:dquilt。之后,我们将对应内容写入 ~/.bashrc 文件。下面给出的第二行为 dquilt 命令提供与 quilt 命令相同的命令行补全功能。

    添加至 ~/.bashrc 文件.

    1. alias dquilt="quilt --quiltrc=${HOME}/.quiltrc-dpkg"
    2. complete -F _quilt_completion $_quilt_complete_opt dquilt

    然后我们来创建具有如下内容的 ~/.quiltrc-dpkg 文件。

    1. d=.
    2. do d=$d/..; done
    3. if [ -d $d/debian ] && [ -z $QUILT_PATCHES ]; then
    4. # if in Debian packaging tree with unset $QUILT_PATCHES
    5. QUILT_PATCH_OPTS="--reject-format=unified"
    6. QUILT_DIFF_ARGS="-p ab --no-timestamps --no-index --color=auto"
    7. QUILT_REFRESH_ARGS="-p ab --no-timestamps --no-index"
    8. QUILT_COLORS="diff_hdr=1;32:diff_add=1;34:" + \
    9. "diff_rem=1;31:diff_hunk=1;33:diff_ctx=35:diff_cctx=33"
    10. if ! [ -d $d/debian/patches ]; then mkdir $d/debian/patches; fi
    11. fi

    请参考 quilt(1) 和 处理大量补丁的方法暨对 Quilt 的介绍 以了解如何使用 quilt 命令。

    要获取使用示例,请查看 。

    3.5. devscripts

    debsign 命令由 devscripts 软件包提供,它可以使用用户的 GPG 私钥对 Debian 软件包进行签名。

    debuild 命令同样由 devscripts 软件包提供,它可以构建二进制软件包并使用 lintian 命令对其进行检查。lintian 命令的详细输出通常都很实用。

    您可以将下列内容写入 ~/.devscripts 文件来进行配置。

    1. DEBUILD_DPKG_BUILDPACKAGE_OPTS="-i -I -us -uc"
    2. DEBUILD_LINTIAN_OPTS="-i -I --show-overrides"
    3. DEBSIGN_KEYID="Your_GPG_keyID"

    用于 dpkg-source 命令的 DEBUILD_DPKG_BUILDPACKAGE_OPTS 中可以额外使用 -i-I 选项以帮助构建源码中具有外来无关内容的软件包(参见 )。

    当前情况下,使用 4096 位的 RSA 密钥是较好的做法。另见 创建一个新 GPG 密钥

    3.6. pbuilder

    pbuilder 软件包提供了净室(干净的)(chroot)构建环境。[7]

    我们可以搭配使用另外几个辅助软件包对其自定义。

    • cowbuilder 软件包能加速 chroot 创建过程。
    • lintian 软件包能找到所构建软件包中的缺陷。
    • bashmcvim 软件包在构建失败时用来查找问题。
    • ccache 软件包可以加速 gcc。(可选)
    • libeatmydata1 软件包可以加速 dpkg。(可选)
    [Warning]Warning

    可选的自定义项可能造成负面影响。如果有疑问,请禁用它们。

    我们使用如下给出的内容来创建 ~/.pbuilderrc 文件(所有可选功能均已禁用)。

    Note

    由于 ,您可能需要手动将 EXTRAPACKAGES 列出的软件包安装进入 chroot。请见 Section 7.10, “chroot”

    [Note]Note

    应当在 chroot 环境内外同时安装上 libeatmydata1 (>=82-2),否则即为禁用 libeatmydata1。该软件包在某些构建系统中可能导致竞争情况(race condition)发生。

    我们可以按如下方式创建钩子脚本。

    /var/cache/pbuilder/hooks/A10ccache

    1. #!/bin/sh
    2. set -e
    3. # increase the ccache caching size
    4. # output the current statistics
    5. ccache -s

    /var/cache/pbuilder/hooks/B90lintian

    1. #!/bin/sh
    2. set -e
    3. apt-get -y --allow-downgrades install lintian
    4. echo "+++ lintian output +++"
    5. su -c "lintian -i -I --show-overrides /tmp/buildd/*.changes; :" -l pbuilder
    6. echo "+++ end of lintian output +++"

    /var/cache/pbuilder/hooks/C10shell

    1. #!/bin/sh
    2. set -e
    3. apt-get -y --allow-downgrades install vim bash mc
    4. # invoke shell if build fails
    5. cd /tmp/buildd/*/debian/..
    Note

    所有这些脚本都需要设置为全局可执行:“-rwxr-xr-x 1 root root”。

    [Note]Note

    ccache 的缓存目录 /var/cache/pbuilder/cache 需要为了 pbuilder 命令的使用而设置为全局可写:“-rwxrwxrwx 1 root root”。您需要明白这样会带来相关的安全隐患。

    您也可能需要在 ~/.gbp.conf 中设置全局配置信息

    3.8. HTTP 代理

    您应当在本地设置 HTTP 缓存代理以节约访问 Debian 软件仓库的带宽。可以考虑以下几种选项:

    • 简单的 HTTP 缓存代理,使用 squid 软件包。

    3.9. 私有 Debian 仓库

    您可以使用 reprepro 软件包搭建私有 Debian 仓库。


    这里假设您正在使用 Bash 并以此作为登录默认 shell。如果您设置了其它登录 shell,例如 Z shell,请使用它们对应的配置文件替换 ~/.bashrc 文件。