Содержание
В сборочном окружении должен быть установлен пакет 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]
Настроим эту команду с помощью нескольких вспомогательных пакетов.
![]() |
Предупреждение |
---|---|
Необязательные настройки могут вызывать отрицательные последствия. Отключите их в случае сомнения. |
Создадим файл ~/.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-прокси. Имеется несколько вариантов:
Вы можете настроить собственный репозиторий пакетов Debian с помощью пакета reprepro.
[6] Предполагается, что в качестве интерактивной командной оболочки с регистрацией вы используете Bash. Если вы используете какую-то другую командную оболочку, например, Zsh, то вместо ~/.bashrc необходимо изменить соответствующие файлы настройки.
[7] Пакет sbuild предоставляет альтернативную chroot-платформу.