Kapitel 3. Werkzeugeinrichtung

Inhaltsverzeichnis

3.1. E-Mail-Adresse
3.2. MC
3.3. Git
3.4. Quilt
3.5. Devscripts
3.6. Pbuilder
3.7. git-buildpackage
3.8. HTTP-Proxy
3.9. Privates Debian-Depot

Das Paket build-essential muss in Ihrer Bauumgebung installiert sein.

Das Paket devscripts sollte in der Betreuerumgebung installiert werden.

Auch wenn dies nicht als absolute Anforderung notwendig ist, ist es eine gute Idee, die beliebte Menge der in diesen Kapiteln erwähnten Pakete in der Betreuerumgebung zu installieren und einzurichten. Diese ermöglicht es uns, diese gemeinsame Arbeitsgrundlage zu verwenden.

Bitte installieren Sie auch die benötigten Werkzeuge, die in der »Debian Developer’s Reference« erwähnt werden.

Achtung

Die hier vorgestellte Einrichtung der Werkzeuge ist nur als Beispiel gedacht und kann nicht mit den neuesten im System installierten Paketen übereinstimmen. Debian-Entwicklung ist ein voranschreitendes Ziel. Lesen Sie die relevante Dokumentation und aktualisieren Sie Ihre Konfiguration wo notwendig.

Verschiedene Debian-Betreuungswerkzeuge erkennen Ihre zu verwendene E-Mail-Adresse und Ihren Namen über die Shell-Umgebungsvariablen $DEBEMAIL und $DEBFULLNAME.

Richten Sie diese Pakete ein, indem Sie die nachfolgenen Zeilen zu ~/.bashrc hinzufügen [6].

Fügen Sie zur ~/.bashrc folgendes hinzu. 

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

Der Befehl mc bietet Ihnen einen sehr leichten Zugang zur Verwaltung von Dateien. Es kann binäre deb-Dateien zum Prüfen ihrer Inhalte öffnen, indem die Eingabetaste über der binären deb-Datei gedrückt wird. Es verwendet den Befehl dpkg-deb als seinen Backend. Lassen Sie es uns wie folgt einrichten, um leichtes chdir zu ermöglichen.

Fügen Sie zur ~/.bashrc folgendes hinzu. 

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

Heutzutage ist der Befehl git ein unverzichtbares Werkzeug, um den Quellbau mit Verlauf zu verwalten.

Die globale Benutzerkonfiguration für den Befehl git, wie Ihren Namen und Ihre E-Mail-Adresse, können in ~/.gitconfig wie folgt gesetzt werden:

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

Falls Sie an die CVS- oder Subversion-Befehle gewöhnt sind, möchten Sie vielleicht eine Reihe von Aliasen wie folgt setzen:

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

Sie können Ihre globale Konfiguration wie folgt prüfen:

$ git config --global --list

Tipp

Es ist essentiell, einige GUI git-Tools wie gitk oder gitg zu verwenden, um effektiv mit der Geschichte des git-Repositoriums zu arbeiten..

Der Befehl quilt bietet eine grundlegende Methode zur Aufzeichnung von Änderungen. Für die Debian-Paketierung sollte es so angepasst werden, um Änderungen im debian/patches/-Verzeichnis anstelle des voreingestellten patches/-Verzeichnisses aufzuzeichnen.

Um zu vermeiden, dass das Verhalten des Befehls quilt selbst geändert wird, erstellen wir einen Alias dquilt für das Debian-Paket, indem wir die folgenden Zeilen in die Datei ~/.bashrc einfügen.. Die zweite Zeile bietet die gleiche Shell-Vervollständigungs-Funktion des quilt-Befehls für den dquilt-Befehl.

Fügen Sie zur ~/.bashrc folgendes hinzu. 

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

Dann erstellen wir ~/.quiltrc-dpkg wie folgt.

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

Siehe quilt(1) und Wie man mit vielen Patches überlebt oder eine Einführung in Quilt. wie man den Befehl quilt verwendet.

Siehe Abschnitt 4.8, „Schritt 3 (alternativ): Änderungen der Quellen der Originalautoren“ für beispielhafte Verwendungen.

Der Befehl debsign, der im Paket devscripts enthalten ist, wird verwendet, um das Debian-Paket mit Ihrem privaten GPG-Schlüssel zu signieren.

Der Befehl debuild im Paket devscripts enthalten, baut das Binärpaket und überprüft es mit dem Befehl lintian. Es ist praktisch, ausführliche Ausgaben von dem Befehl lintian zu haben.

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"

Die Optionen -i und -I in DEBUILD_DPKG_BUILDPACKAGE_OPTS für die dpkg-source Befehl help rebuilding von Debian-Paketen ohneFremdinhalte (siehe Abschnitt 5.15, „Pakete ohne irrelevante Inhalte bauen“).

Derzeit ist ein RSA-Schlüssel mit 4096 Bits eine gute Idee. Siehe Einen neuen GPG-Key erstellen.

Das pbuilder Paket bietet eine Reinraum (chroot) Build Umgebung. [7]

Wir passen es mit verschiedenen Hilfspaketen an.

  • Das cowbuilder Paket, um die Geschwindigkeit der Chroot-Erstellung zu erhöhen.
  • Das lintian Paket, um Fehler im Paket zu finden.
  • Die bash, mc und vim Pakete für den Fall, dass der Bau fehlschlägt.
  • Das ccache Paket, um die gcc Geschwindigkeit zu erhöhen. (optional)
  • Das libeatmydata1 Paket zur Erhöhung der dpkg Geschwindigkeit. (optional)
  • Die parallele make um die Baugeschwindigkeit zu erhöhen. (optional)

Warnung

Die optionale Anpassung kann negative Auswirkungen haben. Im Zweifelsfall deaktivieren Sie sie.

Wir erstellen die ~/.pbuilderrc wie folgt (alle optionalen Funktionen sind deaktiviert).

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

Anmerkung

A symlink from /root/.pbuilderrc to /home/<user>/.pbuilderrc may help for the consistent experience.

Anmerkung

Due to Bug #606542, you may need to manually install packages listed in EXTRAPACKAGES into the chroot. See Abschnitt 7.10, „chroot“.

Anmerkung

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.

Anmerkung

The parallel make may fail for some existing packages and may make the build log difficult to read.

Let’s create a hook scripts as follows.

/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

Anmerkung

All these scripts need to be set world executable: “-rwxr-xr-x 1 root root”.

Anmerkung

The ccache cache directory /var/cache/pbuilder/ccache needs to be set world writable: “-rwxrwxrwx 1 root root” for the pbuilder command. You should be aware of associated security concerns.

Es kann sinnvoll sein, dass Sie mehrere globale Konfigurationen in ~/.gbp.conf setzen.

# 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

Tipp

Der Befehl gbp ist ein Alias für den Befehl git-buildpackage.

You should set up a local HTTP caching proxy to save the bandwidth for the Debian package repository access. There are several choices:

  • Simple HTTP caching proxy using the squid package.
  • Specialized HTTP caching proxy using the apt-cacher-ng package.

Sie können ein privates Debian-Depot mit dem Paket reprepro einrichten.



[6] Hierbei wird angenommen, dass Sie die Bash als Ihre Anmelde-Shell verwenden. Falls Sie eine andere Anmelde-Shell, wie die Z-Shell, verwenden, verwenden Sie deren entsprechenden Konfigurationsdateien statt ~/.bashrc.

[7] Das sbuild Paket bietet eine alternative chroot Plattform.