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 #