Глава 3. Настройка инструментов

Содержание

3.1. Адрес электронной почты
3.2. mc
3.3. git
3.4. quilt
3.5. devscripts
3.6. pbuilder
3.7. git-buildpackage
3.8. HTTP-прокси
3.9. Частный репозиторий Debian

В сборочном окружении должен быть установлен пакет build-essential.

The devscripts package should be installed in the maintainer environment.

Although this is not necessarily an absolute requirement, it is a good idea to install and set up all of the popular set of packages mentioned in this chapter in the maintainer environment. This enables us to share the common baseline working environment.

Please install the tools mentioned in the Overview of Debian Maintainer Tools in the “Debian Developer’s Reference”, as needed, too.

[Внимание] Внимание

Настройки инструментов, представленные ниже, являются лишь примером и могут быть неактуальны при использовании самых свежих пакетов. Разработка Debian является движущейся целью. Обязательно прочтите соответствующую документацию и при необходимости обновите настройки.

Различные инструменты сопровождения Debian берут ваш адрес электронной почты и ваше имя из переменных окружения $DEBEMAIL и $DEBFULLNAME.

Настроим эти пакеты, добавив в ~/.bashrc [6] приведённые ниже строки.

Добавьте в файл ~/.bashrc

DEBEMAIL="your.email.address@example.org"
DEBFULLNAME="Firstname Lastname"
export DEBEMAIL DEBFULLNAME

The mc command offers very easy ways to manage files. It can open the binary deb file to check its content by pressing the Enter key over the binary deb file. It uses the dpkg-deb command as its back-end. Let’s set it up to support easy chdir as follows.

Добавьте в файл ~/.bashrc

# mc related
export HISTCONTROL=ignoreboth
. /usr/lib/mc/mc.sh

На сегодняший день команда git является необходимым инструментов для работы с деревом исходного кода с историей.

Глобальные пользовательские настройки для команды git, такие как ваши имя и адрес электронной почты, можно установить в файле ~/.gitconfig следующим образом.

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

Если вы привыкли использовать команды CVS или Subversion, то вы можете установить несколько указанных ниже псевдонимов команд.

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

Проверить ваши глобальные настройки можно следующим образом.

$ git config --global --list
[Подсказка] Подсказка

Для эффектиной работы с историей git-репозитория необходимо использовать какой-нибудь инструмент с графическим интерфейсом пользователя, например, gitk или gitg.

Команда quilt предлагает простой метод записи изменений. Для работы с пакетами Debian этот метод следует изменить так, чтобы изменения записывались в каталог debian/patches/ вместо каталога patches/ по умолчанию.

Для того, чтобы не менять поведение самой команды quilt, давайте создадим псевдоним dquilt для работы с пакетами Debian, добавив следующие строки в файл ~/.bashrc. Вторая строка предоставляет ту же функциональность автодополнения команде dquilt, что уже имеется у команды quilt.

Добавьте в файл ~/.bashrc

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

Теперь создадим файл ~/.quiltrc-dpkg со следующим содержимым.

d=.
while [ ! -d $d/debian -a `readlink -e $d` != / ];
    do d=$d/..; done
if [ -d $d/debian ] && [ -z $QUILT_PATCHES ]; then
    # if in Debian packaging tree with unset $QUILT_PATCHES
    QUILT_PATCHES="debian/patches"
    QUILT_PATCH_OPTS="--reject-format=unified"
    QUILT_DIFF_ARGS="-p ab --no-timestamps --no-index --color=auto"
    QUILT_REFRESH_ARGS="-p ab --no-timestamps --no-index"
    QUILT_COLORS="diff_hdr=1;32:diff_add=1;34:" + \
            "diff_rem=1;31:diff_hunk=1;33:diff_ctx=35:diff_cctx=33"
    if ! [ -d $d/debian/patches ]; then mkdir $d/debian/patches; fi
fi

О том, как использовать команду quilt см. в quilt(1) и Как выжить, имея много заплат, или Введение в Quilt.

Примеры использования см. в Раздел 4.8, «Шаг 3 (альтернативный): изменение исходного кода основной ветки разработки».

Команда debsign, входящая в состав пакета devscripts, используется для подписывания пакета Debian вашим закрытым GPG-ключом.

The debuild command, included in the devscripts package, builds the binary package and checks it with the lintian command. It is useful to have verbose outputs from the lintian command.

You can set these up in ~/.devscripts as follows.

DEBUILD_DPKG_BUILDPACKAGE_OPTS="-i -I -us -uc"
DEBUILD_LINTIAN_OPTS="-i -I --show-overrides"
DEBSIGN_KEYID="Your_GPG_keyID"

Опции -i и -I в DEBUILD_DPKG_BUILDPACKAGE_OPTS для команды dpkg-source помогают повторно собирать пакеты Debian без какого-либо постороннего содержимого (см. Раздел 5.15, «Сборка пакета без постороннего содержимого»).

Currently, an RSA key with 4096 bits is a good idea. See Creating a new GPG key.

The pbuilder package provides a clean room (chroot) build environment. [7]

Настроим эту команду с помощью нескольких вспомогательных пакетов.

  • Пакет cowbuilder увеличивает скорость создания chroot.
  • Пакет lintian предназначен для обнаружения ошибок в пакете.
  • Пакеты bash, mc и vim используются в случае, если сборка не удалась.
  • Пакет ccache предназначен для увеличения скорости работы gcc. (необязательно)
  • Пакет libeatmydata1 предназначен для увеличения скорости работы dpkg. (необязательно)
  • Параллельный запуск make позволяет увеличить скорость сборки. (необязательно)
[Предупреждение] Предупреждение

Необязательные настройки могут вызывать отрицательные последствия. Отключите их в случае сомнения.

Создадим файл ~/.pbuilderrc со следующим содержимым (все необязательные возможности отключены).

AUTO_DEBSIGN="${AUTO_DEBSIGN:-no}"
PDEBUILD_PBUILDER=cowbuilder
HOOKDIR="/var/cache/pbuilder/hooks"
MIRRORSITE="http://deb.debian.org/debian/"
#APTCACHE=/var/cache/pbuilder/aptcache
APTCACHE=/var/cache/apt/archives
#BUILDRESULT=/var/cache/pbuilder/result/
BUILDRESULT=../
EXTRAPACKAGES="ccache lintian libeatmydata1"

# enable to use libeatmydata1 for pbuilder
#export LD_PRELOAD=${LD_PRELOAD+$LD_PRELOAD:}libeatmydata.so

# enable ccache for pbuilder
#export PATH="/usr/lib/ccache${PATH+:$PATH}"
#export CCACHE_DIR="/var/cache/pbuilder/ccache"
#BINDMOUNTS="${CCACHE_DIR}"

# parallel make
#DEBBUILDOPTS=-j8
[Примечание] Примечание

Символьная ссылка из /root/.pbuilderrc в /home/<пользователь>/.pbuilderrc поможет получить одинаковое поведение в разных ситуациях.

[Примечание] Примечание

Из-за ошибки #606542 вам может потребоваться вручную установить пакеты, указанные в EXTRAPACKAGES, в chroot-окружение. См. Раздел 7.10, «chroot».

[Примечание] Примечание

Install libeatmydata1 (>=82-2) both inside and outside of the chroot or disable to use libeatmydata1. This may cause a race condition with some build systems.

[Примечание] Примечание

Параллельный запуск make может быть неудачным для некоторых уже имеющихся пакетов и может сделать журнал сборки сложным для прочтения.

Создадим программные ловушки со следующим содержимым.

/var/cache/pbuilder/hooks/A10ccache

#!/bin/sh
set -e
# increase the ccache caching size
ccache -M 4G
# output the current statistics
ccache -s

/var/cache/pbuilder/hooks/B90lintian

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

/var/cache/pbuilder/hooks/C10shell

#!/bin/sh
set -e
apt-get -y --allow-downgrades install vim bash mc
# invoke shell if build fails
cd /tmp/buildd/*/debian/..
/bin/bash < /dev/tty > /dev/tty 2> /dev/tty
[Примечание] Примечание

Все эти сценарии должны быть доступны для исполнения всем пользователям: «-rwxr-xr-x 1 root root».

[Примечание] Примечание

Каталог с кэшем ccache, /var/cache/pbuilder/ccache, должен быть открыт для записи всем пользователям: «-rwxrwxrwx 1 root root» для команды pbuilder. Вам необходимо осознавать связанные с этим проблемы безопасности.

Вам может потребоваться установить некоторые глобальные настройки в файле ~/.gbp.conf

# Configuration file for "gbp <command>"

[DEFAULT]
# the default build command:
builder = git-pbuilder -i -I -us -uc
# use pristine-tar:
pristine-tar = True
# Use color when on a terminal, alternatives: on/true, off/false or auto
color = auto
[Подсказка] Подсказка

Команда gbp является псевдонимом команды git-buildpackage.

Вам следует настроить локальный кэширующий HTTP-прокси, чтобы сохранить пропускную способность при обращении к репозиторию пакетов Debian. Имеется несколько вариантов:

  • Простой кэширующий HTTP-прокси, использующий пакет squid.
  • Специализированный кэширующий HTTP-прокси, использующий пакет apt-cacher-ng.

Вы можете настроить собственный репозиторий пакетов Debian с помощью пакета reprepro.



[6] Предполагается, что в качестве интерактивной командной оболочки с регистрацией вы используете Bash. Если вы используете какую-то другую командную оболочку, например, Z, то вместо ~/.bashrc вам необходимо изменить соответствующие файлы настройки.

[7] The sbuild package provides an alternative chroot platform.