Unix-Validierungstools - Konfiguration und Installation
Die Installationsprogramme sind handgestrickt. Ich weiss, das ist böse ;-) Deshalb steht auf meiner ToDo-Liste auch ganz oben die Aufgabe, diesen Umstand zu ändern und eine für Perl-Module übliche Installationsprozedur aufzubauen. Ich wollte aber erstmal etwas Funktionierendes anbieten können, ohne Euch eine Liste mit cp-, chmod-, sed- oder anderen Shell-Befehlen zumuten zu müssen. Deshalb habe ich die erforderlichen Befehle, ergänzt um ein paar Prüfungen für notwendige Pfade, Perl-Module und sonstiges Geraffel in ein Perl-Script und ein Makefile gepackt. Ich hoffe, Ihr könnt erstmal damit leben, ich studiere in der Zwischenzeit die Dokus für ExtUtils::MakeMaker.
Im Folgenden ein Schnelldurchlauf zur Konfiguration und Installation der Tools:
- Schritt 1: Entpacken des Archivs
Extrahiere das Archiv in einem beliebigen Ordner, die Paketbestandteile werden in das Unterverzeichnis SysVTools entpackt. - Schritt 2: Konfigurieren
Starte im Verzeichnis SysVTools das Programm configure.pl. Es prüft einige wichtige Systemvoraussetzungen und baut das Makefile für die Installation auf. Zu den möglichen Optionen siehe Kapitel Konfiguration. - Schritt 3: Installieren
Starte make im Verzeichnis SysVTools. Damit wird das Makefile ausgeführt, die Programme und Module sowie die Message-Kataloge und Manual-Pages werden in die konfigurierten Verzeichnisse kopiert und für alle zur Verfgung stehenden Tools wird im Programmverzeichnis ein Link zu sysvtools.pl erzeugt.
Der Ablauf sieht beispielhaft so aus:
jan@jack:~/sysvtools/install> tar xzf SysVTools.tgz jan@jack:~/sysvtools/install> cd SysVTools jan@jack:~/sysvtools/install/SysVTools> perl ./configure.pl PREFIX=/home/jan/sysvtools perl executable ... /usr/bin/perl perl version ... 5.8.3 check for module POSIX::strptime check for module Locale::gettext library path .. /home/jan/sysvtools/lib binary path .. /home/jan/sysvtools/bin manual path .. /home/jan/sysvtools/man locale path .. /home/jan/sysvtools/locale creating Makefile .. done call 'make install_lib' to only install the modules and documentation call 'make all' or 'make' to install the modules, documentation and the binaries jan@jack:~/sysvtools/install/SysVTools> make ...
Nach dem Auspacken des Archivs findet Ihr folgende Dateien im Verzeichnis SysVTools vor:
SysVTools
|-- Changes # Protokoll der Aenderungen
|-- INSTALL # Installationsanweisung
|-- LICENSE # die GNU-GPL
|-- MANIFEST # Liste der im Package enthaltenen Dateien
|-- Makefile.in # Template fuer das Makefile
|-- Todo # Liste der offenen Punkte
|-- bin
| `-- sysvtools.pl # das Programm fuer die Unix-Tools
|-- configure.pl # das Konfigurationsprogramm
|-- install
|-- lib
| `-- JT
| `-- CLI
| |-- Pager.pm # das Pager-Modul
| `-- SysVTools.pm # das SysVTools-Modul
|-- locale
| |-- de
| | |-- LC_MESSAGES
| | | `-- SysVTools.mo # der deutsche Message-Katalog
| | `-- SysVTools.po # die Quelldatei des deutschen Katalogs
| `-- en
| |-- LC_MESSAGES
| | `-- SysVTools.mo # der englische Message-Katalog
| `-- SysVTools.po # die Quelldatei des englischen Katalogs
`-- man
|-- man1
| `-- sysvtools.1.gz # die Manual-Page des sysvtools-Programms
`-- man3
|-- Pager.3pm.gz # die Manual-Page des Pager-Moduls
`-- SysVTools.3pm.gz # die Manual-Page des SysVTools-Moduls
Die Konfiguration des Pakets erfolgt durch das Perl-Script configure.pl. Es muss wie folgt gestartet werden: perl ./configure.pl [Optionen]. Während der Konfiguration werden einige Systemvoraussetzungen geprüft, Pfade bestimmt und das Makefile aus dem Template Makefile.in aufgebaut. Ohne Optionen aufgerufen, versucht das Script alle zur Installation nötigen Informationen aus dem System zu ermitteln. Mit folgenden Argumenten kann das übersteuert werden:
- PREFIX=Pfad
Alle Komponenten des Pakets werden unterhalb des hier angegebenen Verzeichnisses installiert. Wenn das Verzeichnis nicht existiert, dann wird es angelegt. Die Bemerkungen zum Zugriff auf Programm, Module, Dokumentationen und Message-Kataloge für die unten genannten Optionen gelten auch hier (und zwar alle auf einmal ;-) - LIBPATH=Pfad
Die Module JT::CLI::SysVTools.pm und JT::CLI::Pager.pm werden in diesem Pfad installiert. Im Programm sysvtools.pl wird der hier angegebene Pfad als use lib-Pragma eingefügt, in eigenen Perl-Programmen muss dies natürlich auch geschehen, wenn der angegebene Pfad nicht in den vom Perl-Loader defaultmäßig durchsuchten Verzeichnissen liegt. Um Perldoc nutzen zu können, könnt Ihr wie folgt verfahren: PERLLIB=/home/jan/sysvtools/lib perldoc JT::CLI::SysVTools. - BINPATH=Pfad
Das Programm sysvtools.pl wird in diesem Pfad installiert, hier werden auch die Links zu den Tools angelegt. Wenn dieser Pfad nicht in der Umgebungsvariablen $PATH existiert, dann müssen die Tools mit ihrem Pfad aufgerufen werden. - MANPATH=Pfad
Installiert die Manual-Pages unterhalb dieses Verzeichnis. Wenn dieser Pfad nicht in der Umgebungsvariablen $MANPATH auftaucht, dann müsst Ihr die Manuals so aufrufen:
man -M <MANPATH> sysvtools für das Programm
man -M <MANPATH> JT::CLI::SysVTools für das Modul
man -M <MANPATH> JT::CLI::Pager für den Pager - MOPATH=Pfad
Installiert die Message-Kataloge unterhalb des angegebenen Verzeichnis. Dieser Pfad wird im Modul und Programm während der Installation eingetragen. Wenn Ihr die Kataloge in eigenen Perl-Scripts nutzen wollt, dann müsst Ihr den Pfad im bindtextdomain-Aufruf mitgeben. Holt Euch den betreffenden Code-Abschnitt am besten aus sysvtools.pl.
Das Konfigurationsprogramm führt im Einzelnen folgende Schritte aus:
- Prüfen der Perl-Installation
Der Pfad zum Perl-Programm wird ermittelt, er wird für die "Shebang"-Zeile in sysvtools.pl benötigt. Außerdem wird die installierte Perl-Version überprüft, eine 5er sollte es schon sein. - benötigte Perl-Module testen
Zusätzlich zu den in den Standard-Installationen verfügbaren Modulen werden POSIX::strptime und Locale::gettext benötigt. Wenn eines dieser Module nicht installiert ist, bricht das Script mit einer Fehlermeldung ab. In diesem Fall solltet Ihr Euch flugs zum CPAN begeben und diese Module installieren. Dann kann es weitergehen. - Prüfen der Pfade
Es wird geprüft, ob für alle Komponenten gültige Pfade aus den übergebenen Parametern oder dem System ermittelt werden können. Wenn die Ermittlung eines Pfades fehlschlägt, bricht das Programm mit einem weiterführenden Hinweis ab. - Generieren des Makefiles
Aus dem Template Makefile.in wird das Makefile aufgebaut. Dabei werden die Installationspfade eingetragen.
Nach dem erfolgreichen Abschluss der Konfiguration steht die Installation an. Die geht ganz einfach: make [Target]. Der Aufruf ohne Target installiert alle Komponenten des Pakets. Folgende Targets sind möglich:
- all
Identisch zum Aufruf ohne Target; es werden alle Komponenten des Pakets installiert - install_lib
Es werden nur die Perl-Module, die zugehörigen Manual-Pages und Message-Kataloge installiert. Dieses Target ist dann nützlich, wenn Ihr die im Paket enthaltenen Module in eigenen Perl-Programmen nutzen wollt, aber die Unix-Programme nicht benötigt. - install_bin
Dieses Target installiert nur die Programme und dafür relevanten Manuals. Das Target ist dafür vorgesehen, die Programme zusätzlich zu vorher separat installierten Modulen in das System zu bringen. Es kann auch ohne vorhergehendes install_lib-Target aufgerufen werden - aber tut das nicht! Ihr habt dann einen Haufen nicht funktionierender Programme auf der Platte ;-)
Folgende Dateien werden bei der Installation im System eingerichtet:
[PREFIX/bin] oder [BINPATH]
|-- ckcont -> sysvtools.pl
|-- ckdate -> sysvtools.pl
|-- ckgid -> sysvtools.pl
|-- ckint -> sysvtools.pl
|-- ckitem -> sysvtools.pl
|-- ckkeywd -> sysvtools.pl
|-- ckpath -> sysvtools.pl
|-- ckrange -> sysvtools.pl
|-- ckstr -> sysvtools.pl
|-- cktime -> sysvtools.pl
|-- ckuid -> sysvtools.pl
|-- ckyorn -> sysvtools.pl
|-- errange -> sysvtools.pl
|-- errdate -> sysvtools.pl
|-- errgid -> sysvtools.pl
|-- errint -> sysvtools.pl
|-- erritem -> sysvtools.pl
|-- errpath -> sysvtools.pl
|-- errstr -> sysvtools.pl
|-- errtime -> sysvtools.pl
|-- erruid -> sysvtools.pl
|-- erryorn -> sysvtools.pl
|-- helpdate -> sysvtools.pl
|-- helpgid -> sysvtools.pl
|-- helpint -> sysvtools.pl
|-- helpitem -> sysvtools.pl
|-- helppath -> sysvtools.pl
|-- helprange -> sysvtools.pl
|-- helpstr -> sysvtools.pl
|-- helptime -> sysvtools.pl
|-- helpuid -> sysvtools.pl
|-- helpyorn -> sysvtools.pl
|-- sysvtools.pl
|-- valdate -> sysvtools.pl
|-- valgid -> sysvtools.pl
|-- valint -> sysvtools.pl
|-- valpath -> sysvtools.pl
|-- valrange -> sysvtools.pl
|-- valstr -> sysvtools.pl
|-- valtime -> sysvtools.pl
|-- valuid -> sysvtools.pl
`-- valyorn -> sysvtools.pl
[PREFIX/lib] oder [LIBPATH]
`-- JT
`-- CLI
|-- Pager.pm
`-- SysVTools.pm
[PREFIX/locale] oder [MOPATH]
|-- de
| `-- LC_MESSAGES
| `-- SysVTools.mo
`-- en
`-- LC_MESSAGES
`-- SysVTools.mo
[PREFIX/man] oder [MANPATH]
|-- man1
| `-- sysvtools.1.gz
`-- man3
|-- JT::CLI::Pager.3pm.gz
`-- JT::CLI::SysVTools.3pm.gz



