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:

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:

Das Konfigurationsprogramm führt im Einzelnen folgende Schritte aus:


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:

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