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 Prgrammes 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, http://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, -aFü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, -pLä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, --noconfBenutzt 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, -hZeigt 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@openoffice.de> uid Frank Ronneburg <fr@leenuks.de> uid Frank Ronneburg <fr@belug.org> uid Frank Ronneburg <fr@peace-love-and-linux.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, --allZeigt alle Pakete an, die zur Ausführung des Kommandos benötigt werden.
-b, --build-dependsZeigt 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-depsZeigt nur die minimal benötigten Pakete an.
-C, --C-localeFührt das Programm mit der angegebenen Sprachumgebung aus.
--no-C-locale
Verändert die Sprachumgebung bei der Ausführung des Programms nicht.
-l, --list-filesZeigt 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=DATEISchreibt 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, --noconfVerhindert das Einlesen von Konfigurationsdateien und muss als erste Option auf der Kommandozeile angegeben werden.
-h, --helpGibt einige Informationen zur Nutzung des Programms aus.
-v, --versionGibt 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, --bugcountStatt 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-versionZeigt 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-maintDifferenziert 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, --urgencyErzeugt 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, --noconfIgnoriert 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, -sgpgSetzt 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, --noconfVerhindert das Einlesen von Konfigurationsdateien. Dies muss als erste Option auf der Kommandozeile angegeben werden.
--help, -hZeigt 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@openoffice.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 (http://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.
./configure
./configure kennt die Option --help, mit der sich alle weiteren
Konfigurationsoptionen anzeigen lassen. Sinnvoll ist häufig auch die Option --bindir=/usr/bin, da viele Programme sonst im
Verzeichnis /usr/local/ abgelegt werden.
Ü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: http://lintian.debian.org/) untersucht Debian Pakete auf Fehler, die nicht der Debian Policy für Pakete (http://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-labInitialisiert die Datenbank.
-R, --remove-labLöscht das Verzeichnis mit der Datenbank.
-c, --checkFü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, --unpackEntpackt 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, --verboseGibt mehr Informationen aus, die zur Fehlersuche dienen können.
-V, --versionZeigt die Versionsnummer des Programms an.
-d, --debug Zeigt Fehlermeldungen an, funktioniert nur zusammen mit -v.
-i, --infoGibt 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-overrideBenutzt 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, --binaryBei den im Folgenden auf der Kommandozeile gelisteten Paketen handelt es sich um Binär-Pakete.
-s, --sourceBei 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 fileAnalysiert 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-2008 Frank Ronneburg - Dieser Inhalt ist unter einem Creative Commons Namensnennung - Nicht-kommerziell - Keine Bearbeitung Lizenzvertrag lizenziert (creativecommons.org/licenses/by-nc-nd/2.0/de/legalcode).