8.31. Paketänderungen nachlesen

8.31.1. Das Änderungsprotokoll beziehen

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.

8.31.2. Zwei Paketversionen miteinander vergleichen

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.

Abbildung 8.26. Von diffoscope gefundene Änderungen (Ausschnitt)

werkzeuge/paketoperationen/diffoscope-debian-package.png

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.