Chapter 3. Werkzeugeinrichtung

Table of Contents

3.1. E-Mail-Adresse
3.2. MC
3.3. Git
3.4. Quilt
3.5. Devscripts
3.6. Sbuild
3.7. git-buildpackage
3.8. HTTP-Proxy
3.9. Privates Debian-Depot
3.10. Virtuelle Maschinen
3.11. Local network with virtual machines

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

Das Paket devscripts sollte in der Betreuerumgebung installiert werden.

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] Caution

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 [7].

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-bezogen
if [ -f /usr/lib/mc/mc.sh ]; then
  . /usr/lib/mc/mc.sh
fi

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
[Tip] Tip

Es ist essentiell, einige GUI git-Werkzeuge wie gitk oder gitg zu verwenden, um effektiv mit der Chronik des git-Depots zu arbeiten.

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

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"
. /usr/share/bash-completion/completions/quilt
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:"
    QUILT_COLORS="${QUILT_COLORS}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 Section 4.9, “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, der im Paket devscripts enthalten ist, baut das Binärpaket und überprüft es mit dem Befehl lintian. Es ist praktisch, ausführliche Ausgaben von dem Befehl lintian zu haben.

Sie können diese in ~/.devscripts wie folgt einrichten.

DEBUILD_DPKG_BUILDPACKAGE_OPTS="-i -I -us -uc"
DEBUILD_LINTIAN_OPTS="-i -I --show-overrides"
DEBSIGN_KEYID="Your_GPG_keyID"

Die Optionen - und -I in DEBUILD_DPKG_BUILDPACKAGE_OPTS für den Befehl dpkg-source helfen beim erneuten Bauen von Debian-Paketen ohne Fremdinhalte (siehe Section 5.17, “Pakete ohne irrelevante Inhalte bauen”).

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

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:

  • Das Schroot-Paket, um die Geschwindigkeit der Chroot-Erstellung zu erhöhen.
  • Das lintian-Paket, um Fehler im Paket zu finden.
  • Das Piuparts-Paket, um Fehler im Paket zu finden.
  • Das Autopkgtest-Paket, um Fehler im Paket zu finden.
  • 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)

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(<IhrName>) gid=1000(<IhrName>) 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] Warning

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

[Note] Note

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

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

# Konfigurationsdatei für "gbp <Befehl>"

[DEFAULT]
# Der Standard-Bau-Befehl:
builder = sbuild
# pristine-tar verwenden:
pristine-tar = True
# Farbe auf einem Terminal verwenden, Alternativen: on/true, off/false oder auto
color = auto
[Tip] Tip

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:

  • Specialized HTTP caching proxy using the apt-cacher-ng package.
  • 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.

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

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] 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.

[8] Logout from your system via GUI menu may not work.