Für jedes Debianpaket existiert im entsprechenden Quellpaket (siehe
Abschnitt 2.7.4, „Source-Pakete (dsc
und weitere Dateien)“) ein Protokoll mit den erfolgten Änderungen im Paket,
ein sogenanntes Changelog (Datei debian/changelog
). Das ist eine
Textdatei mit einzelnen Einträgen (siehe unten). Daraus ersehen Sie
überblicksweise, was die Entwickler im Vergleich zur vorherigen
Veröffentlichung des Paketes verändert haben und welche Änderungen oder
Debian-spezifischen Anpassungen der Maintainer im Vergleich zum
Originalquellcode zusätzlich vorgenommen hat.
Die nachfolgenden Ausgaben zeigen den Vorgang für die beiden Werkzeuge
apt-get
und aptitude
mit einem Ausschnitt des Changelogs zum Paket
smartpm. Beide Programme kennen für den Aufruf das Unterkommando
changelog
und benötigen zusätzlich den Namen des Debianpakets. Das
angefragte Paket muss dazu nicht auf Ihrem Debiansystem installiert sein.
Beziehen der Changelog-Informationen zum Paket smartpm mittels apt-get
.
$ apt-get changelog smartpm Holen:1 http://metadata.ftp-master.debian.org smart 1.4-2 Changelog [8.573 B] Es wurden 8.573 B in 1 s geholt (4.754 B/s). ... smart (1.4-2) unstable; urgency=low * Switch to dh_python2 (Thanks to Barry Warsaw) -- Free Ekanayaka <freee@debian.org> Fri, 12 Aug 2011 17:27:20 +0100 smart (1.4-1) unstable; urgency=low * New upstream release * Drop several patches (02_fix_fetcher_test, 03_setup, 06_CVE-2009-3560.patch and 06_CVE-2009-3720.patch) as they were all merged upstream -- Free Ekanayaka <freee@debian.org> Tue, 31 May 2011 16:04:52 +0200 ... $
Bei aptitude
sieht das wie folgt aus:
Die Paketänderungen zum Paket smartpm mit Hilfe von aptitude
ausgeben.
$ aptitude changelog smartpm smart (1.4-2) unstable; urgency=low * Switch to dh_python2 (Thanks to Barry Warsaw) -- Free Ekanayaka <freee@debian.org> Fri, 12 Aug 2011 17:27:20 +0100 smart (1.4-1) unstable; urgency=low * New upstream release * Drop several patches (02_fix_fetcher_test, 03_setup, 06_CVE-2009-3560.patch and 06_CVE-2009-3720.patch) as they were all merged upstream -- Free Ekanayaka <freee@debian.org> Tue, 31 May 2011 16:04:52 +0200 ... $
Die Beschreibung der vorgenommenen Änderungen folgt dabei einem festgelegten Schema. Dieses Schema ist im Debian Policy Manual [Debian-Policy-Manual] im Abschnitt Source packages/Debian changelog genau erklärt. Kurz zusammengefasst, ist jeder Version eines Paketes ein separater Block gewidment:
Format der erfolgten Änderungen.
package (version) distribution(s); urgency=urgency [optional blank line(s), stripped] * change details more change details [blank line(s), included in output of dpkg-parsechangelog] * even more change details [optional blank line(s), stripped] -- maintainer name <email address>[two spaces] date
Jeder dieser Blöcke beginnt stets mit dem Namen des Quellpakets, gefolgt von
der Versionsnummer des Pakets, der Veröffentlichung (zumeist unstable
)
(siehe Abschnitt 2.10, „Veröffentlichungen“), sowie der Dringlichkeit oder dem Schweregrad
der vorgenommenen Änderungen. Dieser Wert ist einer aus low
, medium
,
high
, emergency
und critical
. Darunter stehen die jeweiligen Änderungen
als einfache Aufzählung.
Wie oben bereits genannt, beschreibt das Änderungsprotokoll lediglich in groben Zügen, welche Korrekturen ein Paket erfahren hat. Um die detaillierten Änderungen zwischen zwei (aufeinanderfolgenden) Paketversionen zu erfahren, bedarf es einer genaueren Inspektion.
Zwei Werkzeuge sind uns bislang bekannt — debdiff
und diffoscope
[Debian-Paket-diffoscope]. Das Erstgenannte satmmt aus dem Paket
devscripts
[Debian-Paket-devscripts] stammt, das zweite gehört
hingegen zu dem Projekt Reproducible Builds [ReproducibleBuilds].
Während das Paket devscripts für debdiff
eine recht überschaubare
Paketgröße besitzt (derzeit etwa 1 MB), ist diffoscope zwar nur rund
60 KB groß, zieht aber die gesamte Entwicklungsumgebung für
Reproducible Builds als Paketabhängigkeit mit — das kann dann
durchaus 2 GB Platz beanspruchen.
Mit beiden Werkzeugen erhalten Sie eine Auswertung darüber, welche
Dateien oder Verzeichnisse aus einem Paket im Vergleich zur vorherigen
Version entfernt wurden sowie welche hinzugekommen, umbenannt oder auch
verschoben wurden und welche Besitz- und Ausführungsrechte sich ggf.
noch geändert haben. Der nachfolgende Aufruf zeigt debdiff
mit zwei
Versionen des Pakets xpenguins über den folgenden Aufruf:
Aufruf von debdiff
für zwei Pakete.
$ debdiff xpenguins* [The following lists of changes regard files as different if they have different names, permissions or owners.] Files in second .deb but not in first - ------------------------------------ -rw-r--r-- root/root /usr/share/doc/xpenguins/changelog.Debian.amd64.gz Control files: lines which differ (wdiff format) - ----------------------------------------------- Installed-Size: [-1119-] {+1114+} {+Source: xpenguins (2.2-10)+} Version: [-2.2-10-] {+2.2-10+b1+}
Der Aufruf von diffoscope
ist ähnlich, hier am Beispiel für zwei
Pakete von cheese:
Aufruf von diffoscope
für zwei Pakete.
$ diffoscope cheese_3.14.1-1_amd64.deb cheese_3.14.1-2_amd64.deb
Nachfolgend sehen Sie die Ausgabe der entdeckten Änderungen. Es ist eine Art Baumstruktur, die durchaus länger werden kann. Daher zeigt das nachfolgende Bild nur einen Ausschnitt.
Die Farbgebung der Ausgabe folgt den üblichen Gepflogenheiten — rot für Entfernungen und grün für Zeilen, die hinzugefügt wurden. Die Angaben in hellblau benennen die Position in der jeweiligen Datei.