Глава 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.

В окружении сопровождающего должен быть установлен пакет devscripts.

В окружении сопровождающего, хотя это и не абсолютно необходимое требование, полезно установить и настроить популярный набор пакетов, упоминаемых в данной главе. Это позволит нам иметь общую базовую рабочую среду.

Также, при необходимости, установите инструменты, указанные в разделе Обзор инструментов Debian для сопровождающего из «Справочника разработчика Debian».

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

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

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

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

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

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

Команда mc предлагает вам простой способ работы с файлами. Она может открывать двоичные deb-файлы для проверки их содержимого по простому нажатию клавиши «Ввод» при выборе соответствующего двоичного deb-файла. В качестве движка эта программа использует команду dpkg-deb. Настроим её на поддержку простой функции chdir следующим образом.

Добавьте в файл ~/.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 (альтернативный): изменение исходного кода основной ветки разработки».

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

Команда debuild, входящая в состав пакета devscripts, собирает двоичный пакет и проверяет его с помощью команды lintian. Полезно иметь более подробный вывод команды lintian.

Вы можете настроить эти команды в файле ~/.devscripts следующим образом.

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, «Сборка пакета без постороннего содержимого»).

В настоящее время хорошо иметь RSA-ключ длины 4096 бит, см. Создание нового GPG-ключа.

Пакет pbuilder предоставляет чистое сборочное окружение (chroot). [7]

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

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

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

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

AUTO_DEBSIGN="${AUTO_DEBSIGN:-no}"
SOURCE_ONLY_CHANGES="${SOURCE_ONLY_CHANGES:-yes}"
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="lintian"
#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».

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

Установите libeatmydata1 (>=82-2) и в chroot-окружение, и вне его, либо отключите использование libeatmydata1. Это может вызывать состояние гонки на некоторых сборочных системах.

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

Параллельный запуск 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, должен быть открыт для записи команды pbuilder всем пользователям: «-rwxrwxrwx 1 root root». Вам необходимо осознавать связанные с этим проблемы безопасности.

Вам может потребоваться установить некоторые глобальные настройки в файле ~/.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.

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

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

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



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

[7] Пакет sbuild предоставляет альтернативную chroot-платформу.