Entwicklerhandbuch/PaketverwaltungManuell: Unterschied zwischen den Versionen

Aus Delixs
Zur Navigation springen Zur Suche springen
Zeile 122: Zeile 122:
=== dput und ssh konfigurieren ===
=== dput und ssh konfigurieren ===


Die Pakete werden später mit dem Tool 'dput' hochgeladen. Damit dieses Programm weiß, was es tun soll, erstellen wir in unserem Homeverzeichnis die Datei 'dput.cf':
Die Pakete werden später mit dem Tool 'dput' hochgeladen. Damit dieses Programm weiß, was es tun soll, erstellen wir in unserem Homeverzeichnis die Datei '.dput.cf':


<source lang="bash">
<source lang="bash">

Version vom 22. Januar 2010, 09:20 Uhr

Einführung

In dieser Anleitung soll gezeigt werden, wie man einfache, debiankonforme Pakete erstellt und in das delixs-Repository hochlädt.

Vorarbeiten

Als Entwicklungsumgebung setze ich eine normale delixs aramec 0.10 Installation (bevorzugt als virtuelle Maschine) voraus. Hierauf müssen dann noch ein paar Tool installiert und konfiguriert werden.

Tools installieren

Installiere auf Deinem Rechner/VM die notwendigen Hilfsmittel mit folgendem Befehl:

<source lang="bash">

  aptitude install dpkg-dev debhelper devscripts fakeroot dh-make build-essential 
                   gnupg gnupg-agent dput openssh-client

</source>

Repository konfigurieren

Das offizielle delixs-Repository muß in die apt-Konfiguration übernommen werden.

Erstelle bzw. editiere die Datei /etc/apt/sources.list.d/delixs.list :

<source lang="apt_sources"> deb http://deb.delixs.de/ aramec/all/ deb http://deb.delixs.de/ aramec/$(ARCH)/

deb http://deb.delixs.de/ testing/all/ deb http://deb.delixs.de/ testing/$(ARCH)/ </source>

Danach ein aptitude update und das Repository ist eingebunden.

Nun müssen noch die delixs-Schlüssel installiert werden, damit keine Sicherheitswarnungen entstehen:

aptitude install delixs-archive-keyring

Danach wieder ein aptitude update, und das Repository ist offiziell verfügbar.

eigenen GPG-Schlüssel erzeugen

Da wir unsere Pakete später in das delixs-Repository hochladen wollen, müssen wir uns einen persönlichen GPG-Schlüssel generieren, mit dem die Pakete signiert werden. Unsignierte Pakete werden vom Repository nicht akzeptiert.

<source lang="bash"> $ gpg --gen-key Bitte wählen Sie, welche Art von Schlüssel Sie möchten:

  (1) DSA und Elgamal (voreingestellt)
  (2) DSA (nur unterschreiben/beglaubigen)
  (5) RSA (nur signieren/beglaubigen)

Ihre Auswahl? 1

Der DSA Schlüssel wird 1024 Bits haben. ELG-E-Schlüssel können zwischen 1024 und 4096 Bit lang sein. Welche Schlüssellänge wünschen Sie? (2048)

Bitte wählen Sie, wie lange der Schlüssel gültig bleiben soll.

        0 = Schlüssel verfällt nie
       = Schlüssel verfällt nach n Tagen
     w = Schlüssel verfällt nach n Wochen
     m = Schlüssel verfällt nach n Monaten
     y = Schlüssel verfällt nach n Jahren

Der Schlüssel bleibt wie lange gültig? (0) 5y

Sie benötigen eine User-ID, um Ihren Schlüssel eindeutig zu machen; das Programm baut diese User-ID aus Ihrem echten Namen, einem Kommentar und Ihrer E-Mail-Adresse in dieser Form auf:

   ``Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>

Ihr Name ("Vorname Nachname"): Herman Mustermann Email-Adresse: herman.mustermann@delixs.de Kommentar: Sie haben diese User-ID gewählt:

   "Herman Mustermann <herman.mustermann@delixs.de>"

Ändern: (N)ame, (K)ommentar, (E)-Mail oder (F)ertig/(B)eenden? F

Sie benötigen eine Passphrase, um den geheimen Schlüssel zu schützen. Passphrase: <sagichnicht>

Wir müssen eine ganze Menge Zufallswerte erzeugen. Sie können dies unterstützen, indem Sie z.B. in einem anderen Fenster/Konsole irgendetwas tippen, die Maus verwenden oder irgendwelche anderen Programme benutzen. ++++++++++.+++++.+++++.+++++++++++++++.++++++++++.++++++++++++++++++++.++++++ </source>

Es kann noch folgende Meldung erscheinen:

<source lang="bash"> Es sind nicht genügend Zufallswerte vorhanden. Bitte führen Sie andere Arbeiten durch, damit das Betriebssystem weitere Entropie sammeln kann! (Es werden noch 283 Byte benötigt.) </source>

Dann einfach eine weitere ssh-Sitzung bzw. Konsole öffnen und sinnfreie Tasten drücken. Bei genügend Tastendrücken fährt das gpg-Programm automatisch fort.

<source lang="bash"> gpg: /home/mustermann/.gnupg/trustdb.gpg: trust-db erzeugt gpg: Schlüssel 55248F5E ist als uneingeschränkt vertrauenswürdig gekennzeichnet Öffentlichen und geheimen Schlüssel erzeugt und signiert.


gpg: "Trust-DB" wird überprüft gpg: 3 marginal-needed, 1 complete-needed, PGP Vertrauensmodell gpg: Tiefe: 0 gültig: 1 unterschrieben: 0 Vertrauen: 0-, 0q, 0n, 0m, 0f, 1u gpg: nächste "Trust-DB"-Pflichtüberprüfung am 2015-01-19 pub 1024D/D45554A1 2010-01-20 [verfällt: 2015-01-19]

 Schl.-Fingerabdruck = DF97 B5EA 32A4 E53C 8EA5  1310 E230 87B2 D455 54A1

uid Herman Mustermann <herman.mustermann@delixs.de> sub 2048g/B93FC568 2010-01-20 [verfällt: 2015-01-19] </source>

Wir haben uns hiermit nun einen DSA/ElGamal-Schlüssel erzeugt, der 2048 Bits groß ist und 5 Jahre gültig sein wird.

Der öffentliche Teil des Schlüssels muss natürlich irgendwie zugänglich sein, man sollte ihn daher mit folgendem Befehl exportieren:

$ gpg --armor --export herman.mustermann@delixs.de > pgp-mustermann.asc

dput und ssh konfigurieren

Die Pakete werden später mit dem Tool 'dput' hochgeladen. Damit dieses Programm weiß, was es tun soll, erstellen wir in unserem Homeverzeichnis die Datei '.dput.cf':

<source lang="bash"> ~/.dput.cf: [delixs] fqdn = deb.delixs.de method = scp login = dupload incoming = ./incoming run_dinstall = 0 allow_unsigned_uploads = 0 verify_sigs = 1 </source>

dput verwendet für das Login auf dem Server 'deb.delixs.de' den User 'dupload'.
Zur Identifikation werden Schlüsseldateien benötigt, die wir auf Anforderung via PM von Thorsten erhalten.

Die Key-Dateien des Repository-Verwalters 'dupload' werden einkopiert:
Falls noch nicht vorhanden, zuerst das Verzeichnis ~/.ssh erstellen, dann id_dupload.pub und id_dupload nach ~/.ssh kopieren

Da die Kommunikation mit dem Repository verschlüsselt erfolgt, müssen wir eine entsprechende ssh-Konfiguration erstellen.

<source lang="bash"> ~/.ssh/config: host deb.delixs.de

 User dupload
 Ciphers arcfour
 IdentityFile ~/.ssh/id_dupload
 Compression yes

</source>

Unser Homeverzeichnis sieht nun also ungefähr so aus:

<source lang="bash"> |-- .bash_history |-- .bash_logout |-- .bashrc |-- .dput.cf |-- .gnupg | |-- gpg.conf | |-- pubring.gpg | |-- random_seed | |-- secring.gpg | `-- trustdb.gpg |-- .ssh | |-- config | |-- id_dupload | `-- id_dupload.pub `-- pgp-mustermann.asc </source>

Arbeitsverzeichnis erstellen

Ab jetzt wollen wir fleissig sein und viele Debianpakete veröffentlichen.
Deshalb erstellen wir uns ein Arbeitsverzeichnis für alle neuen Pakete und wechseln dorthin: <source lang="bash"> mkdir ~/debianpakete cd ~/debianpakete </source>

Neues Projekt

Wir beginnen mit einem neuen Projekt, indem wir einen zugehörigen Unterordner erstellen.
In diesem Unterordner werden alle Versionen und Paketdateien gesammelt.

Projektordner erstellen: <source lang="bash"> mkdir ./delixs-test-script cd delixs-test-script </source>

Nun wollen wir die erste Version unseres Projekts angehen und erstellen uns dafür ein entsprechendes Arbeitsverzeichnis.
Die Benennung dieses Verzeichnisses ist nicht ganz unwichtig, da der Name auch gleichzeitig die Versionsnummer beinhalten soll. Generell sollte das Muster 'paketname-version' eingehalten werden, wie z.B. in 'delixs-test-script-0.1'. Bitte nur Buchstaben, Zahlen und Bindestriche verwenden (also keine Unterstriche !).

Arbeitsverzeichnis erstellen: <source lang="bash"> mkdir ./delixs-test-script-0.1 cd delixs-test-script-0.1 </source>

Im nächsten Schritt müssen wir ein Verzeichnis erstellen, dessen Inhalt der Paketmanager für die Verwaltung und die einzelnen Installationsphasen benötigt.
Das machen wir aber nicht manuell, sondern nutzen dafür das Tool 'dh_make'. Es erstellt einen Unterordner 'debian' und füllt ihn mit den notwendigen und bereits auf unser Projekt angepassten Steuerungsdateien.

Paketverzeichnis 'debian' erstellen mit: <source lang="bash"> export DEBFULLNAME="Herman Mustermann"; dh_make -n -s -e herman.mustermann@delixs.de

(wobei -n = native package -s = single binary -e = maintainer email address bedeutet) </source>

Zur Sicherheit habe ich dem Tool über eine Umgebungsvariable meinen vollständigen Namen übergeben (der in den vom Tool zu erzeugenden Dateien eingetragen werden soll). dh_make ist zwar in der Lage, diesen Namen aus meiner Standardumgebung zu extrahieren, aber wenn ich mich mal nich als 'Mustermann' angemeldet habe, sondern z.B. sträflicherweise als User 'root' arbeite, ist dieser Mechanismus ganz sinnvoll :-)

Das Tool meldet: <source lang="bash"> Maintainer name : Herman Mustermann Email-Address  : herman.mustermann@delixs.de Date  : Tue, 19 Jan 2010 19:40:56 +0100 Package Name  : delixs-test-script Version  : 0.1 License  : gpl Using dpatch  : no Type of Package : Single Hit <enter> to confirm: </source> Mit einem beherzten Druck auf die Enter-Taste bestätigen wir die Rahmendaten unseres Projekts.

dh_make meldet danach den Vollzug:

<source lang="bash"> Currently there is no top level Makefile. This may require additional tuning. Done. Please edit the files in the debian/ subdirectory now. You should also check that the delixs-test-script Makefiles install into $DESTDIR and not in / . </source>

Wir gehen in das neue Verzeichnis und sehen uns um.

<source lang="bash"> cd debian </source>

Wir erkennen schnell, dass unser Tool dort viele Dateien angelegt hat, die wir glücklicherweise zum großen Teil erst mal gar nicht benötigen. Respektive die Beispieldateien mit der ndung '.ex' können wir erst mal zur Seite legen oder auch gleich ganz löschen.

Dateien löschen: <source lang="bash"> rm *.ex *.EX </source>

Unsere Verzeichnisstruktur sieht nun also ungefähr so aus:

<source lang="bash"> |-- debianpakete | `-- delixs-test-script | `-- delixs-test-script-0.1 | `-- debian | |-- README | |-- README.Debian | |-- changelog | |-- compat | |-- control | |-- copyright | |-- dirs | |-- docs | `-- rules </source>

Wir müssen nun noch einige Dateien editieren.

Datei 'control'
Diese Datei enthält einen Überblick über unser Paket, also eine Beschreibung, eventuele Abhängigkeiten von anderen Paketen etc.
Der Inhalt ist im Wesentlichen selbsterklärend; wir müssen auf jeden Fall folgende Zeilen bearbeiten.

Anpassen 'control': <source lang="bash"> Section: mail

       Homepage: www.delixs.de

Architecture:all

       Description: ...

</source>

Debian-Pakete werden im Standard-Debian-Archiv eingeteilt in 'main', 'contrib' und 'non-free'. Innerhalb dieser Bereiche gibt es noch 'Sections' (also Unterbereiche), in die Pakete einsortiert werden.
Unser neues Paket sollte einer dieser Sections zugeordnet werden. Als 'Section' tragen wir z.B. 'mail', 'misc', 'net' o.ä. ein. Eine vollständige Liste dieser Sections gibt es unter http://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections

Als 'Homepage' setzen wir unsere Projekt-Website ein: www.delixs.de
Als 'Architecture' nehmen wir 'all', da unser Paket (vorerst) keine kompilierten und somit prozessorarchitekturbedingte Dateien enthält.
Die 'Description', also Beschreibung unseres Pakets, ist zweiteilig. Direkt hiner 'Description' setzen wir eine kurze, einzeilige Beschreibung, in die Zeile(n) darunter, mit einem Leerzeichen am Anfang jeder Zeile, verfassen wir eine ausführlichere Beschreibung unseres Projekts.

Im Ergebnis sieht das Ganze dann ungefähr so aus:

<source lang="bash"> Source: delixs-test-script Section: misc Priority: extra Maintainer: Herman Mustermann <herman.mustermann@delixs.de> Build-Depends: debhelper (>= 7) Standards-Version: 3.7.3 Homepage: www.delixs.de

Package: delixs-test-script Architecture: all Depends: ${shlibs:Depends}, ${misc:Depends} Description: Test script for the delixs project.

This is a rather lengthy description of a small package which will serve as
an example of building debian packages for the delixs project.

</source>

Datei 'changelog'
Wie der Name schon vermuten lässt, sollen in dieser Datei die Änderungen an unserem Paket von Version zu Version fortgeschrieben werden.
Unser Tool dh_make hat uns hier schon mal eine Grundstruktur eingetragen, die wir aber noch in einem Punkt anpassen müssen.
In der ersten Zeile steht: <source lang="bash"> delixs-test-script (0.1) unstable; urgency=low </source> Das 'unstable' hinter der Versionsnummer bestimmt, in welchen Debianzweig unser Paket später hochgeladen wird. Für das delixs-Projekt wurden die Zweige 'aramec' und 'testing' eingerichtet, entsprechend müssen wir hier statt 'unstable' also entweder 'testing' der 'aramec' eintragen.
Da unser neues Paet ja noch nicht für den produktiven Einsatz freigegeben ist, werden wir hier also 'testing' verwenden.

Die Dateien 'README' und 'copyright' sind sicherlich selbsterklärend und können nach Bedarf angepasst werden.

Datei 'rules'
Dies ist die zentrale Steuerungsdatei, die für alle Instalationsarbeiten vom Paketmanager aufgerufen wird.
Es handelt sich hierbei um eine Make-Steuerungsdatei, die auf den ersten Blick etwas unübersichtlich erscheint. Wir müssen uns auch jetzt noch nicht in die Details dieser Datei einarbeiten, aber um unser Paket für einen ersten Build-Lauf formal korrekt aufzustellen, sollten wir zunächst drei Zeilen darin editieren.

In diesen Zeilen befindet sich der Aufruf eines weiteren Makefiles, das wir aber noch gar nicht erstellt haben (und es vielleicht auch nie tun werden).
Deshalb werden wir den Aufruf einfach auskommentieren, indem wir an den anfang der jeweiligen Zeile eine Raute '#' setzen.

Anpassen 'rules': <source lang="bash"> Zeile 30: #<----->$(MAKE) Zeile 41: #<----->$(MAKE) clean Zeile 53: #<----->$(MAKE) DESTDIR=$(CURDIR)/debian/delixs-test-script install </source>

Der Build-Vorgang

So, nun können wir einmal testweise versuchen, ob die Paketerstellung soweit funktioniert.

Wir geben ein: <source lang="bash"> debuild </source>

Die Ausgabe ist etwas geschwätzig: <source lang="bash"> mustermann@alix:~/debianpakete/delixs-test-script/delixs-test-script-0.1$ debuild dpkg-buildpackage -rfakeroot -D -us -uc dpkg-buildpackage: setze CFLAGS auf Standardwert: -g -O2 dpkg-buildpackage: setze CPPFLAGS auf Standardwert: dpkg-buildpackage: setze LDFLAGS auf Standardwert: dpkg-buildpackage: setze FFLAGS auf Standardwert: -g -O2 dpkg-buildpackage: setze CXXFLAGS auf Standardwert: -g -O2 dpkg-buildpackage: Quellpaket delixs-test-script dpkg-buildpackage: Quellversion 0.1 dpkg-buildpackage: Quellen geändert durch Herman Mustermann <herman.mustermann@delixs.de> dpkg-buildpackage: Host-Architektur i386

fakeroot debian/rules clean

dh_testdir dh_testroot rm -f build-stamp configure-stamp

  1. Add here commands to clean up after the build process.

dh_clean

dpkg-source -b delixs-test-script-0.1

dpkg-source: Information: verwende Quellformat »1.0« dpkg-source: Information: baue delixs-test-script in delixs-test-script_0.1.tar.gz dpkg-source: Information: baue delixs-test-script in delixs-test-script_0.1.dsc

debian/rules build

dh_testdir

  1. Add here commands to configure the package.

touch configure-stamp dh_testdir

  1. Add here commands to compile the package.
  2. docbook-to-man debian/delixs-test-script.sgml > delixs-test-script.1

touch build-stamp

fakeroot debian/rules binary

dh_testdir dh_testroot dh_clean -k dh_installdirs

  1. Add here commands to install the package into debian/delixs-test-script.

dh_testdir dh_testroot dh_installchangelogs dh_installdocs dh_installexamples dh_installman dh_link dh_strip dh_compress dh_fixperms dh_installdeb dh_shlibdeps dh_gencontrol dpkg-gencontrol: Warnung: unbekannte Substitutionsvariable ${shlibs:Depends} dpkg-gencontrol: Warnung: unbekannte Substitutionsvariable ${misc:Depends} dh_md5sums dh_builddeb dpkg-deb: Baue Paket »delixs-test-script« in »../delixs-test-script_0.1_all.deb« .

dpkg-genchanges  >../delixs-test-script_0.1_i386.changes

dpkg-genchanges: füge kompletten Quellcode beim Hochladen hinzu dpkg-buildpackage: Alles hochzuladen; Debian-native-Paket (komplette Quellen enthalten) Now signing changes and any dsc files...

signfile delixs-test-script_0.1.dsc Herman Mustermann <herman.mustermann@delixs.de>

Sie benötigen eine Passphrase, um den geheimen Schlüssel zu entsperren. Benutzer: "Herman Mustermann <herman.mustermann@delixs.de>" 1024-Bit DSA Schlüssel, ID D45554A1, erzeugt 2010-01-20


signfile delixs-test-script_0.1_i386.changes Herman Mustermann <herman.mustermann@delixs.de>

Sie benötigen eine Passphrase, um den geheimen Schlüssel zu entsperren. Benutzer: "Herman Mustermann <herman.mustermann@delixs.de>" 1024-Bit DSA Schlüssel, ID D45554A1, erzeugt 2010-01-20


Successfully signed dsc and changes files </source>

Wie man sieht, wird das Paket zunächst zusammengebaut und dann signiert.
Es wird sowohl das Paket (bzw. seine Beschreibung) als auch die zum Paket gehörende Changes-Datei signiert, weshalb auch zweimal nach dem Password gefragt wird, das wir bei der Erzeugung unseres GPG-Schlüssels definiert hatten.

Schauen wir uns mal kurz an, was der Befehl 'debuild' denn eigentlich gemacht hat. Dazu wechseln wir von unserem debian-Verzeichnis zwei Ebenen weiter nach oben und finden dort folgende Struktur:

<source lang="bash"> |-- delixs-test-script-0.1 | |-- build-stamp | |-- configure-stamp | `-- debian | |-- README | |-- README.Debian | |-- changelog | |-- compat | |-- control | |-- copyright | |-- delixs-test-script | | |-- DEBIAN | | | |-- control | | | `-- md5sums | | `-- usr | | |-- bin | | |-- sbin | | `-- share | | `-- doc | | `-- delixs-test-script | | |-- README.Debian | | |-- changelog.gz | | `-- copyright | |-- delixs-test-script.debhelper.log | |-- dirs | |-- docs | |-- files | `-- rules |-- delixs-test-script_0.1.dsc |-- delixs-test-script_0.1.tar.gz |-- delixs-test-script_0.1_all.deb |-- delixs-test-script_0.1_i386.build `-- delixs-test-script_0.1_i386.changes </source>

In unserem Paketverzeichnis finden wir nun neben dem 'debian'-Ordner auch noch ein paar neue Dateien, u.a. unser erstes Paket 'delixs-test-script_0.1_all.deb'.

Prima, das könnten wir nun einfach direkt installieren (mit 'dpkg -i delixs-test-script_0.1_all.deb', das Entfernen geht mit 'dpkg -P delixs-test-script'), aber das wäre natürlich unnütz, da unser Paket ja noch garnichts beinhaltet.

Trotzdem können wir herausfinden, was bei einer Installation unseres Pakets passieren würde, indem wir einfach mal einen Blick in unser 'debian'-Verzeichnis bzw. das darin entstandene Verzeichnis 'delixs-test-script' werfen.
In dieses Verzeichnis hat der Build-Befehl schon mal die Ordner und Dateien einkopiert, die auch bei einer realen Installation entstehen würden, in unserem Fall also ist das die Paket-Dokumentation in /usr/share/doc/delixs-test-script.
Ist zwar noch nicht weltbewegend, aber immerhin ...

Upload ins Repository

Nachdem wir nun so ein schönes Paket geschnürt haben, wollen wir es in das Projekt-Repository hochladen, damit alle Teammitglieder Freude daran haben.

Wir befinden uns im Ordner 'delixs-test-script-0.1' und sagen: <source lang="bash"> dput delixs delixs-test-script_0.1_i386.changes </source>

Wir sagen damit dput, dass es ins Repository 'delixs' hochladen soll; was und wohin hochgeladen werden soll, erkennt dput am Inhalt der *.changes Datei.

Wenn ein Paket erst einmal ins Repository hochgeladen wurde, ist ein nochmaliges Hochladen nicht mehr möglich, selbst wenn wir viele Änderungen vorgenommen und das Paket neu mit debuild erstellt haben (?). Ein Hochladen ist erst wieder möglich, wenn wir eine neue Version des Paketes erstellt haben.

Es dauert übrigens bis zu 15 Minuten, bis unser Paket vom Server verarbeitet und wirklich in das Repository aufgenommen wird.

Danach reicht ein
aptitude update
und dann ein
aptitude search delixs
um das eigene, neue Paket im Repository zu sehen.

Neue Version

Nachdem wir das Grundpaket erfolgreich erstellt haben, werden wir nun eine neue Version des Paketes angehen, die dann auch mal etwas Sinnvolles tut.

Um eine neue Version zu erzeugen, gehen wir zunächst in das Verzeichnis der aktuellen Version <source lang="bash"> cd ~/debianpakete/delixs-test-script/delixs-test-script-0.1 </source>

Wir initiieren die neue Version mit <source lang="bash"> debchange -im ( wobei -i inkrementiere die Versionsnummer

         -m  behalte die bisherigen Maintainerdaten bei

bedeutet) </source>

Es startet der Editor und zeigt uns die Datei 'changelog', die nun schon durch einen neuen Eintrag 'delixs-test-script (0.2)' erweitert wurde.

Wir können die Datei um einen entsprechenden Kommentar ergänzen und abspeichern/beenden.

debchange meldet uns zum Abschluss: <source lang="bash"> debchange warning: your current directory has been renamed to: ../delixs-test-script-0.2 </source>

Es hat also unser Versionsverzeichnis umbenannt, indem es die Versionsnummer am Ende hochzählt.
Wir wechseln in dieses Verzeichnis.

Paket-Beispiele

Ein PHP-Script-Paket

Wir möchten gerne, dass unser Paket ein PHP-Script installiert, das wir dann über einen Webbrowser aufrufen können.

Wir erstellen das PHP-Script im Verzeichnis 'delixs-test-script-0.2'. <source lang="bash"> mcedit HelloWorld.php </source>


<source lang="php"> <?php

 echo "Hello world !";

?> </source>

Nun müssen wir dem Paketmanager noch sagen, dass dieses Script in den Dokumentenbereich des apache installiert werden soll.
Hierzu wechseln wir in das 'debian'-Verzeichnis und erstellen die Datei 'install'

<source lang="bash"> cd debian mcedit install </source>


<source lang="bash"> HelloWorld.php var/www/htdoc/hwscript </source>

Ein Einzeiler, der bewirkt, dass die Datei 'HelloWorld.php' während der Installation unseres Paketes in das Verzeichnis /var/www/htdocs/hwscript kopiert wird.
(Syntax: quelldatei zielverzeichnis)

Hätten wir mehrere Dateien dorthin zu kopieren, würde der Einzeiler so aussehen:

<source lang="bash"> HelloWorld.php HelloUniverse.php var/www/htdoc/hwscript </source>

(Syntax: quelldatei[ quelldatei] zielverzeichnis)

Wir können auch ein komplettes Verzeichnis (samt evtl. darin liegenden Verzeichnisbaum) installieren:

<source lang="bash"> PHP-scripte/ var/www/htdoc/hwscript </source>

(Syntax: quellverzeichnis/ zielverzeichnis)

Damit der Paketmanager die 'install'-Datei auswertet, müssen wir noch kurz die zentrale Steuerungsdatei 'rules' editieren.

In Zeile 66 entfernen wir das Kommentarzeichen vom Zeilenanfang. <source lang="bash">

  1. <----->dh_install

</source>

und speichern ab. Fertig.

Das wollen wir gleich mal testen. Wir erstellen das Paket mit <source lang="bash"> debuild </source>

und finden nun unterhalb des 'debian'-Verzeichnisses folgende Struktur:

<source lang="bash"> |-- delixs-test-script | |-- DEBIAN | | |-- control | | `-- md5sums | |-- usr | | |-- bin | | |-- sbin | | `-- share | | `-- doc | | `-- delixs-test-script | | |-- README.Debian | | |-- changelog.gz | | `-- copyright | `-- var | `-- www | `-- htdoc | `-- hwscript | `-- HelloWorld.php </source>

Sieht gut aus, aber wir wollen uns an der Realität messen, deshalb installieren wir das Paket mit <source lang="bash"> dpkg -i delixs-test-script_0.2_all.deb </source>

starten einen Webbrowser und geben ein: <source lang="bash"> http://10.100.0.1/hwscript/HelloWorld.php </source>

q.e.d. :-)

Genauso schnell werden wir das Paket auch wieder los: <source lang="bash"> dpkg -P delixs-test-script </source>

Weblinks


zurück | Hauptseite


Hans-Jürgen Grimminger 2010