Nachdem die Vorbereitungen an den Dateien im Verzeichnis
debian/
abgeschlossen sind, kann mit dem Programm
dpkg-buildpackage
das Paket erstellt werden.
dpkg-buildpackage
wird ohne weitere Parameter
versuchen, die Sourcen und die Changes-Datei des Pakets digital zu signieren. Hierzu
wird ein vorhandener GnuPG-Key benutzt. Ist kein solcher Key erzeugt worden, so kann das Signieren mit den Optionen -us
(unsigned source) und -uc
(unsigned changes) verhindert werden. Im einfachsten Fall genügt also das
Kommando dpkg-buildpackage -us -uc
(als „root“),
um das Paket zu erzeugen.
dpkg-buildpackage
verfügt natürlich noch über viele
weitere Optionen:
debian:~# dpkg-buildpackage -h Debian dpkg-buildpackage . Copyright (C) 1996 Ian Jackson. Copyright (C) 2000 Wichert Akkerman This is free software; see the GNU General Public Licence version 2 or later for copying conditions. There is NO warranty. Usage: dpkg-buildpackage [options] Options: -r<gain-root-command> -p<sign-command> -d do not check build dependencies and conflicts -D check build dependencies and conflicts -k<keyid> the key to use for signing -sgpg the sign-command is called like GPG -spgp the sign-command is called like PGP -us unsigned source -uc unsigned changes -a<arch> Debian architecture we build for (implies -d) -b binary-only, do not build source } also passed to -B binary-only, no arch-indep files } dpkg-genchanges -S source only, no binary files } -t<system> set GNU system type } passed to dpkg-architecture -v<version> changes since version <version> } -m<maint> maintainer for package is <maint> } -e<maint> maintainer for release is <maint> } only passed -C<descfile> changes are described in <descfile> } to dpkg- -si (default) src includes orig for rev. 0 or 1 } genchanges -sa uploaded src always includes orig } -sd uploaded src is diff and .dsc only } -nc do not clean source tree (implies -b) -tc clean source tree when finished -ap add pause before starting signature process -h print this message -W Turn certain errors into warnings. } passed to -E When -W is turned on, -E turned it off. } dpkg-source -i[<regex>] ignore diffs of files matching regex } only passed to dpkg-source
dpkg-buildpackage
benötigt eine Umgebung, die der
späteren Installationsumgebung ähnlich ist. Das Paket kann als Superuser (root)
erzeugt werden, um dies zu gewährleisten. Nun macht es wenig Sinn, einen GnuPG-Key
für den Superuser zu erzeugen. Um dieses Problem zu umgehen, dient die Option -r
, unmittelbar gefolgt von einem Kommando, das es
dem Benutzer erlaubt, Kommandos als Superuser auszuführen bzw. das eine virtuelle
root-Umgebung schafft. Dies kann beispielsweise das Kommando
fakeroot
oder
sudo
sein, ggf. ist natürlich die Konfiguration des
Programms (sudo) für diesen Benutzer anzupassen.
Viele der weiteren Optionen können und sollten in den Konfigurationsdateien im
Verzeichnis
debian/
definiert werden; bei Bedarf können diese
aber auch auf der Kommandozeile angepasst werden.
cvs-buildpackage
unterstützt das Erzeugen von
Debian Paketen, bei denen die Sourcen des Pakets mit CVS verwaltet werden. cvs-buildpackage
ist ein Skript, das
dpkg-buildpackage
nutzt. Dabei wird zunächst die
Datei debian/changelog
interpretiert und die aktuelle
Paketversion exportiert. Es wird überprüft, ob alle Änderungen bereits in den CVS-Baum importiert wurden, sollte dies nicht der Fall sein, so wird der
Vorgang abgebrochen und dem Benutzer wird die Möglichkeit gegeben, die veränderten
Dateien in das CVS zu importieren.
Beachten Sie, dass das Arbeitsverzeichnis, aus dem heraus
cvs-buildpackage
aufgerufen wird, die spätere
Entwicklungsumgebung enthält. In diesem Verzeichnis werden die aus dem CVS exportierten Dateien gespeichert, und cvd-buildpackage
hat die volle Kontrolle über dieses
Verzeichnis. Das bedeutet, dass alle Dateien, mit Ausnahme der originalen Sourcen,
gelöscht werden können. Stellen Sie sicher, dass Sie nicht in Ihrem aktuellen
Entwicklungszweig mit diesem Programm arbeiten; es können alle Daten verloren gehen!
Zusammen mit den Programmen
cvs-inject
und
cvs-upgrade
bildet dieses Programm die Infrastruktur,
die es Debian Entwicklern erlaubt, CVS als zentrales Entwicklungswerkzeug
einzusetzen. Hierbei wird insbesondere die Verwendung verschiedener Release-Stände eines Pakets, also beispielsweise
„stable“,
„unstable“ oder auch
„Experimental“, unterstützt.
Optionen
-h
Zeigt eine kurze Hilfe zu diesem Program an.
-m<module>
-P<paketname>
Gibt den Namen des Pakets an. Dies ist sinnvoll, wenn das Programm nicht im CVS-Baum ausgeführt wird.
-V<version>
Bestimmt die Versionsnummer des Pakets. Zusammen mit dem Paketnamen kann diese Option außerhalb eines CVS-Baums verwendet werden.
-T<tag>
Der CVS-Tag zum Exportieren der Sourcen des Pakets. Hierbei wird nicht versucht, das Tag aus der Versionsnummer heraus zu ermitteln. Dies setzt zwingend voraus, dass Sie wissen, was dies bedeutet...
-U<tag>
CVS-Tag, aus dem die Sourcen exportiert werden sollen. Diesmal wird nicht versucht, aus der Versionsnummer zu extrahieren. Auch hier: Überlegen Sie genau, ob dies gewünscht ist.
-C<Build Command>
Name des Programms, um die Debian Pakete zu erzeugen; normalerweise
wird dies
dpkg-buildpackage
sein. Der Benutzer kann
aber auch ein beliebiges anderes Programm oder Skript verwenden.
Beispielsweise kann das Kommando
chroot /opt/root dpkg-buildpackage
benutzt werden, um das Paket in einer abgeschirmten
„chroot“-Umgebung zu erzeugen. Ein anderes Beispiel wäre
die Verwendung von
pdebuild --auto-debsign --buildresult
../
, um die Pakete mittels
pbuilder
zu erzeugen. Dieses Argument
überschreibt die Umgebungsvariable
CVSDEB_BUILDPACKAGE
und auch die Variable
conf_buildpackage
in der
Konfigurationsdatei.
-G<get method>
Mit dieser Option kann ein Archiv des aktuellen Quellcodes aus dem Netz geladen werden.
Dies überschreibt ggf. eine bereits bestehende Datei mit gleichem Namen.
Üblicherweise werden hier Programme wie
wget
oder
curl
eingesetzt werden. Diese Option
überschreibt die Umgebungsvariable
CVSDEB_GET_ORIG
und die Option
conf_get_orig
in der
Konfigurationsdatei.
-A
Diese Option verwendet apt-get source
, um ein aktuelles Archiv
des Quellcodes zu beschaffen. Ist bereits ein aktuelles Archiv
vorhanden, so hat diese Option keinerlei Wirkung. Werden die Optionen -A
und -G
zugleich angegeben, so wird zuerst -G
beachtet. Hiermit wird die
Umgebungsvariable
CVSDEB_USE_APT
sowie die Variable
conf_use_apt
in der Konfigurationsdatei
überschrieben.
-R<root directory>
Das Wurzel-Verzeichnis des ursprünglichen Quellcodes. Es wird
erwartet, dass das Archiv mit dem Quellcode im Verzeichnispfad <Wurzelverzeichnis><Paketname>/
zu finden ist, falls nicht das Arbeitsverzeichnis auf einen anderen Pfad
gesetzt ist oder der Quellcode aus dem CVS exportiert wird. Wird das
Arbeitsverzeichnis von cvs-buildpackage
gesetzt (auf der
Kommandozeile, in der Konfigurationsdatei oder durch Setzen der
Umgebungsvariablen), so wird die Angabe für das Wurzelverzeichnis
ignoriert.
-W<Arbeitsverzeichnis>
Diese Option gibt den vollen Pfad zum Arbeitsverzeichnis von cvs-buildpackage
an, in dem der Quellcode
aus dem CVS exportiert wird und in dem die Datei <package
name>_<version>.orig.tar.gz
liegt.
Es ist nicht zwingend notwendig, dass ein Archiv mit dem originalen
Quellcode vorhanden ist, da dies auch aus den Quellen aus dem CVS-Baum
erzeugt werden kann. Hierbei kann es jedoch zu Unterschieden kommen,
wenn bereits Veränderungen im CVS vorgenommen wurden. Bei Verwendung der
Version aus dem CVS wird als Dateiname für das Archiv
upstream_version_<version>
verwendet, und zwar ohne Angabe der Debian Revision. Die Verwendung
dieser Option überschreibt die Angaben in der Umgebungsvariablen
CVSDEB_WORKDIR
und in der Variablen
conf_workdir
in der
Konfigurationsdatei.
-F
Diese Option,
„Force“, hat nur Auswirkungen, wenn sie im Quellcode-Verzeichnis benutzt wird. Dies bewirkt, dass cvs tag -F
aufgerufen wird, bevor die
Quellen aus dem CVS exportiert werden. Es werden hierbei die Umgebungsvariable
CVSDEB_FORCETAG
sowie die
Konfigurationsvariable
conf_forcetag
überschrieben.
-E
Diese Option bewirkt einen
„Full Export“. Normalerweise exportiert
cvs-buildpackage
alle Daten aus dem CVS-Baum. Ist eine Datei orig.tar.gz
nicht vorhanden, so wird der
komplette CVS-Baum aus dem CVS exportiert, unabhängig davon, ob diese
Option angegeben wird oder nicht. Dies überschreibt die
Umgebungsvariable
CVSDEB_FULLEXPORT
und die
Konfigurationsvariable
conf_fullexport
.
-op
Das Gegenteil von „Full Export“. Mit dieser Option wird
eine Datei
orig.tar.gz
im aktuellen
Arbeitsverzeichnis von
cvs-buildpackage
entpackt. Danach wird
cvs rdiff
benutzt, um den Quellcode-Baum
mit dem aktuellen Stand aus dem CVS abzugleichen.
-ctp
Diese Option setzt den String package_
vor jedes CVS-Tag. Dies
überschreibt den Konfigurationsdatei-Eintrag conf_forcetag
und die Umgebungsvariable CVSDEB_PACKAGEINTAG
. Normalerweise wird
dieser String nicht vor das CVS-Tag geschrieben.
-n
Diese
„No-Exec-Option“ bewirkt einen kompletten Testlauf von cvs-buildpackage
, ohne tatsächlich
Kommandos auszuführen; eine reine Simulation.
-f<fix_skript>
Mit dieser Option kann ein Skript angegeben werden, das im Quellcode-Verzeichnis ausgeführt wird, um Zugriffsrechte zu korrigieren. Dies ist notwendig, wenn neue Skripte von zusätzlichen Patches angelegt wurden.
-H<hook_script>
Mit dieser Option wird ein Skript vor dem Aufruf von dpkg-buildpackage
aufgerufen. Dies
überschreibt die Umgebungsvariable CVSDEB_HOOK
, die wiederrum die
Konfigurationsvariable conf_hook_script
überschreibt.
-x<prefix>
Setzt das CVS-Präfix für das voreingestellte Modul. Dies überschreibt
die Umgebungsvariable CVSDEB_PREFIX
.
Alle weiteren Kommandozeilenargumente werden nicht interpretiert und vollständig
an das Programm dpkg-buildpackage
durchgereicht.
Neben den Kommandozeilenoptionen versucht
cvs-buildpackage
zunächst in der Datei
/etc/cvsdeb.conf
, systemweite Einstellungen zu finden.
Danach wird, wenn vorhanden, eine benutzerbezogene Datei ~/.cvsdeb.conf
gelesen und interpretiert.
cvs-autoreleasedeb
erlaubt die Übertragung von
Paketen auf einen Server, welche von cvs-buildpackage
aus einem CVS-Modul erzeugt wurden.
CVS
cvs-autoreleasedeb
verwaltet Informationen zu allen
Paketen, die automatisch auf einen Server übertragen werden sollen. Wird die Datei debian/changelog
im CVS aktualisiert und die
Debian Versionsnummer des Paketes dabei vergrößert, so wird dieses Paket
automatisch auf den Server übertragen.
Alle Einstellungen dieses Programmes werden in der Konfigurationsdatei cvs-autoreleasedeb.conf
verwaltet. cvs-autoreleasedeb
kennt keinerlei
Kommandozeilenparameter.
cvs-autoreleasedeb
kann auf zwei Arten eingesetzt
werden. Zunächst ist es möglich, als Benutzer cvs-autoreleasedeb
das Skript über einen Cron-Job
aufzurufen. Dies ist sinnvoll, wenn regelmäßig neue Versionen der Pakete
(beispielsweise im Rahmen eines Software-Entwicklungsprojektes) zur Verfügung
gestellt werden sollen. In diesem Fall wird die Konfigurationsdatei /etc/cvs-autoreleasedeb.conf
gelesen und ausgewertet,
die Pakete werden im Verzeichnis /var/lib/cvs-autoreleasedeb/
erzeugt. Sollcvs-autoreleasedeb
auf diese Weise genutzt werden, so
ist die Datei /etc/default/cvs-autoreleasedeb
anzupassen. Die
Ausgabe des Programmes cvs-autoreleasedeb
wird in die Datei /var/log/cvs-autoreleasedeb/run.log
geschrieben.
Alternativ kann cvs-autoreleasedeb
durch den Benutzer direkt
aufgerufen werden. In diesem Fall wird als Konfigurationsdatei die Datei $HOME/.cvs-autoreleasedeb/conf
eingesetzt. Die
erzeugten Pakete landen im Verzeichnis $HOME/.cvs-autoreleasedeb/
. cvs-autoreleasedeb
setzt hierbei keine Vorgabewerte
ein, es muss also zwingend eine sinnvolle Konfigurationsdatei vorhanden sein.
Mit
debchange
kann die Datei
debian/changelog
in einem
Debian Source-Verzeichnisbaum verwaltet werden. Vereinfacht kann auch der Alias
dch
verwendet werden. Das Kommando
debchange
muss immer innerhalb des Verzeichnisses
aufgerufen werden, in dem sich die Sourcen zu dem zu erstellenden Debian Paket
befinden. Es wird ein Texteditor gestartet und automatisch ein neuer Eintrag dem
changelog
hinzugefügt. (Es werden die
Umgebungsvariablen
VISUAL
und
EDITOR
benutzt, um den gewünschten Editor zu
bestimmen.) Wird der gewünschte Text bereits auf der Kommandozeile angegeben, so
kann
debchange
auch in einem Skript ohne weitere
Interaktion des Benutzers ablaufen. Der Eintrag wird an der entsprechenden Stelle
hinzugefügt, inklusive aller notwendigen Umbrüche.
Die Syntax für dieses Kommando lautet:
debchange [options] [text ...] dch [options] [text ...]
Wird der Editor ohne Änderungen an der Datei verlassen, so wird auch von debchange
keine weitere Änderung an der Datei
vorgenommen. Wenn ein Editor benutzt wird, der mit der Option +n
an eine bestimmte Stelle in einem Dokument
springen kann, so wird die Schreibmarke direkt an die passende Stelle in der changelog
-Datei gesetzt.
Beachten Sie, dass changelog
-Dateien immer mit einer UTF-8-Kodierung
gespeichert werden. Sollte dies nicht der Fall sein, so können Sie das Programm iconv
verwenden, um die Datei umzuwandeln.
debchange
kann darüber hinaus mit der Option --closes
Einträge erzeugen, die dazu führen, dass ein
Bug im
Debian Bug Tracking System geschlossen wird. Hierzu wird das Debian BTS (Debian Bug Tracking System, bugs.debian.org/) nach dem Titel
und dem Paketnamen durchsucht. Mit der Option --noquery
oder der Umgebungsvariablen DEBCHANGE_QUERY_BTS
, die auf den Wert no
gesetzt sein muss, kann diese Abfrage verhindert
werden.
Meistens wird eine der Optionen --append
, --increment
oder --newversion
, wie weiter unten beschrieben,
eingesetzt. Werden keine Optionen angegeben, so versucht debchange
eine Logdatei von dupload
oder dput
im darüberliegenden Verzeichnis zu finden, um zu
ermitteln, ob die bestehende Version eines Paketes bereits erfolgreich auf einen
Server übertragen wurde.
Die Ausgabe einer Warnung erfolgt, falls eine Logdatei gefunden
wurde, in dieser jedoch kein erfolgreicher Upload verzeichnet ist.
Werden die Optionen --increment
und --newversion
benutzt, so wird der Name und die E-Mail-
Adresse für die neue Version wie folgt ermittelt. Ist die Umgebungsvariable DEBFULLNAME
gesetzt, so wird der Inhalt als Name des
Maintainers (Paketbetreuer) verwendet.
Weiterhin wird die Umgebungsvariable DEBEMAIL
ausgewertet. Ist diese gesetzt, so wird der
Inhalt als Mail-Adresse verwendet. Hat diese Variable einen Wert, der der Syntax name <email>
entspricht, so wird auch
der Name aus dieser Variablen verwendet, falls DEBFULLNAME
nicht gesetzt ist.
Ist die Variable DEBEMAIL
nicht gesetzt, so wird versucht, die
Information aus der Variablen EMAIL
zu ermitteln. Konnte der Name bisher nicht ermittelt werden, so wird der Systemaufruf getpwuid(3)
verwendet, um den Namen aus der Datei /etc/passwd
zu ermitteln. Schlägt auch dies fehl, so
wird der letzte Eintrag in der changelog
-Datei ausgewertet.
Konnte die E-Mail-Adresse nicht ermittelt werden, so wird versucht, diese aus der
Datei /etc/mailname
zu ermitteln. Danach wird der
Benutzername zusammen mit dem FQDN getestet. Gibt auch dies keinen sinnvollen Wert,
so wird auch hier die Datei changelog
ausgewertet.
Abschließend ist festzuhalten, dass
die Variablen DEBFULLNAME
und DEBEMAIL
gesetzt werden sollten, wenn dieses Skript
eingesetzt wird.
Besteht der Verzeichnisname, der den Quellcode enthält, aus dem Paketnamen und der
Versionsnummer, so versucht debchange
dieses Verzeichnis umzubenennen, falls die
Upstream-Versionsnummer verändert wurde. Dies kann mit der Option --preserve
auf der Kommandozeile oder auch in der
Konfigurationsdatei verhindert werden, wie weiter unten beschrieben.
Wie viele andere Skripte aus dem Paket
devscripts
versucht auch
debchange
, rekursiv im Verzeichnisbaum die Datei
debian/changelog
zu finden. Wird diese Datei
gefunden, so wird überprüft, ob das darüber liegende Verzeichnis dem Paketnamen
entspricht. Wie dies genau durchgeführt wird, kann durch die beiden
Konfigurationsvariablen DEVSCRIPTS_CHECK_DIRNAME_LEVEL
und DEVSCRIPTS_CHECK_DIRNAME_REGEX
sowie deren
Kommandozeilen-Gegenstücke --check-dirname-level
bzw. --check-dirname-regex
beeinflusst werden.
Die Variable DEVSCRIPTS_CHECK_DIRNAME_LEVEL
kann dabei die
folgenden Werte annehmen:
Optionen
--increment
, -i
Erhöht die Versionsnummer des Pakets um eins. Dies erzeugt einen
neuen Eintrag am Anfang des
changelog
mit den entsprechenden Kopf-
und Fußzeilen. Handelt es sich um ein neues Debian Paket, so wird auch
der Verzeichnisname angepasst.
--append
, -a
Fügt einen neuen Eintag am Ende der aktuellen Version ein.
--newversion
, -v
Gibt eine spezifische Versionsnummer an (inklusive des Debian Release) und verhält sich ansonsten wie die Option --increment
. Auch hier wird der
Verzeichnisname angepasst, wenn dies notwendig ist.
--fromdirname
, -d
Diese Option interpretiert die Versionsnummer aus dem aktuellen Verzeichnis, diese muss in
der gebräuchlichen Form paketname-versionsnummer
vorliegen.
--closesnnnnn
,[nnnnn,...]
Erzeugt changelog
-Einträge, die die angegebenen Bug-Nummern im BTS schließen. Es wird eine Warnung ausgegeben, falls das
Debian BTS nicht erreichbar ist und die Option --noquery
nicht angegeben wurde.
--[no]query
Legt fest, ob das BTS benutzt werden soll, wenn entsprechende
Einträge im changelog
vorgenommen werden.
--preserve
, -p
Lässt den Verzeichnisnamen des Source-Baums unverändert, auch wenn sich die Versionsnummer des Pakets verändert.
--no-preserve
Ändert den Verzeichnisnamen des Source-Baums nicht (die Voreinstellung).
--distribution dist
, -D dist
--urgency urgency
, -u urgency
Setzt den angegebenen Eintrag für die Dringlichkeit in die changelog
-Datei. Der Standardwert ist
„low“.
--no-conf
, --noconf
Benutzt keinerlei Voreinstellungen aus der Konfigurationsdatei. Dies muss als erst Option angegeben werden!
--check-dirname-level N
Wie vorab beschrieben, beeinflusst diese Option das Durchsuchen von Verzeichnissen.
--check-dirname-regex regex
Wie vorab beschrieben, beeinflusst diese Option das Durchsuchen von Verzeichnissen.
--help
, -h
Zeigt eine kurze Information als Hilfe an.
--version
Zeigt Informationen zur Version und zum Copyright dieses Programms an.
debchange
versucht beim Start, die
Konfigurationsdateien /etc/devscripts.conf
und ~/.devscripts
in dieser Reihenfolge einzulesen.
Werte in den Konfigurationsdateien können durch Optionen auf der Kommandozeile
überschrieben werden. Folgende Variablen werden in den Konfigurationsdateien
unterstützt:
DEBCHANGE_PRESERVE
Wird diese Variable auf den Wert yes
gesetzt, so hat dies die gleiche
Wirkung wie die Kommandozeilenoption --preserve
.
DEBCHANGE_QUERY_BTS
Auf den Wert no
gesetzt, bewirkt diese Variable das
Gleiche wie die Kommandozeilenoption --noquery
.
DEVSCRIPTS_CHECK_DIRNAME_LEVEL
, DEVSCRIPTS_CHECK_DIRNAME_REGEX
Wie zuvor beschrieben, beeinflussen diese beiden Variablen
die Verzeichnisse, die nach einer Datei
debian/changelog
durchsucht werden
sollen. Bei der Verwendung dieser Variablen in den globalen
Konfigurationsdateien ist zu beachten, dass dies Einfluss auf alle
Debian Pakete hat, die auf diesem System erstellt werden.
Weiterhin werden von
debchange
die Umgebungsvariablen
DEBEMAIL
,
EMAIL
und
DEBFULLNAME
ausgewertet. Mit der Umgebungsvariable
VISUAL
oder
EDITOR
kann auch der bevorzugte Texteditor bestimmt
werden.
debdiff
vergleicht die Dateien in zwei einzelnen oder
auch in Gruppen von Debian Paketen. Die Syntax für dieses Kommando lautet:
debdiff [options] ... deb1 deb2 debdiff [options] ... changes1 changes2 debdiff [options] ... --from deb1a deb1b ... --to deb2a deb2b ... debdiff [options] ... dsc1 dsc2
Beim Vergleich der Debian Pakete werden alle Dateien verglichen, die direkt zum
Paket gehören, also nicht die Hilfsskripte, die vor oder nach der Installation der
Dateien aufgerufen werden. Angezeigt werden dabei alle neu hinzugekommenen oder aus
dem Paket entfernten Dateien zwischen den beiden Versionen des Pakets. Weiterhin
wird mit dem Programm wdiff
ein Vergleich der control
-Dateien in den Paketen vorgenommen und das
Ergebnis angezeigt.
Es können mit debdiff
auch Gruppen von Paketen verglichen werden, debdiff
unterstützt dies auf zwei Arten: Zunächst
können zwei
.changes
-Dateien angegeben werden. Die in diesen
Dateien aufgeführten Debian Pakete werden daraufhin verglichen, indem der Inhalt
aller Pakete zusammengeführt wird. Hierzu müssen sich die Debian Pakete im
Verzeichnis der .changes
-Datei befinden.
Alternativ können die gewünschten Debian Pakete auf der Kommandozeile mittels der
Optionen --from
und --to
angegeben werden. Hiermit kann festgestellt
werden, ob bei einem Aufsplitten des Pakets Dateien verloren gegangen sind.
control
-Dateien werden in beiden Fällen nur beachtet,
wenn lediglich zwei Debian Pakete miteinander verglichen werden.
debdiff
verwendet die Konfigurationsdateien aus dem
Paket
devscripts
. Die Einstellungen in den
Konfigurationsdateien können dabei immer mit den Kommandozeilenoptionen
überschrieben werden.
Werden debdiff
zwei Quellcode-Pakete (.dsc
-Dateien) beim Aufruf übergeben, so werden die
Inhalte dieser Quellcode-Pakete verglichen. Unterscheiden sich die beiden Pakete nur
in der Debian Versionsnummer (die Dateien
.orig.tar.gz
und .dsc
sind gleich), dann wird das Programm
interdiff
benutzt, um die
„Patches“ zu vergleichen. Ist dieses Programm nicht vorhanden, so wird
diff
verwendet, um die beiden Quellcode-Bäume miteinander zu vergleichen.
Optionen von debdiff
--dirs
, -d
Normalerweise werden Verzeichnisnamen beim Vergleich von Paketen
ignoriert. Mit dieser Option kann
debdiff
dazu veranlasst werden, den
Vergleich der Pakete auch auf Verzeichnisse anzuwenden.
--nodirs
Ignoriert Verzeichnisse beim Vergleich. Dies ist die Voreinstellung; diese Option kann aber benutzt werden, wenn in den Konfigurationsdateien etwas anderes definiert wurde.
--move FROM TO
, -m FROM TO
Es kann vorkommen, dass Dateien oder Verzeichnisse zwischen
Paketversionen verschoben werden. Mit dieser Option kann
debdiff
davon in Kenntnis gesetzt werden.
Dabei ist zunächst (als FROM
) der Name der Datei oder des
Verzeichnisses in dem älteren Paket anzugeben. Als zweiter Parameter
folgt dann die neue Position der Datei oder des Verzeichnisses.
Es kann eine beliebige Anzahl von verschobenen Dateien oder Verzeichnissen angegeben werden, diese werden alle der Reihe nach abgearbeitet.
--move-regex FROM TO
Wie die vorher beschriebene Option, jedoch wird die Angabe als regulärer Ausdruck in Perl-Schreibweise (s/^FROM/TO/
) interpretiert.
--nocontrol
Werden nur zwei Debian Pakete verglichen, so werden normalerweise die
control
-Dateien mittels
wdiff
verglichen. Diese Option
unterdrückt dieses Verhalten.
--control
Vergleicht die control
-Dateien. Dies ist die
Voreinstellung, kann aber benutzt werden, um Informationen in den
Konfigurationsdateien zu überschreiben.
--wp
, --wl
, --wt
Reicht die Optionen -p
, -l
oder -t
an das Programm wdiff
weiter. Dies führt zu einer
ausführlicheren Ausgabe von wdiff
.
--show-moved
Wenn mehrere Debian Pakete auf der Kommandozeile angegeben wurden
(über die .changes
-Dateien oder mittels der --from
/ --to
-Syntax), dann zeigt diese Option
auch die Dateien an, die zwischen den Paketen verschoben wurden.
--noshow-moved
Dies ist die Voreinstellung (siehe vorhergehende Option). Hiermit kann eine Einstellung in den Konfigurationsdateien überschrieben werden.
--no-conf
, --noconf
Verhindert das Einlesen von Konfigurationsdateien. Dies muss als erste Option auf der Kommandozeile angegeben werden.
--renamed FROM TO
Wird die Option --show-moved
verwendet und ein Paket
somit umbenannt, so wird debdiff
eingesetzt, um die Pakete zu
vergleichen.
--help
, -h
Zeigt eine kurze Übersicht aller Optionen.
--version
, -v
Zeigt Informationen zur Version und zum Copyright dieses Programms.
debdiff
benutzt die Konfigurationsdateien
/etc/devscripts.conf
und ~/.devscripts
. Alle in diesen Konfigurationsdateien
verwendeten Optionen können auf der Kommandozeile überschrieben werden. debdiff
benutzt die folgenden Variablen in den
Konfigurationsdateien:
Konfigurationsvariablen
DEBDIFF_DIRS
Wird diese Variable auf yes
gesetzt, so wirkt dies wie die
Kommandozeilenoption --dirs
.
DEBDIFF_CONTROL
Auf den Wert no
gesetzt, bewirkt diese Option das
Gleiche wie die die Kommandozeilenoption --nocontrol
. Der Vorgabewert ist yes
.
DEBDIFF_SHOW_MOVED
Auf yes
gesetzt, hat dies die Wirkung der
Kommandozeilenoption --show-moved
.
DEBDIFF_WDIFF_OPT
Diese Variable wird zu
wdiff
weitergereicht und kann den Wert -p
, -l
oder -t
annehmen.
wdiff
vergleicht zwei Dateien und gibt
Informationen darüber aus, welche ganzen Wörter sich in diesen beiden
Dateien unterscheiden. Ein Wort ist dabei eine Zeichenkette zwischen
zwei Leerzeichen.
dpkg-depcheck
ermittelt die Abhängigkeiten eines Programms. Hierbei wird das Programm
mittels strace
gestartet und die verwendeten Programme ermittelt. Die
ausgegebene Liste kann mit verschiedenen Optionen den Bedürfnissen angepasst werden.
Zur Veranschaulichung hier ein Beispiel:
fr@wasabi:~$ dpkg-depcheck -ab gpg --list-key 887EB817 gpg: Hinweis: Alte voreingestellte Optionendatei '/home/fr/.gnupg/options' wurde ignoriert gpg: WARNUNG: Sensible Daten könnten auf Platte ausgelagert werden. gpg: siehe http://www.gnupg.org/faq.html für weitere Informationen pub 1024D/887EB817 2000-12-12 Frank Ronneburg <fr@tischbahn.de> uid Frank Ronneburg <fr@debiananwenderhandbuch.de> sub 1024g/B91B2CCC 2000-12-12 ---------------------------------------------------------------------- The following files did not appear to belong to any package: /usr/lib/locale/locale-archive Packages needed: locales gnupg libbz2-1.0 (Build-)Essential packages used: zlib1g libc6
Zunächst wird die Ausgabe des Programms, hier gpg --list-key 887EB817
, ausgegeben. Danach folgen
die Auswertungen von dpkg-depcheck
. Die Optionen -ab
zeigen die Abhängigkeiten zur Laufzeit (-a
) und zur Erzeugung (-b
) des Pakets an.
Die Syntax von dpkg-depcheck
lautet:
dpkg-depcheck [options] command
Optionen
-a
, --all
Zeigt alle Pakete an, die zur Ausführung des Kommandos benötigt werden.
-b
, --build-depends
Zeigt auch Pakete an, die zum Übersetzen dieses Programms benötigt werden. Berücksichtigt direkte und indirekte Anhängigkeiten.
-d
, --ignore-dev-deps
Zeigt keine Pakete an, die zur Entwicklung (*-dev*
) benötigt werden.
-m
, --min-deps
Zeigt nur die minimal benötigten Pakete an.
-C
, --C-locale
Führt das Programm mit der angegebenen Sprachumgebung aus.
--no-C-locale
Verändert die Sprachumgebung bei der Ausführung des Programms nicht.
-l
, --list-files
Zeigt die zu den Paketen gehörenden Dateien mit an.
--no-list-files
Zeigt die zu den Paketen gehörenden Dateien nicht mit an.
-o
, --output=DATEI
Schreibt die Ausgabe in die angegebene Datei, anstatt diese auf der Standardausgabe anzuzeigen.
-O
, --strace-output=DATEI
Schreibt die Ausgabe von strace
in die angegebene Datei, anstatt diese auf der
Standardausgabe anzuzeigen.
-f
, --features=LIST
Aktiviert oder deaktiviert Funktionen, die als kommaseparierte Liste
angegeben werden. Eine Funktion wird dabei mit dem vorangestellten
Zeichen +
aktiviert; zur Vereinfachung kann
dieses Zeichen auch weggelassen werden. Funktionen werden durch das
vorangestellte Zeichen -
deaktiviert. Die möglichen Funktionen
sind:
warn-local
Gibt eine Warnung aus wenn, Dateien in den Verzeichnissen /usr/local/
oder /var/local/
benutzt werden.
Diese Funktion ist normalerweise aktiviert.
discard-check-version
Ignoriert den Aufruf von Programmen mit der Option --version
. Dies wird häufig
in Configure-Skripten benutzt. Diese Funktion ist
normalerweise aktiviert.
trace-local
Versucht auch Dateien aus /usr/local/
und /var/local/
zu analysieren.
Dies ist auf einem Debian System meistens nicht sinnvoll, da
dort keine Dateien abgelegt werden. Diese Funktion ist
normalerweise deaktiviert.
catch-alternatives
Warnt bei Zugriffen auf Dateien, die über Debian-Alternativen verwaltet werden (siehe Alternativen ). Diese Funktion ist normalerweise aktiviert.
discard-sgml-catalogs
Ignoriert SGML-Katalog-Dateien; diese werden von einigen SGML-Tools beim Starten geöffnet. Diese Funktion ist normalerweise aktiviert.
--no-conf
, --noconf
Verhindert das Einlesen von Konfigurationsdateien und muss als erste Option auf der Kommandozeile angegeben werden.
-h
, --help
Gibt einige Informationen zur Nutzung des Programms aus.
-v
, --version
Gibt die Versionsnummer und Informationen zum Copyright des Programms aus.
dpkg-debcheck
nutzt die beiden Konfigurationsdateien /etc/devscripts.conf
und ~/.devscripts
. Über die beschriebenen
Kommandozeilenoptionen können die Werte in den Konfigurationsdateien überschrieben
werden. Alternativ können hierzu auch Umgebungsvariablen genutzt werden.
dpkg-debcheck
nutzt momentan nur die
Umgebungsvariable DPKG_DEPCHECK_OPTIONS
. Die hier angegebenen Optionen
werden vor den Optionen auf der Kommandozeile ausgewertet. Hier ein Beispiel:
DPKG_DEPCHECK_OPTIONS="-b -f-catch-alternatives"
Mit
dscverify
können die PGP- oder
GnuPG-Signaturen von .changes
- oder .dsc
-Dateien mit den Schlüsseln aus dem
Debian Schlüsselbund (aus dem Paket
debian-keyring
) überprüft werden. Mit einer Option
können auch andere Schlüsselbunde angegeben werden. Es werden alle angegebenen Dateien in
den .changes
- und .dsc
-Dateien überprüft. Werden keine Abweichungen
festgestellt, so ist der Rückgabewert 0.
Optionen
--keyringkeyring
Schlüsselbunddatei, die dem Schlüsselbund hinzugefügt werden soll.
--no-conf
, --noconf
Verhindert das Einlesen von Konfigurationsdateien. Muss als erste Option angegeben werden.
--help
, -h
Zeigt eine kurze Hilfe zu dem Programm an.
--version
Zeigt Informationen zur Programmversion an.
Als einzige Konfigurationsvariable wird momentan
DSCVERIFY_KEYRINGS
unterstützt. Dies ist eine
kommaseparierte Liste von Schlüsselbunden, die zur Überprüfung herangezogen werden sollen.
Zusätzlich auf der Kommandozeile angegebene Schlüsselbunde werden ebenfalls
berücksichtigt.
Es werden weiterhin die Konfigurationsdateien
/etc/devscripts.conf
und ~/.devscripts
ausgewertet. Diese werden ignoriert,
wenn die Option --no-conf
oder --noconf
angegeben wird.
Dieses Programm holt die Datei update_excuses.html
aus dem Netz und durchsucht diese
nach einem angegebenen Maintainer (Betreuer
eines Debian Paketes). Diese Datei enthält, für die jeweils aktuelle
„testing“-Distribution,
„Ausreden“ der Betreuer, warum ein Paket nicht aktuell oder in einem
schlechten Zustand ist.
Die Syntax von grep-excuses
lautet
grep-excuses [options] [maintainer|package]
Wird beim Aufruf des Programmes kein Name eines Paketbetreuers angegeben, so
wird versucht, den Namen aus der Umgebungsvariablen DEBFULLNAME
zu lesen. Schlägt auch dies fehl, so wird der Name aus den Konfigurationsdateien /etc/devscripts.conf
und
~/.devscripts
aus dem Wert
GREP_EXCUSES_MAINTAINER
ermittelt.
Alternativ kann zum Namen des Betreuers auch ein Paketname auf der Kommandozeile angegeben werden.
plotchangelog
stellt Änderungen an einem Debian Paket
anhand der Informationen aus der Datei changelog
grafisch dar. Die Syntax von plotchangelog
lautet
plotchangelog [options] changelog ...
plotchangelog
nutzt das Programm gnuplot
für die grafische Darstellung. Die X-Achse stellt dabei den Zeitpunkt des Release einer Version dar,
die Y-Achse repräsentiert die Versionsnummer selbst. Jedes einzelne Release wird
dabei durch einen Punkt auf der Zeitachse dargestellt, betreuen unterschiedliche
Maintainer ein Paket, so wird für jeden Maintainer dieses Paketes eine gesonderte
Linie mit Punkten in unterschiedlichen Farben gezeichnet.
Alternativ kann auf der Y-Achse die Größe jedes Eintrages in der Datei changelog
oder die Anzahl der beseitigten Fehler je
Version des Paketes dargestellt werden.
Optionen
-l
, --linecount
Statt der Debian Versionsnummer des Paketes für die Daten der
Y-Achse wird die Anzahl der Zeilen in der changelog
-Datei für die Darstellung der
Grafik verwendet. Diese Option kann nicht zusammen mit der Option --bugcount
verwendet werden.
-b
, --bugcount
Statt der Debian Versionsnummer des Paketes für die Daten der Y-Achse
wird die Anzahl der behobenen Fehler (Bugs) von einer Version zur nächsten für die Darstellung der
Grafik verwendet. Die Anzahl der Fehler wird ermittelt, indem nach
Einträgen in der Form #nnnn
in der Datei changelog
gesucht wird. Werden die Werte
nicht in dieser Form angegeben, so ist die erzeugte Grafik fehlerhaft.
Diese Option kann nicht zusammen mit --linecount
verwendet werden.
-c
, --cumulative
Zusammen mit einer der Optionen --bugcount
oder --linecount
wird der durchschnittliche
Wert der Fehler bzw. Zeilen angezeigt.
-v
, --no-version
Zeigt nicht die Haupt-Versionsnummern (Upstream-Version) eines Paketes an. Dies ist bei vielen Änderungen an einem Paket sinnvoll, um die Grafik übersichtlicher erscheinen zu lassen.
-m
, --no-maint
Differenziert nicht zwischen verschiedenen Betreuern (Maintainer) eines Paketes.
-s datei
, --save=datei
Speichert die erzeugte Grafik im Postscript-Format in der Datei datei
, statt diese direkt anzuzeigen.
-u
, --urgency
Erzeugt größere Punkte, wenn das Paket mit einer höheren Priorität auf dem Server abgelegt wurde.
--verbose
Zeigt das erzeugte Skript an, welches an gnuplot
weitergereicht wird. Diese Option
dient zur Fehlersuche.
-gcommands
, --gnuplot="commands"
Diese Option erlaubt es, weitere Kommandos an das Programm gnuplot
durchzureichen. Diese werden im
erzeugten Skript nach der Initialisierung von gnuplot
aber noch vor dem eigentlichen
„plot“-Kommando eingefügt. Auf diesem Weg kann das
Layout der Grafiken beeinflusst werden. Weiterhin kann beispielsweise
das Kommando set terminal png color
verwendet werden,
um das Dateiformat für die Ausgabe im Zusammenhang mit der Option -s
zu verändern.
--help
Zeigt eine Hilfe zum Programm an.
--version
Zeigt die Versionsnummer, den Autor und die Copyright-Informationen zu diesem Programm an.
changelog ...
Pfad und Dateiname zur auszuwertenden changelog
-Datei. Werden mehrere Dateien
angegeben, so werden die Informationen aus allen Dateien in einer Grafik
zusammengefasst. Die Dateien können mit gzip
komprimiert sein, sie werden
automatisch entpackt. Textabschnitte in den Dateien, die nicht dem
Dateiformat einer Debian Changelog Datei entsprechen, werden ignoriert.
--no-conf
Diese Option verhindert, dass Konfigurationsdateien ausgewertet werden.
Es werden die Konfigurationsdateien /etc/devscripts.conf
und ~/.devscripts
(in dieser Reihenfolge) in
der Shell-Umgebung ausgewertet. Hierbei werden die folgenden Variablen
genutzt:
PLOTCHANGELOG_OPTIONS
Diese Variable ist eine Zeile von durch Leerzeichen
getrennten Optionen, die in jedem Fall zu benutzen sind, dies
kann beispielsweise der String -l -b
sein. Die Option -g
oder --gnuplot
ist hier nicht
erlaubt und wird ggf. ignoriert.
PLOTCHANGELOG_GNUPLOT
debclean
be-„reinigt“ einen
Quellcode-Verzeichnnisbaum.
debclean
durchsucht ab dem Verzeichnis, aus dem heraus
es aufgerufen wurde, alle Unterverzeichnisse und führt das Kommando debian/rules clean
für jedes gefundene
Debian Quellcode-Verzeichnis aus. Die entsprechenden Verzeichnisse werden anhand
einer vorhandenen Datei debian/changelog
gefunden, in der der Paketname dem
Verzeichnisnamen entspricht. Dieser Vergleich wird später noch genauer erläutert.
Der Aufruf von debclean
erfolgt anhand der Syntax
debclean [options]
Wird die Option --cleandebs
verwendet, so werden die Dateien mit der
Endung *.deb
, *.changes
und *.build
in allen Verzeichnissen entfernt. Die Dateien .dsc
, .diff.gz
und (.orig).tar.gz
werden nicht
verändert, so dass die
aktuelle Version eines Paketes in jedem Fall wiederhergestellt werden kann.
Weiterhin wird die Datei .upload
nicht verändert, damit debchange
korrekt funktioniert.
Die Option --nocleandebs
verhindert das zuvor beschriebene
Verhalten. Voreingestellt ist, dass keine Dateien gelöscht werden. debclean
nutzt das Kommando debuild
zum Bereinigen des Verzeichnisbaumes.
Wie viele andere Skripte aus dem Paket
devscripts
versucht auch
debclean
, rekursiv im Verzeichnisbaum die Datei
debian/changelog
zu finden. Wird diese Datei
gefunden, so wird überprüft, ob das darüber liegende Verzeichnis dem Paketnamen
entspricht. Wie dies genau durchgeführt wird, kann durch die beiden
Konfigurationsvariablen
DEVSCRIPTS_CHECK_DIRNAME_LEVEL
und
DEVSCRIPTS_CHECK_DIRNAME_REGEX
sowie deren
Kommandozeilen-Gegenstücke --check-dirname-level
bzw. --check-dirname-regex
beeinflusst werden.
Die Variable DEVSCRIPTS_CHECK_DIRNAME_LEVEL
kann dabei die
folgenden Werte annehmen:
0
Der Verzeichnisname wird nicht überprüft.
1
Überprüft den Verzeichnisnamen nur, wenn bei der Suche nach der
Datei debian/changelog
ein Wechsel des
Verzeichnisses notwendig ist.
2
Der Verzeichnisname wird in jedem Fall überprüft.
Optionen
-adebian-architecture, -tGNU-system-type
Beeinflussen den Typ der Architektur, für die das Paket gebaut wird.
--check-dirname-level N
Wie unter „Überprüfen von Verzeichnisnamen“ beschrieben.
--check-dirname-regex N
Wie unter „Überprüfen von Verzeichnisnamen“ beschrieben.
--no-conf
, --noconf
Es werden keine Konfigurationsdateien eingelesen. Dies muss als erste Option auf der Kommandozeile angegeben werden.
--help
, --version
Zeigt eine kurze Hilfe und die Versionsinformationen zu diesem Programm.
Die Konfigurationsvariablen DEVSCRIPTS_CHECK_DIRNAME_LEVEL
und DEVSCRIPTS_CHECK_DIRNAME_REGEX
können die
folgenden Werte annehmen:
0
Der Verzeichnisname wird nicht überprüft.
1
Überprüft den Verzeichnisnamen nur, wenn bei der Suche nach der
Datei debian/changelog
ein Wechsel des
Verzeichnisses notwendig ist.
2
Der Verzeichnisname wird in jedem Fall überprüft.
Optionen
--cleandebs
Entfernt die Dateien *.deb
, *.changes
und *.build
in allen Verzeichnissen. Die Dateien .dsc
, .diff.gz
und (.orig).tar.gz
werden
nicht verändert, so dass
die aktuelle Version eines Paketes in jedem Fall wiederhergestellt werden
kann. Weiterhin wird die Datei .upload
nicht verändert, damit debchange
korrekt funktioniert.
--nocleandebs
Die Option --nocleandebs
verhindert das zuvor
beschriebene Verhalten. Voreingestellt ist, dass keine Dateien gelöscht
werden. debclean
nutzt das Kommando debuild
zum Bereinigen des Verzeichnisbaumes.
--check-dirname-level N
, --check-dirname-regex regex
--no-conf
, --noconf
Ignoriert alle Konfigurationsdateien. Wird diese Option verwendet, so muss sie als erste Option auf der Kommandozeile angegeben werden.
--help
Zeigt eine kurze Hilfe an.
--version
Zeigt die Versionsnummer des Programmes an.
debclean
nutzt zwei Konfigurationsdateien /etc/devscripts.conf
und ~/.devscripts
. Diese werden in der genannten Reihenfolge
ausgewertet, die folgenden Variablen werden dabei genutzt:
Konfigurationsvariablen
DEBCLEAN_CLEANDEBS
Das Setzen dieser Variablen auf „yes“ führt dazu, dass die
Kommandozeilenoption --cleandebs
gesetzt wird.
DEVSCRIPTS_CHECK_DIRNAME_LEVEL
und DEVSCRIPTS_CHECK_DIRNAME_REGEX
Diese Variablen werden generell von den Programmen im Paket devscripts
verwendet.
debi
installiert die aktuelle Version eines
Debian Pakets. Die Syntax für den Aufruf lautet:
debi [options] [changes file] [package ...]
debi
ermittelt die aktuelle Version eines
Debian Pakets und installiert dieses. Wird eine
.changes
-Datei auf der Kommandozeile angegeben, so
wird versucht, den Paketnamen aus diesem Dateinamen zu ermitteln. Ist dies nicht der
Fall, so muss debi
innerhalb des Source-Code-Verzeichnisses
aufgerufen werden. In diesem Fall versucht debi
, eine .changes
-Datei in dem Verzeichnis zu finden, das der
aktuellen Paketversion entspricht (die notwendigen Angaben werden aus der .changes
-Datei übernommen).
Danach wird
debpkg -i
für jedes in der .changes
-Datei aufgeführte Paket ausgeführt. Dabei
wird davon ausgegangen, dass alle Pakete im gleichen Verzeichnis liegen wie die
Datei .changes
.
Werden auf der Kommandozeile eine Anzahl von Paketen übergeben, so wird versucht, ausschließlich diese Pakete zu installieren.
Wie viele andere Skripte aus dem Paket
devscripts
versucht auch
debchange
, rekursiv im Verzeichnisbaum die Datei
debian/changelog
zu finden. Wird diese Datei
gefunden, so wird überprüft, ob das darüber liegende Verzeichnis dem Paketnamen
entspricht. Wie dies genau durchgeführt wird, kann durch die beiden
Konfigurationsvariablen
DEVSCRIPTS_CHECK_DIRNAME_LEVEL
und
DEVSCRIPTS_CHECK_DIRNAME_REGEX
sowie deren
Kommandozeilen-Gegenstücke --check-dirname-level
bzw. --check-dirname-regex
beeinflusst werden.
Die Variable DEVSCRIPTS_CHECK_DIRNAME_LEVEL
kann dabei die
folgenden Werte annehmen:
0
Der Verzeichnisname wird nicht überprüft.
1
Überprüft den Verzeichnisnamen nur, wenn bei der Suche nach der
Datei debian/changelog
ein Wechsel des
Verzeichnisses notwendig ist.
2
Der Verzeichnisname wird in jedem Fall überprüft.
Optionen
-adebian-architecture, -tGNU-system-type
Beeinflussen den Typ der Architektur, für die das Paket gebaut wird.
--check-dirname-level N
Wie unter „Überprüfen von Verzeichnisnamen“ beschrieben.
--check-dirname-regex N
Wie unter „Überprüfen von Verzeichnisnamen“ beschrieben.
--no-conf
, --noconf
Es werden keine Konfigurationsdateien eingelesen. Dies muss als erste Option auf der Kommandozeile angegeben werden.
--help
, --version
Zeigt eine kurze Hilfe und die Versionsinformationen zu diesem Programm.
Die Konfigurationsvariablen DEVSCRIPTS_CHECK_DIRNAME_LEVEL
und DEVSCRIPTS_CHECK_DIRNAME_REGEX
können die
folgenden Werte annehmen:
0
Der Verzeichnisname wird nicht überprüft.
1
Überprüft den Verzeichnisnamen nur, wenn bei der Suche nach der
Datei debian/changelog
ein Wechsel des
Verzeichnisses notwendig ist.
2
Der Verzeichnisname wird in jedem Fall überprüft.
debsign
erzeugt eine digitale Signatur mittels
GPG/PGP für die Dateien .changes
und .dsc
eines Debian Paketes. Die Syntax dieses
Kommandos lautet
debsign [options] [changes-file|dsc-file]
debsign
verhält sich beim Signieren von Paketen wie dpkg-buildpackage
, es wird eine unsignierte .dsc
- oder .changes
-Datei verwendet und digital signiert. Die
Größe und die MD5-Checksumme der .dsc
-Datei werden dabei neu berechnet und in der
Datei .changes
durch die neuen Werte ersetzt.
Wird eine .changes
- oder .dsc
-Datei angegeben, so wird diese signiert. Ist
keine Datei angegeben, so wird die Datei debian/changelog
ausgewertet, und es wird versucht, den
Namen der .changes
-Datei im darüber liegenden Verzeichnis zu
ermitteln.
Dieses Programm wird eingesetzt, wenn ein Entwickler ein Paket auf einem System
erzeugt, auf dem es nicht auf sicherem Wege signiert werden kann. Um das Paket auf
einem sicheren System zu signieren, müssen lediglich die (kleinen) Dateien .dsc
und .changes
übertragen, signiert und wieder auf das
ursprüngliche System transferiert werden. Dieser Prozess kann weitgehend
automatisiert ablaufen, mit der Option -r
werden die Dateien auf das lokale (sichere) System
kopiert und nach dem Signieren wieder auf das ursprüngliche System transferiert.
Liegen die Dateien alle auf dem lokalen System, so können diese mittels debrsign
auf ein anderes System kopiert und dort
signiert werden.
Auch debsign
nutzt die Einträge in den
Konfigurationsdateien des Paketes devscripts
.
Optionen
-r [username@]remotehost
Die Dateien .changes
und .dsc
liegen auf dem angegebenen
entfernten System, es wird SSH verwendet, um die Dateien zu kopieren.
-pprogname
progname
kann den Wert pgp
oder gpg
annehmen, das entsprechnende Programm
wird verwendet, um die Dateien zu signieren. Wird nichts angegeben, so
wird gpg
verwendet, falls die Datei ~/.gnupg/secring.gpg
existiert. Ansonsten
wird pgp
eingesetzt.
-mmaintainer
Hiermit kann der Name des Paketbetreuers angegeben werden, mit dessen Namen das Paket signiert werden soll.
-emaintainer
Wie die Option -m
, wird jedoch vorrangig behandelt.
-kkeyid
Die KeyID des zu verwendenden Schlüssels, diese Option überschreibt
die Optionen -m
und -e
.
-spgp
, -sgpg
Setzt die Kommandozeilenoptionen des zum Signieren verwendeten Programmes passend für GnuPG oder PGP.
-S
Sucht nach einer .changes
-Datei für Quellcode-Pakete.
-adebian-architecture
, -tGNU-system-type
Diese Optionen verändern das Verhalten bei der Suche nach passenden .changes
-Dateien,
so dass das Verhalten
von dpkg-buildpackage
nachgebildet wird.
Genauere Informationen finden sich in der Manpage zu dpkg-architecture(1)
.
--no-conf
, --noconf
Verhindert das Einlesen von Konfigurationsdateien. Dies muss als erste Option auf der Kommandozeile angegeben werden.
--help
, -h
Zeigt eine kurze Hilfe an.
--version
Zeigt Informationen zur Programmversion und zum Copyright an.
Es werden die beiden Konfigurationsdateien /etc/devscripts.conf
und ~/.devscripts
in dieser Reihenfolge ausgewertet.
Kommandozeilenoptionen überschreiben Werte in den Konfigurationsdateien. Eventuell
gesetzte Umgebungsvariablen gleichen Namens werden ignoriert. Die folgenden
Variablen können verwendet werden:
Konfigurationsvariablen
DEBSIGN_PROGRAM
Wie die Option -p
.
DEBSIGN_SIGNLIKE
Kann den Wert gpg
oder pgp
annehmen und bewirkt ein Verhalten
wie die Optionen -sgpg
und -spgp
.
DEBSIGN_MAINT
Wie die Option -m
.
DEBSIGN_KEYID
Wie die Option -k
.
dpatch
dient zur Verwaltung von Patches
für Quellcode-Pakete. Damit bietet sich die Möglichkeit, Patches aus einem
anderen Release einzubinden oder auch die bestehenden Patches zu organisieren.
Dies Syntax von dpatch
lautet:
dpatch [options] command [command-arguments]
dpatch
ermöglicht es, Patches
oder Templates im Verzeichnis debian/patches/
ohne weitere
Organisation im Quellcode-Baum abzulegen. Um diese Patches während
der Übersetzung eines Paketes einzubinden, muss lediglich ein
kurzer Eintrag im Makefile des Paketes aufgenommen werden und im
Abschnitt patch
/unpatch
bzw. im Abschnitt clean
der Datei debian/rules
aufgenommen werden. Für
den individuellen Einsatz kann auch /usr/bin/dpatch
direkt aufgerufen
werden.
dpatch
kennt einige globale
Optionen, welche das gesamte Verhalten von dpatch
verändern. Diese sind:
Globale Optionen
--workdir (-d) DIRECTORY
Ohne Angabe dieser Option verwendet dpatch
das aktuelle Verzeichnis, um die
gewünschten Patches anzuwenden. Wird diese Option verwendet, so
wird das angegebene Verzeichnis als Arbeitsverzeichnis genutzt
und auch die Patches werden in diesem Verzeichnis gesucht.
--chdir
, -c
Bewirkt, dass ein alternatives Verzeichnis für die anzuwendenden
Patches verwendet wird. Nur sinnvoll im Zusammenhang mit --workdir
.
--strict
, -S
Aktiviert den „Strict“-Modus, eine etwas genauere
Auswertung von Problemen. Dies bewirkt, dass dpatch
auch bei Warnungen (warnings)
abbricht, statt diese einfach zu übergehen.
Dies ist beispielsweise der Fall, wenn ein Patch bereits auf den
Quellcode angewendet wurde.
--force
, -F
Forciert die Anwendung oder das Entfernen von Patches, auch wenn
diese normalerweise von dpatch
übersprungen werden,
beispielsweise weil ein Patch bereits angewendet wurde.
debc
zeigt den Inhalt und weitere Informationen zum aktuellsten
Debian Paket. debc
muss innerhalb des Quellcode-Verzeichnisses
aufgerufen werden, aus dem die Debian Pakete für ein Software-Projekt erzeugt werden. debc
ermittelt die neueste Version des Pakets und
zeigt den Inhalt und Informationen über die Abhängigkeiten an. Hier ein Beispiel:
fr@wasabi:~/Daten/debian-pakete/modellbahn/pythontrain/pythontrain-1.0$ ls ../ backup pythontrain_1.0-1_i386.deb pythontrain_1.0-3_i386.deb pythonTrain.gladep messages.pot pythontrain_1.0-1.tar.gz pythontrain_1.0-3.tar.gz pythonTrain.gladep.bak pixmaps pythontrain_1.0-2.dsc pythontrain_1.1-1.dsc pythonTrain-lang.c project1 pythontrain_1.0-2_i386.changes pythontrain_1.1-1_i386.changes pythonTrain.png pythontrain-1.0 pythontrain_1.0-2_i386.deb pythontrain_1.1-1_i386.deb pythonTrain.py pythontrain_1.0-1.diff.gz pythontrain_1.0-2.tar.gz pythontrain_1.1-1.tar.gz pythonTrain.xml pythontrain_1.0-1.dsc pythontrain_1.0-3.dsc pythonTrain.glade pythontrain_1.0-1_i386.changes pythontrain_1.0-3_i386.changes pythonTrain.glade.bak fr@wasabi:~/Daten/debian-pakete/modellbahn/pythontrain/pythontrain-1.0$ debc pythontrain_1.1-1_i386.deb -------------------------- neues Debian-Paket, Version 2.0. Größe 174430 Byte: control-Archiv= 1276 Byte. 504 Bytes, 10 Zeilen control 1181 Bytes, 16 Zeilen md5sums 561 Bytes, 15 Zeilen * postinst #!/bin/sh 160 Bytes, 5 Zeilen * postrm #!/bin/sh 413 Bytes, 14 Zeilen * prerm #!/bin/sh Package: pythontrain Version: 1.1-1 Section: misc Priority: optional Architecture: i386 Depends: python2.2, python-glade, python-gtk, python2.2-gtk2, python2.2-glade2, rcsh, glade-common-2, glade-2, gettext, localeconf, localepurge, python2.2-xmlbase, sysutils, python2.2-optik, python2.2-optik Installed-Size: 300 Maintainer: Frank Ronneburg <fr@debiananwenderhandbuch.de> Description: Python/GTK Anwendung zur Steuerung von Modellbahnen Benötigt wird weiterhin ein SRCP kompatibler Server lokal oder im Netzwerk. drwxr-xr-x root/root 0 2003-07-15 01:41:35 ./ drwxr-xr-x root/root 0 2003-07-15 01:41:29 ./usr/ drwxr-xr-x root/root 0 2003-07-15 01:41:24 ./usr/bin/ -rwxr-xr-x root/root 20738 2003-07-15 01:41:24 ./usr/bin/pythonTrain drwxr-xr-x root/root 0 2003-07-15 01:41:27 ./usr/share/ drwxr-xr-x root/root 0 2003-07-15 01:41:24 ./usr/share/doc/ drwxr-xr-x root/root 0 2003-07-15 01:41:33 ./usr/share/doc/pythontrain/ drwxr-xr-x root/root 0 2003-07-15 01:41:24 ./usr/share/doc/pythontrain/html/ -rw-r--r-- root/root 3181 2003-07-15 01:41:24 ./usr/share/doc/pythontrain/html/bensoftw.html -rw-r--r-- root/root 2300 2003-07-15 01:41:24 ./usr/share/doc/pythontrain/html/index.html -rw-r--r-- root/root 6094 2003-07-15 01:41:24 ./usr/share/doc/pythontrain/html/ptrain.html -rw-r--r-- root/root 3139 2003-07-15 01:41:24 ./usr/share/doc/pythontrain/html/pythontrain.html -rw-r--r-- root/root 19486 2003-07-15 01:41:24 ./usr/share/doc/pythontrain/html/pythonTrain-main.jpg -rw-r--r-- root/root 24026 2003-07-15 01:41:24 ./usr/share/doc/pythontrain/html/tamsprg.jpg -rw-r--r-- root/root 389 2003-06-27 11:47:02 ./usr/share/doc/pythontrain/copyright -rw-r--r-- root/root 2659 2003-07-15 01:41:24 ./usr/share/doc/pythontrain/pythontrain.txt.gz -rw-r--r-- root/root 54774 2003-07-15 01:41:24 ./usr/share/doc/pythontrain/pythontrain.pdf.gz -rw-r--r-- root/root 410 2003-07-15 01:36:36 ./usr/share/doc/pythontrain/changelog.Debian.gz drwxr-xr-x root/root 0 2003-07-15 01:41:24 ./usr/share/pythonTrain/ -rw-r--r-- root/root 4173 2003-07-15 01:41:24 ./usr/share/pythonTrain/pythonTrain.xml -rw-r--r-- root/root 56642 2003-07-15 01:41:24 ./usr/share/pythonTrain/pythonTrain.glade -rw-r--r-- root/root 61113 2003-07-15 01:41:24 ./usr/share/pythonTrain/pythonTrain.png drwxr-xr-x root/root 0 2003-07-15 01:41:27 ./usr/share/doc-base/ -rw-r--r-- root/root 555 2003-06-27 16:57:23 ./usr/share/doc-base/pythontrain drwxr-xr-x root/root 0 2003-07-15 01:41:29 ./usr/lib/ drwxr-xr-x root/root 0 2003-07-15 01:41:29 ./usr/lib/menu/ -rw-r--r-- root/root 150 2003-06-27 11:47:04 ./usr/lib/menu/pythontrain
Wie zu sehen ist, sind verschiedene (auch ältere) Versionen des Pakets vorhanden. Es wird das aktuellste Paket ermittelt, und es werden Informationen zu diesem Paket ausgegeben.
checkinstall
(asic-linux.com.mx/~izto/checkinstall/)
ist ein Werkzeug zum Übersetzen von Quellcode-Paketen, welche make
einsetzen, und zum Erzeugen von Debian, aber
auch RPM- oder SLP-Paketen aus diesen Quellcode-Archiven. Dies vereinfacht die
Verwaltung von Quellcode-Paketen, die auf unterschiedlichen Distributionen eingesetzt
werden sollen.
checkinstall
übersetzt den Quellcode eines Paketes, in
dem zunächst make install
(oder ein anderes, auf der Kommandozeile
von checkinstall
übergebenes Argument) aufgerufen wird.
Das Paket wird compiliert, es wird ein Binär-Paket erzeugt, und dieses wird
installiert. Das erzeugte Paket kann auf weiteren Systemen installiert werden.
checkinstall
ist als Debian Paket seit dem
„Sarge“-Release verfügbar und kann mittels apt-get install checkinstall
installiert werden. Auf
älteren Systemen ist das Paket als „Backport“ verfügbar. Hierzu ist die
Zeile
deb http://www.backports.org/debian/ woody checkinstall
der Datei /etc/apt/sources.list
hinzuzufügen.
fr@wasabi:~$ sudo apt-get install checkinstall Password: Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut... Fertig Die folgenden zusätzlichen Pakete werden installiert: installwatch Die folgenden NEUEN Pakete werden installiert: checkinstall installwatch 0 aktualisiert, 2 neu installiert, 0 zu entfernen und 0 nicht aktualisiert. Es müssen 46,9kB Archive geholt werden. Nach dem Auspacken werden 229kB Plattenplatz zusätzlich benutzt. Möchten Sie fortfahren? [J/n] Hole:1 ftp://ftp.de.debian.org sarge/main installwatch 0.6.3-1 [12,0kB] Hole:2 ftp://ftp.de.debian.org sarge/main checkinstall 1.5.3-3 [34,8kB] Es wurden 46,9kB in 2s geholt (18,7kB/s) Wähle vormals abgewähltes Paket installwatch. (Lese Datenbank ... 57608 Dateien und Verzeichnisse sind derzeit installiert.) Entpacke installwatch (aus .../installwatch_0.6.3-1_i386.deb) ... Wähle vormals abgewähltes Paket checkinstall. Entpacke checkinstall (aus .../checkinstall_1.5.3-3_all.deb) ... Richte installwatch ein (0.6.3-1) ... Richte checkinstall ein (1.5.3-3) ... fr@wasabi:~$
checkinstall
nutzt das Programm installwatch
, welches ebenfalls installiert wird.
Im nächsten Schritt sind, falls nicht schon geschehen, die Archive mit den
Quellcode-Dateien in ein eigenes Verzeichnis zu entpacken. Wechseln Sie in dieses
Verzeichnis, nun sollte zunächst geprüft werden, ob der Quellcode sich problemlos
übersetzen lässt. Dies geschieht mittels ./configure --sysconfdir=/etc
(falls ein configure
-Skript vorhanden ist) und einem
anschließenden Aufruf von make
. Läuft alles problemlos durch, so kann checkinstall
zum Einsatz kommen.
Üblicherweise würde nun der Aufruf von make install
ein Quellcode-Paket installieren. Dies
hätte jedoch zur Folge, dass das Paketmanagement auf dem System keinerlei Kenntnis
von den installierten Dateien erhalten würde. Deshalb wird nun das Kommando checkinstall -D make install
aufgerufen.
Am Beispiel des Quellcodes zu wget
soll der Einsatz von checkinstall
exemplarisch gezeigt werden.
fr@wasabi:/tmp/wget-1.9.1$ ./configure --sysconfdir=/etc --bindir=/usr/bin configuring for GNU Wget 1.9.1 checking build system type... i686-pc-linux-gnu checking host system type... i686-pc-linux-gnu checking whether make sets $(MAKE)... yes checking for a BSD-compatible install... /usr/bin/install -c checking for gcc... gcc ... checking for perl5... no checking for perl... /usr/bin/perl checking for pod2man... /usr/bin/pod2man configure: creating ./ config.status config.status: creating Makefile config.status: creating src/Makefile config.status: creating doc/Makefile config.status: creating util/Makefile config.status: creating po/Makefile.in config.status: creating windows/Makefile config.status: creating src/config.h config.status: src/config.h is unchanged config.status: executing default commands generating po/POTFILES from ./po/POTFILES.in creating po/Makefile fr@wasabi:/tmp/wget-1.9.1$
Nun liegt ein Makefile
vor, in dem bereits die Anpassungen der Verzeichnisse für die
Debian Distribution vorgenommen wurden. Der Aufruf von make
übersetzt den Quellcode in ein ausführbares
Programm.
fr@wasabi:/tmp/wget-1.9.1$ make cd src && make CC='gcc' CPPFLAGS=''DEFS='-DHAVE_CONFIG_H -DSYSTEM_WGETRC=\"/etc/wgetrc\" -DLOCALEDIR=\"/usr/local/share/locale\"' CFLAGS='-O2 -Wall -Wno-implicit' LDFLAGS='' LIBS='' prefix='/usr/local' exec_prefix='/usr/local' bindir='/usr/bin' infodir='/usr/local/info' mandir='/usr/local/man' manext='1' make[1]: Entering directory `/tmp/wget-1.9.1/src' gcc -I. -I. -I/opt/include -DHAVE_CONFIG_H -DSYSTEM_WGETRC=\"/etc/wgetrc\" -DLOCALEDIR=\"/usr/local/share/locale\" -O2 -Wall -Wno-implicit -c cmpt.c ... make[1]: Leaving directory `/tmp/wget-1.9.1/util' cd windows && make CC='gcc' CPPFLAGS='' DEFS='-DHAVE_CONFIG_H -DSYSTEM_WGETRC=\"/etc/rc\" -DLOCALEDIR=\"/usr/local/share/locale\"' CFLAGS='-O2 -Wall -Wno-implicit' LIBS='' prefix='/usr/local' exec_prefix='/usr/local' bindir='/usr/bin' infodir='/usr/local/info' mandir='/usr/local/man' manext='1' make[1]: Entering directory `/tmp/wget-1.9.1/windows' make[1]: Für das Ziel »all« ist nichts zu tun.make[1]: Leaving directory `/tmp/wget-1.9.1/windows' fr@wasabi:/tmp/wget-1.9.1$
Der Aufruf von make
muss ohne Fehlermeldungen durchlaufen, ansonsten
ist eine Fehlersuche angesagt.
Abschließend kommt checkinstall
zum Einsatz
wasabi:/tmp/wget-1.9.1$ checkinstall -D make install checkinstall 1.5.3, Copyright 2001 Felipe Eduardo Sanchez Diaz Duran This software is released under the GNU GPL. Installing with "make install"... ========================= Installation results =========================== Copying documentation directory... cd src && make CC='gcc' CPPFLAGS='' DEFS='-DHAVE_CONFIG_H -DSYSTEM_WGETRC=\"/etc/wgetrc -DLOCALEDIR=\"/usr/local/share/locale\"' CFLAGS='-O2 -Wall -Wno-implicit' LDFLAGS='' S='' prefix='/usr/local' exec_prefix='/usr/local' bindir='/usr/bin' infodir='/usr/local/nfo' mandir='/usr/local/man' manext='1' install.bin make[1]: Entering directory `/tmp/wget-1.9.1/src' ../mkinstalldirs /usr/bin /usr/bin/install -c wget /usr/bin/wget ... /usr/bin/install -c -m 644 wget.1 /usr/local/man/man1/wget.1 make[1]: Leaving directory `/tmp/wget-1.9.1/doc' ======================== Installation succesful ========================== Copying files to the temporary directory...OK Striping ELF binaries and libraries...OK Compressing man pages...OK Building file list...OK This package will be built according to these values: 0 - Maintainer: [ root@wasabi ] 1 - Summary: [ ein erstes Paket ] 2 - Name: [ wget-1.9.1 ] 3 - Version: [ 1.9.1 ] 4 - Release: [ 1 ] 5 - License: [ GPL ] 6 - Group: [ checkinstall ] 7 - Architecture: [ i386 ] 8 - Source location: [ wget-1.9.1 ] 9 - Alternate source location: [ ] Enter a number to change any of them or press ENTER to continue:
Nach einiger Zeit können Informationen zu dem Paket angegeben werden. checkinstall
versucht, Werte wie den Paketnamen und
die Versionsnummer aus dem Verzeichnisnamen zu ermitteln. Die vorgeschlagenen
Angaben können hier noch verändert werden.
***************************************** **** Debian package creation selected *** ***************************************** Building Debian package...OK Installing Debian package...OK Erasing temporary files...OK Writing backup package...OK Deleting temp dir...OK ********************************************************************** Done. The new package has been installed and saved to /tmp/wget-1.9.1/wget-1.9.1_1.9.1-1_i386.deb You can remove it from your system anytime using: dpkg -r wget-1.9.1 **********************************************************************
Abschließend wird das erzeugte Paket installiert.
Lintian (Homepage: lintian.debian.org/) untersucht Debian Pakete auf Fehler, die nicht der Debian Policy für Pakete (www.debian.org/doc/debian-policy/) entsprechen. Darüber hinaus werden die Pakete auch auf einige andere, häufig vorkommende Fehler hin geprüft.
Lintian kann Debian Binär- und Quellcode sowie „udeb“-Pakete (diese werden vom Debian Installer genutzt) untersuchen. Es wird eine Datenbank mit den Ergebnissen gepflegt; diese Datenbank wird „labratory“ genannt. Mit dieser Datenbank können mehrere Überprüfungen eines Pakets beschleunigt werden, da sehr aufwändige Operationen aus der Datenbank gelesen werden können.
lintian
wird wie folgt aufgerufen:
lintian [action] [options] [packages] ...
Dabei kann das zu prüfende Paket auf drei verschiedene Arten angegeben werden:
mit dem Dateinamen (paketname.deb
), als Paketname, oder es kann die .changes
-Datei eines Pakets angegeben werden. Wird
der Paketname verwendet, so muss die Variable LINTIAN_DIST
in der Konfigurationsdatei auf einen
sinnvollen Wert gesetzt werden. lintian
durchsucht dann den in dieser Variablen
festgelegten Pfad nach Binär- oder Quellcode-Paketen, auf die der angegebene Name
passt (die Optionen --binary
, --udeb
, --source
können gesetzt werden, falls nur Pakete
eines bestimmten Typs gesucht werden sollen).
Wird eine .changes
-Datei angegeben, so werden alle in der Datei
aufgeführten Dateien geprüft. Dies ist vor dem Upload von Dateien auf einen Server
notwendig.
lintian
kennt einige Optionen, von denen jeweils nur
eine je Programmaufruf auf der Kommandozeile angegeben werden darf. Diese werden als
Aktionen bezeichnet.
Aktionen
-S
, --setup-lab
Initialisiert die Datenbank.
-R
, --remove-lab
Löscht das Verzeichnis mit der Datenbank.
-c
, --check
Führt alle bekannten Überprüfungen auf dem angegebenen Paket durch. Diese Aktion wird auch durchgeführt, wenn keine Aktion angegeben wird.
-C chk1,chk2,...
, --check-part chk1,chk2,...
Es werden nur die angeführten Überprüfungen durchgeführt. Hierbei kann der Name des Skriptes oder die Bezeichnung angegeben werden.
-X chk1,chk2,...
, --dont-check-part chk1,chk2,...
Führt alle Überprüfungen mit Ausnahme der aufgeführten durch; hierbei kann der Name des Skriptes oder die Bezeichnung angegeben werden.
-u
, --unpack
Entpackt die gewünschten Pakete bis zum angegebenen Level. Der voreingestellte Level ist 1.
-r
, --remove
Säubert das lintian
-Verzeichnis für die angegebenen
Verzeichnisse bis zum aktuellen Unpack-Level (siehe -u
oder --unpack)
. Der voreingestellte Level ist
hier 0.
Optionen
-h
, --help
Zeigt eine Hilfe zu lintian
an.
-v
, --verbose
Gibt mehr Informationen aus, die zur Fehlersuche dienen können.
-V
, --version
Zeigt die Versionsnummer des Programms an.
-d
, --debug
Zeigt Fehlermeldungen an, funktioniert nur zusammen mit -v
.
-i
, --info
Gibt detaillierte Informationen zu den Policy-Verletzungen aus.
-I
, --display--info
Gibt auch die Informations-Tags (I:
) mit aus, die normalerweise
unterdrückt werden.
-l n
, --unpack-level n
Setzt den Unpack-Level auf den Wert n
.
-o
, --no-override
Benutzt keine Override-Dateien.
--show-overrides
Zeigt Einträge an, die mit den Informationen aus einer Override-Datei überschrieben wurden.
-U info1,info2,...
, --unpack-info info1,info2,...
Sammelt die angegebenen Informationen, auch wenn diese von den Tests nicht benötigt werden.
-m
, --md5sums
Überprüft die MD5-Checksummen aller Dateien, wenn eine .changes
-Datei angegeben wird.
Normalerweise werden nur .dsc
-Dateien hinsichtlich der Checksumme
überprüft.
--allow-root
Zeigt keine Warnung an, falls lintian
mit Administratorrechten
gestartet wird.
Konfigurationsoptionen
--cfg configfile
Liest die angegebene Konfigurationsdatei statt der
Standard-Konfigurationsdateien. Diese Option überschreibt die
Umgebungsvariable LINTIAN_CFG
.
--lab labdir
Setzt ein neues Verzeichnis für das Lintian-„Labratory“.
In diesem Verzeichnis werden die Informationen über die überprüften
Pakete gehalten. Dies überschreibt die Umgebungsvariable LINTIAN_LAB
und den gleichnamigen Eintrag
in der Konfigurationsdatei.
--archivedir archivedir
Pfad zum Verzeichnis mit den zu untersuchenden Dateien. Diese Option
kann genutzt werden, um einen kompletten Verzeichnisbaum mit Paketen
statt eines einzelnen Pakets von Lintian überprüfen zu lassen. Dies
überschreibt die Umgebungsvariable LINTIAN_ARCHIVEDIR
und den gleichnamigen
Eintrag in der Konfigurationsdatei.
--section release
Wird die Option --distdir
genutzt, so kann mit dieser
Option die Suche auf Pakete aus einer bestimmten Sektion (beispielsweise main
) begrenzt werden. Dies überschreibt
die Umgebungsvariable LINTIAN_SECTION
und den gleichnamigen
Eintrag in der Konfigurationsdatei.
--arch arch
Wird die Option --distdir
genutzt, so kann mit dieser
Option die Suche auf Pakete für eine bestimmte Architektur
(beispielsweise alpha
) begrenzt werden. Dies überschreibt
die Umgebungsvariable LINTIAN_ARCH
und den gleichnamigen
Eintrag in der Konfigurationsdatei.
--root rootdir
Sucht nach Lintian-Skripten (Test-Skripten und Analyse-Skripten) im
angegebenen Verzeichnis statt in /usr/share/lintian/
. Dies überschreibt
die Umgebungsvariable LINTIAN_ROOT
.
Optionen zur Paketauswahl
-a
, --all
Prüft alle Pakete der Distribution. Hierzu muss die Variable LINTIAN_DIST
in der Konfigurationsdatei
gesetzt sein.
-b
, --binary
Bei den im Folgenden auf der Kommandozeile gelisteten Paketen handelt es sich um Binär-Pakete.
-s
, --source
Bei den im Folgenden auf der Kommandozeile gelisteten Paketen handelt es sich um Quellcode-Pakete.
--udeb
Bei den im Folgenden auf der Kommandozeile gelisteten Paketen handelt es sich um udeb-Pakete.
-p
, --packages-file file
Analysiert alle in der Datei angegebenen Pakete. Jedes Paket muss hierzu in einer einzelnen Zeile in der Datei stehen, und die Zeile muss das folgende Format haben:
type package version file
Hierbei ist type
das Zeichen b
(Binär-Paket) oder s
(Source/Quellcode-Paket). package
ist der Paketname, version
ist die Versionsnummer des
Pakets, und file
ist der absolute Pfad und der
Dateiname des Pakets.
Tests
binaries (bin)
Sucht nach Fehlern in Binärdateien und Objekt-Dateien.
changelog-file (chg)
Prüft changelog-Dateien in einem Binär-Paket.
conffiles (cnf)
Prüft, ob die control
-Datei eines Binär-Pakets
fehlerfrei ist.
control-file (dctl)
Prüft die Datei debian/control
in einem Quellcode-Paket.
copyright-file (cpy)
Prüft, ob eine Copyright-Datei in einem Binärpaket vorhanden ist.
cruft (deb)
Sucht nach unerwünschten Dateien in einem Paket. Solche Dateien sind beispielsweise Dateien von einer Versionskontrolle oder temporäre Dateien aus einem Übersetzungsvorgang.
deb-format (dfmt)
Prüft, ob das Paket mit einer fehlerhaften Version von tar
erzeugt wurde. Dies kann zu Problemen
bei der Installation mit dpkg
führen.
debconf (dc)
Sucht in Paketen nach Fehlern, die oft bei der Verwendung von debconf
gemacht werden.
debdiff (dif)
Sucht nach Dateien mit der Endung .orig
oder .rej
in den .diff
-Dateien.
debian-readme (drm)
Prüft, ob die Datei README.Debian
ein unverändertes Template
ist, das von debmake
erzeugt wurde.
debhelper (dh)
Sucht nach üblichen Fehlern in den Quellcode-Paketen mittels debhelper
.
description (des)
Prüft, ob das Feld Description
in der Beschreibung eines
Binär-Pakets den Richtlinien des Policy-Manuals entspricht.
etcfiles (etc)
Prüft, ob alle Konfiurationsdateien im Verzeichnis /etc/
eines Pakets als
Konfigurationsdateien ausgewiesen sind.
fields (fld)
Prüft die Kontrollfelder eines Binär- oder Quellcodepaketes.
files (fil)
Prüft, ob ein Binärpaket den Paketrichtlinien hinsichtlich Dateitypen, Zugriffsrechten und Eigentumsrechten entspricht.
huge-usr-share (hus)
Prüft, ob ein Architektur-abhängiges Paket viel Platz im Verzeichnis /usr/share/
beansprucht. Dies führt zu
einer (meistens) unnötigen Belastung der Spiegel-Server.
infofiles (info)
Prüft, ob die Info-Dateien eines Pakets der Policy entsprechen.
init.d (ini)
Prüft, ob die Init-Dateien (in /etc/init.d/
) eines Pakets der Policy
entsprechen.
manpages (man)
Prüft, ob die Manpages eines Pakets der Policy entsprechen.
md5sums (md5)
Prüft, ob die Checksumme eines Pakets existiert und gültig ist.
menus (men)
Prüft, ob in einem Binär-Paket die Menüdateien der Policy entsprechen.
menu-format (mnf)
Prüft, ob die Syntax der Menüdateien korrekt ist.
perl (prl)
Prüft die enthaltenen Perl-Skripte auf verwendete Perl-Module und prüft, ob die notwendigen Abhängigkeiten definiert sind.
po-debconf (pd)
scripts (scr)
Prüft bei Shell-Skripten die Zeile #!
.
shared-libs (shl)
Prüft in einem Binär-Paket die Shared-Libraries in Hinblick auf ihre Konformität zur Debian Policy.
spelling (spl)
Prüft die Datei copyright
und das Feld Description
auf häufig vorkommende
Schreibfehler.
standards-version (std)
Prüft in einem Quellcode-Paket, ob die Datei debian/control
ein gültiges Feld für die
Debian Standards-Version enthält.
Collection
changelog-file
Kopiert die Datei changelog
eines Paketes in das
Lintian-Verzeichnis.
copyright-file
Kopiert die Datei copyright
eines Paketes in das
Lintian-Verzeichnis.
debfiles
Sammelt alle Dateien, die zu dem Quellcode-Paket eines Debian Paketes gehören.
debian-readme
Kopiert die Datei README.Debian
eines Paketes in das
Lintian-Verzeichnis.
diffstat
Speichert die Ausgabe des Programmes diffstat
für die an einem Quellcode-Paket
vorgenommen Änderungen in Bezug auf die Debian Distribution.
doc-base-files
Kopiert die Dateien aus dem Verzeichnis /usr/share/doc-base
in das Lintian-
Verzeichnis, unterhalb von doc-base
.
file-info
Erzeugt und speichert die Informationen des Kommandos file
für jede Datei in einem Binär-Paket.
init.d
Kopiert die Skripte aus dem Verzeichnis /etc/init.d
in das Lintian-Verzeichnis,
unterhalb von init.d
.
md5sums
Erzeugt MD5-Checksummen für alle Dateien in einem Binär-Paket.
menu-files
Kopiert die Dateien aus dem Verzeichnis usr/share/doc/menu
eines Binär-Paketes in
das Menüverzeichnis des Lintian-Verzeichnisses.
objdump-info
Speichert Informationen des Kommandos objdump
für jede Datei in einem
Binär-Paket.
override-file
Kopiert die Override-Datei eines Paketes in das Lintian-Verzeichnis.
scripts
Speichert Informationen über die verwendeten Skripte in einem Binär-Paket.
source-control-file
Speichert Informationen über das Binär-Paket aus den Informationen in
der Datei debian/control
.
Der Einsatz von Lintian ist, trotz der vielen möglichen Optionen, recht einfach. Hier ein kleines Beispiel für ein sehr nachlässig gebautes Paket des Autors:
fr@wasabi:~/Daten/debian-pakete/modellbahn/pythontrain$ lintian pythontrain_1.1-1_i386.deb E: pythontrain: binary-without-manpage pythonTrain E: pythontrain: python-script-but-no-python-dep ./usr/bin/pythonTrain W: pythontrain: unquoted-string-in-menu-item /usr/lib/menu/pythontrain needs:2 W: pythontrain: unquoted-string-in-menu-item /usr/lib/menu/pythontrain section:2 E: pythontrain: menu-icon-not-in-xpm-format /usr/share/pixmaps/gnome-diskfree.png E: pythontrain: debian-changelog-file-uses-obsolete-national-encoding at line 7 E: pythontrain: package-has-a-duplicate-relation depends: python2.2-optik, python2.2-optik
Bei der Ausgabe unterscheidet Lintian zwischen Fehlern (E:
Error) und Warnungen (W:
Warning). Diese erscheinen in der ersten Spalte.
Danach wird der Paketname angezeigt. Dies ist notwendig, wenn mehrere Pakete in
einem Durchlauf geprüft werden. Danach folgt eine Infomation zu dem gefundenen
Problem mit einer Angabe, welche Datei, Zeile oder welche Abhängigkeit betroffen
ist.
Lintian sucht an den folgenden Orten nach Konfigurationsdateien:
Im über die Option --cfg
angegebenen Verzeichnis.
Im in der Variablen $LINTIAN_CFG
angegebenen Pfad.
In $LINTIAN_ROOT/lintianrc
.
In $HOME/.lintianrc
.
In /etc/lintianrc
.
Lintian nutzt die folgenden Verzeichnisse:
/usr/share/lintian/checks
, hier liegen
verschiedene Skripte, die die Pakete überprüfen.
/usr/share/lintian/collection
, enthält
Skripte, die Informationen über die zu prüfenden Pakete sammeln und für die
spätere Verwendung mit den vorgenannten Skripten zur Überprüfung
zwischenspeichern.
/usr/share/lintian/info
, enthält Informationen
aus externen Quellen, die von Lintian verwendet werden.
/usr/share/lintian/lib
, Hilfsskripte die von
Lintian-Skripten verwendet werden.
/usr/share/lintian/unpack
, Skripte zur
Verwaltung der Prüfumgebung.
Das Verzeichnis /usr/share/lintian
kann über die Umgebungsvariabe LINTIAN_ROOT
überschrieben werden, alternativ kann
auch die Option --root
verwendet werden.
Je nachdem, ob die Ausführung von Lintian erfolgreich war, wird ein entsprechender Exit-Status zurückgegeben, mögliche Werte hierfür sind:
0
- Es wurden keine Verletzungen der Policy
gefunden. Warnungen werden ausgegeben, aber nicht als Problem bewertet.
1
- Es wurden Verletzungen der Policy
festgestellt.
2
- Lintian-Laufzeitfehler, es wird zusätzlich
eine Nachricht auf der Standardausgabe angezeigt.
© 1999 - 2024 | Das Debian GNU/Linux Anwenderhandbuch von Frank Ronneburg steht unter einer Creative Commons Namensnennung-Nicht Kommerziell-Keine Bearbeitung 3.0 Deutschland Lizenz.