Table of Contents
В сборочном окружении должен быть установлен пакет build-essential.
В окружении сопровождающего должен быть установлен пакет devscripts.
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.
Caution | |
---|---|
Настройки инструментов, представленные ниже, являются лишь примером и могут быть неактуальны при использовании самых свежих пакетов. Разработка Debian является движущейся целью. Обязательно прочтите соответствующую документацию и при необходимости обновите настройки. |
Различные инструменты сопровождения Debian назначают ваш адрес электронной почты и ваше имя из переменных окружения $DEBEMAIL и $DEBFULLNAME.
Настроим эти пакеты, добавив в ~/.bashrc [7] приведённые ниже строки.
Добавьте в файл ~/.bashrc.
DEBEMAIL="[email protected]" DEBFULLNAME="Firstname Lastname" export DEBEMAIL DEBFULLNAME
Команда mc предлагает вам простой способ работы с файлами. Она может открывать двоичные deb-файлы для проверки их содержимого по простому нажатию клавиши «Ввод» при выборе соответствующего двоичного deb-файла. В качестве движка эта программа использует команду dpkg-deb. Настроим её на поддержку простой функции chdir следующим образом.
Добавьте в файл ~/.bashrc.
# mc related if [ -f /usr/lib/mc/mc.sh ]; then . /usr/lib/mc/mc.sh fi
На сегодняшний день команда git является необходимым инструментом для работы с деревом исходного кода с историей.
Глобальные пользовательские настройки для команды git, такие как ваши имя и адрес электронной почты, можно установить в файле ~/.gitconfig следующим образом.
$ git config --global user.name "Name Surname" $ git config --global user.email [email protected]
Если вы привыкли использовать команды CVS или Subversion, то можете установить несколько указанных ниже псевдонимов команд.
$ git config --global alias.ci "commit -a" $ git config --global alias.co checkout
Проверить ваши глобальные настройки можно следующим образом.
$ git config --global --list
Tip | |
---|---|
Для эффективной работы с историей git-репозитория необходимо использовать какой-нибудь инструмент с графическим интерфейсом пользователя, например, gitk или gitg. |
Команда quilt предлагает простой метод записи изменений. Для работы с пакетами Debian следует выполнить настройку так, чтобы изменения записывались в каталог debian/patches/ вместо каталога patches/ по умолчанию.
Чтобы не менять поведение самой команды quilt, создадим псевдоним dquilt для работы с пакетами Debian, добавив следующие строки в файл ~/.bashrc. Вторая строка предоставляет команде dquilt ту же функциональность автодополнения, что и у команды quilt.
Добавьте в файл ~/.bashrc.
alias dquilt="quilt --quiltrc=${HOME}/.quiltrc-dpkg" . /usr/share/bash-completion/completions/quilt 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:" QUILT_COLORS="${QUILT_COLORS}diff_ctx=35:diff_cctx=33" if ! [ -d $d/debian/patches ]; then mkdir $d/debian/patches; fi fi
О том, как использовать команду quilt см. в quilt(1) и Как выжить, имея много заплат, или Введение в Quilt.
Для примеров использования см. Section 4.9, “Шаг 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 без какого-либо постороннего содержимого (см. Section 5.17, “Сборка пакета без постороннего содержимого”).
В настоящее время хорошо иметь RSA-ключ длины 4096 бит, см. Создание нового GPG-ключа.
The sbuild package provides a clean room (chroot) build environment. It offers this efficiently with the help of schroot using the bind-mount feature of the modern Linux kernel.
Since it is the same build environment as the Debian’s buildd infrastructure, it is always up to date and comes with full of useful features.
It can be customized to offer following features:
Let’s get started by following https://wiki.debian.org/sbuild .
$ sudo apt install sbuild piuparts autopkgtest lintian $ sudo usermod -a -G <your_user_name> sbuild
Reboot your system or execute command such as “kill -TERM -1” [8]. Then login and check you are a member of sbuild group using id command.
$ id uid=1000(<yourname>) gid=1000(<yourname>) groups=...,132(sbuild)
Let’s create the configuration file ~/.sbuildrc
in line
with recent Debian practice https://wiki.debian.org/SourceOnlyUpload
as:
cat >~/.sbuildrc << 'EOF' ############################################################################## # PACKAGE BUILD RELATED (source-only-upload as default) ############################################################################## # -d $distribution = 'unstable'; # -A $build_arch_all = 1; # -s $build_source = 1; # --source-only-changes $source_only_changes = 1; # -v $verbose = 1; ############################################################################## # POST-BUILD RELATED (turn off functionality by setting variables to 0) ############################################################################## $run_lintian = 1; $lintian_opts = ['-i', '-I']; $run_piuparts = 1; $piuparts_opts = ['--schroot', 'unstable-amd64-sbuild']; $run_autopkgtest = 1; $autopkgtest_root_args = ''; $autopkgtest_opts = [ '--', 'schroot', '%r-%a-sbuild' ]; ############################################################################## # PERL MAGIC ############################################################################## 1; EOF
Following document assumes that sbuild is configured this way.
Edit this to your needs. Post-build tests can be turned on and off by assigning 1 or 0 to the corresponding variables,
Warning | |
---|---|
Необязательные настройки могут вызывать отрицательные последствия. Отключите их в случае сомнения. |
Note | |
---|---|
Параллельный запуск make может быть неудачным для некоторых уже имеющихся пакетов и может сделать журнал сборки сложным для прочтения. |
Вам может потребоваться установить некоторые глобальные настройки в файле ~/.gbp.conf
# Configuration file for "gbp <command>" [DEFAULT] # the default build command: builder = sbuild # use pristine-tar: pristine-tar = True # Use color when on a terminal, alternatives: on/true, off/false or auto color = auto
Tip | |
---|---|
Команда gbp является псевдонимом команды git-buildpackage. |
Чтобы сохранить пропускную способность при обращении к репозиторию пакетов Debian вам следует настроить локальный кэширующий HTTP-прокси. Имеется несколько вариантов:
In order to use this HTTP proxy without manual configuration adjustment,
it’s a good idea to install either auto-apt-proxy
or
squid-deb-proxy-client
package to everywhere.
Вы можете настроить собственный репозиторий пакетов Debian с помощью пакета reprepro.
For testing GUI application, it is good idea to have virtual
machines. Install virt-manager
and
qemu-kvm
.
Use of chroot and virtual machines allow us not to update the whole host PC to the latest unstable.
In order to access virtual machines easily over the local network, setting
up multicast DNS service discovery infrastructure by installing
avahi-utils
is a good idea.
For all running virtual machines and the host PC, we can use each host name appended with .local for SSH to access each other.
[7] Предполагается, что в качестве интерактивной командной оболочки с регистрацией вы используете Bash. Если вы используете какую-то другую командную оболочку, например, Zsh, то вместо ~/.bashrc необходимо изменить соответствующие файлы настройки.
[8] Logout from your system via GUI menu may not work.