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

Содержание

4.1. Email setup
4.2. mc setup
4.3. git setup
4.4. quilt setup
4.5. devscripts setup
4.6. sbuild setup
4.7. Persistent chroot setup
4.8. gbp setup
4.9. HTTP-прокси
4.10. Частный репозиторий Debian
4.11. Virtual machines
4.12. Local network with virtual machines

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

The devscripts package should be installed in the development environment of the maintainer.

It is a good idea to install and set up all of the popular set of packages mentioned in this chapter. These enable us to share the common baseline working environment, although these are not necessarily absolute requirements.

Please also consider to install the tools mentioned in the «Overview of Debian Maintainer Tools» in the «Debian Developer’s Reference», as needed.

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

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

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

Let’s set these environment variables by adding the following lines to ~/.bashrc [6].

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

DEBEMAIL="osamu@debian.org"
DEBFULLNAME="Osamu Aoki"
export DEBEMAIL DEBFULLNAME

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

The above is for the author of this manual. The configuration and operation examples presented in this manual use these email address and name settings. You must use your email address and name for your system.

Команда 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 "Osamu Aoki"
$ git config --global user.email osamu@debian.org

Если вы привыкли использовать команды 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"
. /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

See quilt(1) and «How To Survive With Many Patches or Introduction to Quilt (quilt.html)» on how to use the quilt command.

Для примеров использования см. «Раздел 5.9, «Step 3 (alternatives): Modification to the upstream source»».

Для подписывания пакета 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"

The -i and -I options in DEBUILD_DPKG_BUILDPACKAGE_OPTS for the dpkg-source command help rebuilding of Debian packages without extraneous contents (see «Глава 7, Sanitization of the source»).

В настоящее время хорошо иметь 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 full of useful features.

It can be customized to offer following features:

  • The schroot package to boost the chroot creation speed.
  • Пакет lintian предназначен для обнаружения ошибок в пакете.
  • The piuparts package to find bugs in the package.
  • The autopkgtest package to find bugs in the package.
  • Пакет ccache предназначен для увеличения скорости работы gcc (необязательно).
  • Пакет libeatmydata1 предназначен для увеличения скорости работы dpkg (необязательно).
  • Параллельный запуск make позволяет увеличить скорость сборки (необязательно).

Let’s set up sbuild environment [7]:

$ sudo apt install sbuild piuparts autopkgtest lintian
$ sudo apt install sbuild-debian-developer-setup
$ sudo sbuild-debian-developer-setup -s unstable

Let’s update your group membership to include sbuild and verify it:

$ newgrp -
$ id
uid=1000(<yourname>) gid=1000(<yourname>) groups=...,132(sbuild)

Here, «reboot of system» or «kill -TERM -1» can be used instead to update your group membership [8] .

Let’s create the configuration file ~/.sbuildrc in line with recent Debian practice of «source-only-upload» 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
[Примечание]Примечание

There are some exceptional cases such as NEW uploads, uploads with NEW binary packages, and security uploads where you can’t do source-only-upload but are required to upload with binary packages. The above configuration needs to be adjusted for those exceptional cases.

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,

[Предупреждение]Предупреждение

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

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

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

[Подсказка]Подсказка

Many sbuild related hints are available at «Раздел 8.7, «Note on sbuild»» and «https://wiki.debian.org/sbuild» .

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

Use of independent copied chroot filesystem prevents contaminating the source chroot used by sbuild.

For building new experimental packages or for debugging buggy packages, let’s setup dedicated persistent chroot «source:unstable-amd64-desktop» by:

$ sudo cp -a /srv/chroot/unstable-amd64-sbuild-$suffix /srv/chroot/unstable-amd64-desktop
$ sudo tee /etc/schroot/chroot.d/unstable-amd64-desktop << EOF
[unstable-desktop]
description=Debian sid/amd64 persistent chroot
groups=root,sbuild
root-groups=root,sbuild
profile=desktop
type=directory
directory=/srv/chroot/unstable-amd64-desktop
union-type=overlay
EOF

Here, desktop profile is used instead of sbuild profile. Please make sure to adjust /etc/schroot/desktop/fstab to make package source accessible from inside of the chroot.

You can log into this chroot «source:unstable-amd64-desktop» by:

 $ sudo schroot -c source:unstable-amd64-desktop

The git-buildpackage package offers the gbp(1) command. Its user configuration file is ~/.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

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

  • Специализированный кэширующий HTTP-прокси, использующий пакет apt-cacher-ng.
  • Generic HTTP caching proxy (squid package) configured by squid-deb-proxy package

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 a good idea to have virtual machines. Install virt-manager and qemu-kvm packages.

Use of chroot and virtual machines allows us not to update the whole host PC to the latest unstable suite.

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.



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

[7] Be careful since some older HOWTOs may use different chroot setups.

[8] Simply «logout and login under some modern GUI Desktop environment» may not update your group membership.