Die Möglichkeit, auch die Quellpakete (siehe Abschnitt 2.7.4, „Source-Pakete (dsc und weitere Dateien)“) zu den
verwendeten Programmen zu erhalten, zählt zu den zentralen Säulen Freier
Software. Neben dem Lerneffekt steht die Befriedigung der Neugierde, zu
sehen, woraus überhaupt ein Debian-Binärpaket (siehe Abschnitt 2.7.1, „Binärpakete (deb)“)
entsteht und aus welchen Komponenten sich dieses zusammensetzt.
Damit erhalten Sie einen Blick hinter die Kulissen und können anhand des Quellcodes ersehen, wie die Software programmiert wurde. Nur über diesen Schritt können Sie ganz konkret nachvollziehen, wie diese funktioniert. Das hilft Ihnen insbesondere auch dabei, die Ursache zu lokalisieren, wenn ein Programm sich entgegen ihrer Erwartungen verhält.
Viele Entwickler weisen der Dokumentation ihrer Software häufig einen niedrigen Stellenwert zu. Es kommt daher vor, dass die Dokumentation unvollständig, fehlerhaft bzw. veraltet ist oder in einer Sprache vorliegt, die sie nicht beherrschen. Schwachpunkte sind zudem die Verfahren, welche implementiert wurden, aber auch die Parameter, Schalter und Konfigurationsdateien, mit der Sie das Verhalten der Software steuern und beeinflussen können.
Das Programm apt-get bringt hier den Schalter source mit und
erwartet danach die Angabe eines oder mehrerer Paketnamen. Damit
apt-get nach dem Aufruf die Quellpakete auch beziehen kann, benötigt
es einen entsprechenden Eintrag in der Liste der Paketquellen
(siehe Abschnitt 3.4, „Die Datei /etc/apt/sources.list verstehen“). Für die Veröffentlichung
Debian 9 Stretch sieht der Eintrag wie folgt aus:
deb-src http://ftp.de.debian.org/debian/ stretch main contrib non-free
APT wertet die Paketbeschreibung aus, bezieht danach alle Quellpakete
von dem angegebenen Paketmirror – den Debian Source Code (dsc) plus
Paketierung (siehe Abschnitt 4.2.2, „Source-Pakete“) – , aus denen das
Binärpaket zusammengebaut wurde und überprüft diese Komponenten (siehe
Abschnitt 8.32.1, „Prüfung eines Paketes auf Unversehrtheit“) anhand deren öffentlichem Schlüssel.
Am Schluss werden die drei Archive dsc, tar und diff im aktuellen
Verzeichnis entpackt.
Gibt es zusätzliche Änderungen am Quellcode in Form von Patches, werden diese ebenfalls bezogen und nacheinander auf den entpackten Quellcode angewendet. Nachfolgendes Beispiel zeigt diesen Vorgang anhand des Pakets libapache2-mod-authn-yubikey für den Webserver Apache:
Bezug des Sourcepakets libapache2-mod-authn-yubikey mit APT.
$ apt-get source libapache2-mod-authn-yubikey Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig Es müssen 22,5 kB an Quellarchiven heruntergeladen werden. Holen: 1 http://ftp.de.debian.org/debian/ wheezy/main libapache2-mod-authn-yubikey 1.0-1 (dsc) [1.891 B] Holen: 2 http://ftp.de.debian.org/debian/ wheezy/main libapache2-mod-authn-yubikey 1.0-1 (tar) [16,5 kB] Holen: 3 http://ftp.de.debian.org/debian/ wheezy/main libapache2-mod-authn-yubikey 1.0-1 (diff) [4.115 B] Es wurden 22,5 kB in 5 s geholt (4.095 B/s). gpgv: Schlüsselblockhilfsmittel`/home/frank/.gnupg/trustedkeys.gpg': Fehler beim Öffnen der Datei gpgv: Unterschrift vom Do 17 Feb 2011 16:22:26 CET mittels RSA-Schlüssel ID 8649AA06 gpgv: Unterschrift kann nicht geprüft werden: Öffentlicher Schlüssel nicht gefunden dpkg-source: Warnung: Fehler beim Überprüfen der Signatur von ./libapache2-mod-authn-yubikey_1.0-1.dsc dpkg-source: Information: libapache2-mod-authn-yubikey wird nach libapache2-mod-authn-yubikey-1.0 extrahiert dpkg-source: Information: libapache2-mod-authn-yubikey_1.0.orig.tar.bz2 wird entpackt dpkg-source: Information: libapache2-mod-authn-yubikey_1.0-1.debian.tar.gz wird entpackt $
Desweiteren existiert auch eine Alternative namens dget aus dem Paket
devscripts [Debian-Paket-devscripts]. Darüber kombinieren Sie den
Bezug der Paketinhalte. dget akzeptiert als Parameter eine Liste von
Paketnamen, die es nacheinander vom Paketmirror bezieht und im lokalen
Verzeichnis speichert. Liegt das betreffende Paket bereits im
Paketcache, entnimmt dget dieses von dort [Kemp-dget].
Bezug der beiden Pakete bash-doc und libbash-doc via dget.
# dget bash-doc
dget: using /var/cache/apt/archives/bash-doc_4.2+dfsg-0.1_all.deb (copy)
#
# dget libbash-doc
dget: retrieving http://ftp.de.debian.org/debian/pool/main/libb/libbash/libbash-doc_0.9.11-1_all.deb
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 20468 100 20468 0 0 166k 0 --:--:-- --:--:-- --:--:-- 243k
#