Erstellen von Debian-Paketen

Erstellen von Debian-Paketen

Ich bin seit ein paar Tagen dort und denke, dass es höchste Zeit ist, mir etwas erfahrenere Ratschläge zu holen.

Ich arbeite daran, eine Perl-Anwendung zu verpacken – alle Dateien davon sollten im /var/www/<packagename>Verzeichnis auf dem System abgelegt werden.

Bisher konnte ich das Paket erstellen, aber meine Dateien werden nicht in diesem Verzeichnis abgelegt und ich habe keine präzise Anleitung dazu gelesen.

Momentan wird mein Paket ordnungsgemäß erstellt – abgesehen von Lintian-Warnungen. Diese liegen aber hauptsächlich daran, dass ich die Vorlagendateien von dh_make verwende, die ich aktualisieren werde, sobald es richtig funktioniert.

Im Wesentlichen habe ich im Moment folgende Struktur:

ls:

packagedirectory-1.0
 - debian directory with control/copyright/rules/ ...
 - directory belonings to app
 - directory belonging to app
 - files belonging to app
package)1.0-1.tar.gz

Ich baue mit

dpkg-buildpackage -us -uc

(Ich unterschreibe jetzt nicht, werde es tun, sobald es richtig erstellt ist) und mache das vom Paketverzeichnis aus. Und das gibt meine .deb, .changes, .orig.tar.gz, und aus.dsc

Ich bin für jede Hilfe dankbar. Noch einmal: Das Hauptproblem, das ich hier habe, ist, dass ich die App-Dateien/-Verzeichnisse /var/www/<packagename>bei der Installation dort ablegen möchte.

Antwort1

Debian-Pakete sollten keine Dateien unter /var/www installieren. Dies ist keins der /var-Verzeichnisse im File Hierarchy Standard und unterliegt der Kontrolle des lokalen Administrators. Pakete sollten nicht davon ausgehen, dass es sich um das Dokumentstammverzeichnis eines Webservers handelt. Es kommt sehr häufig vor, dass Benutzer das standardmäßige Dokumentstammverzeichnis ändern, und Pakete sollten nicht davon ausgehen, dass Benutzer eine bestimmte Einstellung beibehalten.

Pakete, die Dateien über einen installierten Webserver verfügbar machen möchten, sollten stattdessen Anweisungen für den lokalen Administrator in einer README.Debian-Datei bereitstellen und idealerweise Konfigurationsfragmente für gängige Webserver wie Apache einschließen.

http://lintian.debian.org/tags/dir-or-file-in-var-www.html

phpldapadmin – ein beliebtes PHP-basiertes LDAP-Verwaltungstool – verfügt über eine Datei, die in /etc/apache2/conf.d/ aufgenommen werden kann und zwei Optionen bietet:

# Option 1: Define /phpldapadmin alias, this is the default
<IfModule mod_alias.c>
    Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
</IfModule>

# OR Option 2: You can also use phpLDAPadmin as a VirtualHost
<VirtualHost *:*>
 ServerName ldap.example.com
 ServerAdmin [email protected]
 DocumentRoot /usr/share/phpldapadmin/htdocs
 ErrorLog logs/ldap.example.com-error.log
 CustomLog logs/ldap.example.com-access.log common
</VirtualHost>

#Then define the directory options like default index, access control etc.
<Directory /usr/share/phpldapadmin/htdocs/>
 DirectoryIndex ...
 ...
</Directory>

Nach diesem Beispiel installieren Sie die Dateien, die Sie in /var/www/yourpackage anzeigen möchten, in /usr/share/yourpackage/htdocs und bearbeitendeinenthaltene Apache-Konfiguration entsprechend. Speichern Sie dann den enthaltenen Apache-Konfigurationsausschnitt in /usr/share/doc/yourpackage/examples/ oder installieren Sie ihn direkt mit dem Paket in /etc. Fügen Sie Anweisungen in README.Debian (im selben Doc-Verzeichnis) hinzu, damit Benutzer /etc/yourapp.conf oder /etc/yourapp/apache.conf mit /etc/apache2/conf.d/yourapp.conf verknüpfen und Apache neu starten.

Antwort2

Letztendlich habe ich die hier enthaltenen Informationen verwendet:https://stackoverflow.com/questions/3214319/ich-brauche-meine-debian-rules-datei-um-die-dateien-einfach-auf-ihr-ziel-zu-kopierenSO Frage. Während dies istnichtdie richtige Art und Weise, Dateien in der Datei /var/www zu platzieren, wenn Ihr Paket für die externe Verwendung vorgesehen ist – für mich funktioniert das, da es sich um ein intern verwendetes Paket handelt.

Bitte beachten SieKommentar von overprescribedDiesbezüglich wurde es abgelehnt, da es sehr ausführliche Informationen enthält, da es die eigentliche Frage nicht beantwortete und nur sagte, dass ich das nicht tun sollte und einen Weg fand, es zu umgehen.

verwandte Informationen