NAME
Quiq::ApplicationPaths - Ermittele Pfade einer Unix-Applikation
SYNOPSIS
# Homedir: <prefix>/opt/<application> (<prefix> kann leer sein)
my
$app
= Quiq::ApplicationPaths->new;
my
$name
=
$app
->name;
# <application>
my
$prefix
=
$app
->prefix;
# <prefix>
my
$homeDir
=
$app
->homeDir;
# <prefix>/opt/<application>
my
$etcDir
=
$app
->etcDir;
# <prefix>/etc/opt/<application>
my
$varDir
=
$app
->varDir;
# <prefix>/var/opt/<application>
DESCRIPTION
Die Klasse ermöglicht einer Perl-Applikation unter Unix ohne hartkodierte absolute Pfade auszukommen. Alle Pfade, unter denen sich die verschiedenen Teile der Applikation (opt-, etc-, var-Bereich) im Dateisystem befinden, werden von der Klasse aus dem Pfad des ausgeführten Programms hergeleitet.
Das Layout entspricht der opt-Installationsstruktur eines Unix-Systems:
/opt/<application> (Programmcode und statische Daten)
/etc/opt/<application> (Konfiguration)
/var/opt/<application> (Bewegungsdaten)
Die Pfade müssen nicht im Root-Verzeichnis beginnen, ihnen kann auch ein Präfix-Pfad <prefix> vorangestellt sein. Z.B. kann sich die Struktur im Home-Verzeichnis des Benutzers befinden (siehe Abschnitt EXAMPLES).
EXAMPLES
/opt/<application>/...
prefix() : (Leerstring)
name() : <application>
homeDir() : /opt/<application>
etcDir() : /etc/opt/<application>
varDir() : /var/opt/<application>
/home/<user>/opt/<application>/...
prefix() : /home/<user>
name() : <application>
homeDir() : /home/<user>/opt/<application>
etcDir() : /home/<user>/etc/opt/<application>
varDir() : /home/<user>/var/opt/<application>
METHODS
Konstruktor
new() - Konstruktor
Synopsis
$app
=
$class
->new;
$app
=
$class
->new(
$depth
);
Arguments
- $depth (Default: 1)
-
Gibt an, wie viele Subverzeichnisse tief das Programm unterhalb des Applikations-Homedir (<prefix>/opt/<application>) angesiedelt ist.
Description
Instantiiere ein Objekt der Klasse und liefere dieses zurück.
Objektmethoden
name() - Name der Applikation
Synopsis
$name
=
$app
->name;
Description
Liefere den Namen <name> der Applikation.
prefix() - Pfad-Präfix der Installation
Synopsis
$prefix
=
$app
->prefix;
$prefix
=
$app
->prefix(
$subPath
);
Description
Liefere den Pfad-Präfix <prefix> der Applikations-Installation, also den Pfad oberhalb des opt-Verzeichnisses. Ist die Applikation in /opt (opt im Wurzelverzeichnis) installiert, wird ein Leerstring geliefert. Ist Zeichenkette $subPath angegeben, wird diese mit '/' getrennt angefügt.
homeDir() - Home-Verzeichnis der Applikation
Synopsis
$homeDir
=
$app
->homeDir;
$homeDir
=
$app
->homeDir(
$subPath
);
Description
Liefere das Verzeichnis, in dem der Programmcode und die statischen Daten der Applikation abgelegt sind. Ist Zeichenkette $subPath angegeben, wird diese mit '/' getrennt angefügt.
etcDir() - Konfigurations-Verzeichnis der Applikation
Synopsis
$etcDir
=
$app
->etcDir;
$etcDir
=
$app
->etcDir(
$subPath
);
Description
Liefere das Verzeichnis, in dem die Konfigurationsdateien der Applikation abgelegt sind. Ist Zeichenkette $subPath angegeben, wird diese mit '/' getrennt angefügt.
varDir() - Bewegungsdaten-Verzeichnis der Applikation
Synopsis
$varDir
=
$app
->varDir;
$varDir
=
$app
->varDir(
$subPath
);
Description
Liefere das Verzeichnis, in dem die Applikation Bewegungsdaten speichert. Ist Zeichenkette $subPath angegeben, wird diese mit '/' getrennt angefügt.
DETAILS
Mögliche Erweiterungen
Andere Layouts
Andere Layouts sind möglich und könnten von der Klasse ebenfalls behandelt werden. Bei Bedarf kann der Konstruktor um eine Option -layout=>$layout
erweitert und das betreffende Layout innerhalb des Konstruktors behandelt werden. Beispiele:
Installation mit Unterscheidung nach Versionsnummer:
<prefix>/opt/<application>/<version>
<prefix>/etc/opt/<application>/<version>
<prefix>/var/opt/<application>/<version>
Installation mit Unterscheidung nach Versionsnummer in eigenem Subverzeichnis:
<prefix>/opt/<application>/version/<version>
<prefix>/etc/opt/<application>/<version>
<prefix>/var/opt/<application>/<version>
Kein opt-Unterverzeichnis in etc und var:
<prefix>/opt/<application>
<prefix>/etc/<application>
<prefix>/var/<application>
Optionaler Trenner bei etcDir() und varDir()
Die Methoden etcDir() und varDir() könnten um eine Variante mit zwei Parametern erweitert werden, die die Vorgabe des Trennzeichens erlaubt:
$path
=
$app
->etcDir(
''
,
'.conf'
);
# <prefix>/etc/opt/<application>.conf
$path
=
$app
->varDir(
''
,
'.log'
);
# <prefix>/etc/opt/<application>.log
VERSION
1.225
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2025 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.