Das Werkzeug lintian
[Lintian] steht in dem gleichnamigen Paket
[Debian-Paket-lintian] bereit. Der Name leitet sich von engl. lint
für Fussel und dem ian aus Debian ab. Es analysiert die
verschiedenen Bestandteile eines einzelnen Debianpakets hinsichtlich
typischer Fehler und insbesondere auch bzgl. häufig vorkommender
Verstöße gegen die Debian-Richtlinien (Debian Policy Violations).
Die Idee hinter von lintian
war auch Vorbild für rpmlint
[Debian-Paket-rpmlint] auch . Es leistet das gleiche für RPM-Pakete,
ist aber in Python anstatt Perl geschrieben. Es war auch eine Weile in
Debian nicht gepflegt und war deswegen weder Bestandteil von Debian 10
Buster noch von Debian 11 Bullseye. In Debian 12 Bookworm ist es
wieder mit dabei.
Als Systemadministrator hilft Ihnen lintian
primär dabei, sowohl
eigene als auch die Pakete von Drittparteien aus nicht-Debian-eigenen
Paketquellen auf grundlegende Probleme hin zu testen. Deswegen gehen wir
an dieser Stelle vor allem auf die Nutzung von lintian
über die
Kommandozeile ein.
Bei Debian wird lintian
primär an drei verschiedenen Stellen genutzt:
lintian
zum Paket mp4h“) und
Dazu führt lintian
eine ganze Reihe vorbereiteter Tests mit dem Paket
durch. Das Ergebnis umfasst Fehlermeldungen mit unterschiedlichem
Schweregrad, deren Kategorien wir für Sie in Tabelle 37.1, „Klassifikation der lintian
-Fehlermeldungen“
zusammengestellt haben.
Tabelle 37.1. Klassifikation der lintian
-Fehlermeldungen
Parameter | Beschreibung |
---|---|
| Fehler (error) |
| Warnungen (warning) |
| Informationelle Hinweise (informational tags) |
| Pingelige Markierung (pedantic tags) |
| Überschriebene Markierungen (overridden tags) |
| Experimentelle, ggf. fehleranfällige Markierungen (experimental tags) |
| Kein Fehler, Bemerkung (note) |
lintian
arbeitet auf einzelnen, vorbereiteten Paketdateien, nicht
jedoch auf bereits installierten Paketen. Für letzteres eignet sich
hingegen das Paket adequate, welches wir in
Abschnitt 37.2, „Bereits installierte Pakete mit adequate
prüfen“ genauer besprechen.
Das Programm verarbeitet sowohl Dateien für Quellpakete (.dsc
), als
auch für Binärpakete (.deb
). Übergeben Sie lintian
auch die während
des Paketbaus erstellte Datei .changes
, in welcher alle Dateien des
jeweiligen Quell- und Binärpakets aufgelistet sind, validiert das
Programm nacheinander beide Entwicklungsstufen in einem Rutsch.
Im nun folgenden Beispiel überprüft lintian
das Paket mp4h. Als
Schalter kommen zum Einsatz:
-v
(Langform --verbose
)
--color auto
never
(keine Hervorhebung), always
(stets mit Hervorhebung) und html
(Hervorhebung bei der Ausgabe als Webseite).
-I
(Langform --display-info
)
-E
(Langform --display-experimental
)
--pedantic
Weitere Schalter und Parameter sind in der Manpage zu lintian
ausführlich erklärt.
Aufruf von lintian
zum Finden typischer Probleme im Paket mp4h.
$ lintian -v --color auto -I -E --pedantic mp4h_1.3.1-9_amd64.changes N: Using profile pkg-perl/main. N: Setting up lab in /tmp/temp-lintian-lab-1SvMHn5dUB ... N: Unpacking packages in group mp4h/1.3.1-9 N: ---- N: Processing changes file mp4h (version 1.3.1-9, arch source amd64) ... N: ---- N: Processing source package mp4h (version 1.3.1-9, arch source) ... P: mp4h source: no-dep5-copyright W: mp4h source: ancient-standards-version 3.9.4 (current is 3.9.6) P: mp4h source: debian-watch-may-check-gpg-signature N: ---- N: Processing binary package mp4h (version 1.3.1-9, arch amd64) ... P: mp4h: no-homepage-field W: mp4h: postinst-has-useless-call-to-ldconfig W: mp4h: postrm-has-useless-call-to-ldconfig $
Die Ausgabe auf der Kommandozeile und in
Abbildung 37.1, „Ausgabe der Paketvalidierung mittels lintian
zum Paket mp4h“ sind aus mehreren Gründen nicht
deckungsgleich. Es wurde zwar jeweils die gleiche Paketversion
überprüft, aber dabei kamen unterschiedliche lintian
-Versionen zum
Einsatz. Auf der Projektseite wird meist die neueste lintian
-Variante
aus Debian unstable oder testing genutzt, die sich z.B. auch anhand
der durchgeführten Tests unterscheidet, welche in das Paket aus Debian
stable eingeflossen sind.
Hilfreich ist auch die Option -i
(Langform --info
). Damit erhalten
Sie bei jedem ersten Vorkommen einer Markierung noch zusätzliche
Erklärungen und ersehen daraus, was die jeweilige Markierung bedeutet.
Den gleichen Effekt erhalten Sie, wenn Sie die Ausgabe von lintian
(ohne den Schalter -v
) über eine Pipe an das Kommando lintian-info
weiterleiten. lintian-info
ist ebenso Bestandteil des Pakets
lintian. Nachfolgend sehen Sie einen Ausschnitt zur Ausgabe dieses
Programmaufrufs, bei dem das Paket mp4h_1.3.1-9_amd64.deb überprüft
wird.
Erklärung zu den von lintian
gefundenen Problemen im Binärpaket mp4h (Ausschnitt).
$ lintian -I -E --pedantic mp4h_1.3.1-9_amd64.deb | lintian-info P: mp4h: no-homepage-field N: N: This non-native package lacks a Homepage field. If the package has an N: upstream home page that contains useful information or resources for N: the end user, consider adding a Homepage control field to N: debian/control. N: N: Refer to Debian Policy Manual section 5.6.23 (Homepage) for details. N: N: Severity: pedantic, Certainty: possible N: N: Check: fields, Type: binary, udeb, source N: W: mp4h: postinst-has-useless-call-to-ldconfig N: N: The postinst script calls ldconfig even though no shared libraries are N: installed in a directory controlled by the dynamic library loader. N: N: Note this may be triggered by a bug in debhelper, that causes it to N: auto-generate an ldconfig snippet for packages that does not need it. N: N: Refer to Debian Policy Manual section 8.1.1 (ldconfig) and N: http://bugs.debian.org/204975 for details. N: N: Severity: minor, Certainty: certain N: N: Check: shared-libs, Type: binary, udeb [...] $
[34] Von lintian
bemerkte, besonders schwere Fehler
sollten bei offiziellen Paketen gar nicht auftauchen, da diese damit
sozusagen bereits beim Aufnahmetest durchfallen.