Inhaltsverzeichnis
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.
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
It is essential to use some GUI git tools like gitk or gitg to work effectively with the history of the git repository.
The quilt command offers a basic method for recording modifications. For the Debian packaging, it should be customized to record modifications in the debian/patches/ directory instead of its default patches/ directory.
In order to avoid changing the behavior of the quilt command itself, let’s create an alias dquilt for the Debian packaging by adding the following lines to the ~/.bashrc file. The second line provides the same shell completion feature of the quilt command to the dquilt command.
Fügen Sie zur ~/.bashrc folgendes hinzu.
alias dquilt="quilt --quiltrc=${HOME}/.quiltrc-dpkg" complete -F _quilt_completion $_quilt_complete_opt dquilt
Then let’s create ~/.quiltrc-dpkg as follows.
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
See quilt(1) and How To Survive With Many Patches or Introduction to Quilt on how to use the quilt command.
Siehe Abschnitt 4.8, „Schritt 3 (alternativ): Änderungen der Quellen der Originalautoren“ für beispielhafte Verwendungen.
The debsign command, included in the devscripts package, is used to sign the Debian package with your private GPG key.
The debuild command, included in the devscripts package, builds the binary package and checks it with the lintian command. It is useful to have verbose outputs from the lintian command.
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"
The -i and -I options in DEBUILD_DPKG_BUILDPACKAGE_OPTS for the dpkg-source command help rebuilding of Debian packages without extraneous contents (see Abschnitt 5.15, „Pakete ohne irrelevante Inhalte bauen“).
Derzeit ist ein RSA-Schlüssel mit 4096 Bits eine gute Idee. Siehe Creating a new GPG key.
The pbuilder package provides a clean room (chroot) build environment. [7]
Let’s customize it with several helper packages.
The optional customization may cause negative effects. In case of doubts, disable them.
Let’s create ~/.pbuilderrc as follows (all optional features are disabled).
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
A symlink from /root/.pbuilderrc to /home/<user>/.pbuilderrc may help for the consistent experience.
Due to Bug #606542, you may need to manually install packages listed in EXTRAPACKAGES into the chroot. See Abschnitt 7.10, „chroot“.
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.
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
All these scripts need to be set world executable: “-rwxr-xr-x 1 root root”.
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
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: