Created: 2004-04-22 fm Last updated: $Id$ Beschreibung der verschiedenen Scripte zur Paketerstellung ---------------------------------------------------------- SVN-Struktur ------------ /repo/eis/trunk | + _ADMIN/ - folder-list.txt | create-list.sh | check-files.sh | mktarball.sh | mkship.sh | + updates/ - update-1.0.5.tar.gz | | update-1.0.5.tar.gz.info | | ... | | | + update-1.0.6/ | | | + _ADMIN/ - update-1.0.6-files.txt | ... | + inet-mail-news/ - mail.tar.gz | mail.tar.gz.info | ... | + mail/ | | | + _ADMIN/ - mail-files.txt | mk_mail.sh (optional) | ... folder-list.txt --------------- Diese Datei enthaelt eine Liste der Pakete und deren Ablageort in der Verzeichnisstruktur, ausgehend von /repo/eis/trunk. Sie soll in Zukunft dazu dienen automatisierte Systemfunktionen zur Verfuegung zu stellen, die z.B. die Dateiberechtigungen wieder herstellen oder die Deinstallation eines Paketes durchführen. Beispiel: #---------------------------------------------------------------------------- # folder-list.txt - list all sub folders of eis structure # # Creation: 2004-05-10 jed # Last update: \$Id\$ #---------------------------------------------------------------------------- mail:inet-mail-news update-1.0.5:updates update-1.0.6:updates create-list.sh -------------- Dieses Script dient dem initialen Anlegen der fuer die Paketerstellung benoetigten Datei -files.txt. In diese Datei werden alle Dateien aufgenommen, die sich im Unterverzeichnis befinden. Ablageort fuer diese Datei ist das Verzeichnis /_ADMIN/ . Damit binaries korrekt erkannt werden, ist es erforderlich das ganze Projekt zu importieren/adden und anschliessend einen checkout auszufuehren. Diese Datei muß dann mit einem Editor, z.B. vi, bearbeitet und die entsprechenden Dateirechte gesetzt werden. Folgende Dateikategorien (erste Spalte) wurden bisher definiert: # - Kommentar b - Binärdatei, bei Dateien diesen Typs wird der Inhalt nicht veraendert. wird automatisch erkannt und richtig gesetzt d - Dosdatei, dies soll zukuenftig ein 'unix2dos' ermöglichen. muss von Hand gesetzt werden f - Dateiordner bzw. -verzeichnis, dies soll die Angabe von Verzeichnissen ermoeglichen. wird automatisch richtiog gesetzt i - Datei wird ignoriert und nicht in das Paket aufgenommen. muss von Hand gesetzt werden u - Unixdatei, bei Dateien diesen Typs werden Tags wie z.B. '$Id$' aktualisert. wenn 'svn propset svn:keywords "Id" ' gesetzt ist und dann einen commit durchfuehren. wird automatisch erkannt und richtig gesetzt Aufruf: create-list.sh PACKAGE1 PACKAGE2 ... resultierende Datei: #---------------------------------------------------------------------------- # mail-files.txt - list all files of package 'mail' # # Creation: 2005-05-01 jed # Last update: \$Id\$ #---------------------------------------------------------------------------- u 0644 root root mail etc/aliases.std u 0644 root root mail etc/check.d/mail u 0644 root root mail etc/check.d/mail.basic u 0644 root root mail etc/check.d/mail.exp u 0644 root root mail etc/check.d/mail.ext u 0644 root root mail etc/default.d/mail check-files.txt --------------- Dieses Script prueft, ob die in der Datei -files.txt aufgefuehrten Dateien im Unterverzeichnis vorliegen bzw. ob alle im Unterverzeichnis enthaltenen Dateien auch in der Datei -files.txt enthalten sind. Sofern der Switch '-no-checktype' nicht verwendet wird, so wird zusaetzlich der gesetze Dateityp gegen das svn geprueft. Aufruf: check-files.sh [-checktype|-no-checktype|-checktype-soft] PACKAGE1 PACKAGE2 ... mktarball.sh ------------ Dieses Script erstellt ein oder mehrere neue Paketarchiv .tar.gz, basierend auf den in der Datei -files.txt gelisteten Dateien. Vor der Erstellung der Archivdateien wird das Script check-files.sh aufgerufen um die Vollstaendigkeit der -files.txt-Datei zu prüfen. Vor dem Erstellen der Archivdatei wird in die Paketbeschreibungsdatei var/install/packages/ das aktuelle Datum, bzw. optional über die Optionen '-setversion' bzw. '-setstatus' eingesetzt und dann als Basis für die .tar.gz.info-Datei verwendet. Außerdem wird eine eventuell existierende Scriptdatei 'mk_.sh' im Verzeichnis /_ADMIN/ ausgefuehrt. Wird die Option '-all' verwendet, so werden alle in der Datei folder-list.txt aufgefuehrten Paketarchive neu erzeugt. Dateien mit dem Dateityp i (=ignore) werden nicht ins Paketarchiv übernommen. Aufruf: mktarball.sh -all [-quiet] [-checktype|-no-checktype|-checktype-soft] [-setversion svn] [-setdate svn|now|keep|date] [-setstatus svn] oder mktarball.sh [-quiet] [-checktype|-no-checktype|-checktype-soft] [-setversion svn|version_number] [-setstatus status] [-setdate svn|now|keep|date] [-touch YYYYMMDDhhmm] PACKAGE1 PACKAGE2 ... oder mktarball.sh -testteam PACKAGE Dieser Aufruf erzeugt eine svn-Version mit Status "testing" und kopiert das Paket nach /var/www/t-team_eis/tarballs/ oder mktarball.sh -release version_number PACKAGE Dieser Aufruf erzeugt ein stable Release eines Pakets, commitet den aktuellen Stand ins svn, tagged diese Version und kopiert das Paket nach /var/www/t-team_eis/tarballs/. Das Paket kann dann über die Angabe der URL https://eisler.eisfair.net/t-team_eis/tarballs/PACKAGE auf Pack-Eis hochgeladen werden. Bei angabe einer version_number wird /var/install/packages/$package ins repo commitet. Ebenfalls wird, sofern vorhanden, /usr/share/doc/$packages/version aktualisiert und ins repo commitet. Dadurch entfaellt das manuelle aendern der Versionsnummer und gleichzeitig werden status und Datum mit aktualisiert. mkship.sh --------- Dieses Script erstellt aus den mittels mktarball.sh erstellten Packages, basierend auf den in der Datei -files.txt gelisteten Dateien, die Struktur fuer den Server (eis-list.txt + $subdir.txt...). Aufruf: mkship.sh [-quiet] DESTINATION_DIRECTORY Anhang ------ /var/install/bin/set-access-rights - Basierend auf der Datei -files.txt wurde dem eisfair-base-Package das genannte Script hinzugefuegt, welches es einem Paket erlaubt die Dateizugriffsrechte automatisiert setzen zu koennen. Die Quelldatei muß im Verzeichnis /etc/filelist.d liegen um gefunden zu werden. Aufgerufen wird das Script wie folgt: set-access.sh [-quiet] [-dir file-list-dir] [-file file-to-change] PACKAGE1 PACKAGE2 ... -quiet - Alle Bildschirmausgaben werden unterdrueckt -dir - Ein von /etc/filelist.d abweichendes Verzeichnis kann angegeben werden. -file - Es kann eine Datei angegeben werden dessen Rechte, basierend auf den Informationen in der Datei -files.txt, umgesetzt werden sollen. PACKAGE1 PACKAGE2 ... - Namen des bzw. dir zu bearbeitenden Packages. *ENDE*