<para>Debian</para>
<itemizedlist>
<listitem>
- <para>6.0 "Squeeze" (hier muss allerdings das Modul FCGI in der Version >= 0.72 compiled werden)</para>
+ <para>6.0 "Squeeze" (hier muss allerdings das Modul FCGI in der Version >= 0.72 compiled werden, und <literal>Rose::DB::Object</literal> ist zu alt)</para>
</listitem>
<listitem>
<para>7.0 "Wheezy"</para>
</listitem>
<listitem>
- <para>Ubuntu 10.04 LTS "Lucid Lynx", 12.04 LTS "Precise Pangolin" und 12.10 "Oneiric Ocelot"`</para>
+ <para>Ubuntu 12.04 LTS "Precise Pangolin", 12.10 "Quantal Quetzal" und 13.04 "Precise Pangolin"</para>
</listitem>
<listitem>
- <para>openSUSE 12.1 und 12.2</para>
+ <para>openSUSE 12.2 und 12.3</para>
</listitem>
<listitem>
</listitem>
<listitem>
- <para>Fedora 16 und 17</para>
+ <para>Fedora 16 bis 19</para>
</listitem>
</itemizedlist>
</sect2>
<title>Benötigte Perl-Pakete installieren</title>
<para>Zum Betrieb von kivitendo werden zwingend ein Webserver (meist
- Apache) und ein Datenbankserver (PostgreSQL, mindestens v8.2)
+ Apache) und ein Datenbankserver (PostgreSQL, mindestens v8.4)
benötigt.</para>
<para>Zusätzlich benötigt kivitendo einige Perl-Pakete, die nicht Bestandteil einer Standard-Perl-Installation sind. Um zu
<listitem><para><literal>Rose::DB</literal></para></listitem>
- <listitem><para><literal>Rose::DB::Object</literal></para></listitem>
+ <listitem><para><literal>Rose::DB::Object</literal> Version 0.788 oder neuer</para></listitem>
<listitem><para><literal>Template</literal></para></listitem>
<listitem><para><literal>YAML</literal></para></listitem>
</itemizedlist>
+ <para>Seit v3.0.0 sind die folgenden Pakete hinzugekommen: <literal>File::Copy::Recursive</literal>.</para>
+
<para>Seit v2.7.0 sind die folgenden Pakete hinzugekommen: <literal>Email::MIME</literal>, <literal>Net::SMTP::SSL</literal>,
<literal>Net::SSLGlue</literal>.</para>
port = 5432
db = kivitendo_auth
user = postgres
-password =
-
-[system]
-dbcharset = UTF-8</programlisting>
+password =</programlisting>
<para>Nutzt man wiederkehrende Rechnungen, kann man unter
<varname>[periodic_invoices]</varname> den Login eines Benutzers
<para>PostgreSQL muss auf verschiedene Weisen angepasst werden.</para>
<sect2 id="Zeichensätze-die-Verwendung-von-UTF-8">
- <title>Zeichensätze/die Verwendung von UTF-8</title>
+ <title>Zeichensätze/die Verwendung von Unicode/UTF-8</title>
- <para>Bei aktuellen Serverinstallationen braucht man hier meist nicht
- eingreifen</para>
+ <para>kivitendo setzt zwingend voraus, dass die Datenbank Unicode/UTF-8 als Encoding einsetzt. Bei aktuellen Serverinstallationen
+ braucht man hier meist nicht einzugreifen.</para>
- <para>Dieses kann überprüft werden: ist das Encoding der Datenbank
- “template1” “UTF8”, so braucht man nichts weiteres diesbezüglich
- unternehmen. Zum Testen:
+ <para>Das Encoding des Datenbankservers kann überprüft werden. Ist das Encoding der Datenbank "template1" "Unicode" bzw. "UTF-8", so
+ braucht man nichts weiteres diesbezüglich unternehmen. Zum Testen:</para>
<programlisting>su postgres
echo '\l' | psql
exit </programlisting>
- Andernfalls ist es notwendig, einen neuen Datenbankcluster mit
- UTF-8-Encoding anzulegen und diesen zu verwenden. Unter Debian und
- Ubuntu kann dies z.B. für PostgreSQL 8.2 mit dem folgenden Befehl
+ <para>Andernfalls ist es notwendig, einen neuen Datenbankcluster mit
+ Unicode-Encoding anzulegen und diesen zu verwenden. Unter Debian und
+ Ubuntu kann dies z.B. für PostgreSQL 9.3 mit dem folgenden Befehl
getan werden:</para>
- <programlisting>pg_createcluster --locale=de_DE.UTF-8 --encoding=UTF-8 8.2 clustername</programlisting>
+ <programlisting>pg_createcluster --locale=de_DE.UTF-8 --encoding=UTF-8 9.3 clustername</programlisting>
<para>Die Datenbankversionsnummer muss an die tatsächlich verwendete
Versionsnummer angepasst werden.</para>
<para>Unter anderen Distributionen gibt es ähnliche Methoden.</para>
- <para>Wurde PostgreSQL nicht mit UTF-8 als Encoding initialisiert und
- ist ein Neuanlegen eines weiteren Clusters nicht möglich, so kann
- kivitendo mit ISO-8859-15 als Encoding betrieben werden.</para>
-
<para>Das Encoding einer Datenbank kann in <command>psql</command> mit
<literal>\l</literal> geprüft werden.</para>
</sect2>
<para>Zuerst muss eine Datenbank angelegt werden. Verwenden Sie für
den Datenbankzugriff den vorhin angelegten Benutzer (in unseren
Beispielen ist dies ‘<literal>kivitendo</literal>’).</para>
-
- <para>Wenn Sie für die kivitendo-Installation nicht Unicode (UTF-8) sondern den europäischen Schriftsatz ISO-8859-15 benutzen
- wollen, so müssen Sie vor dem Anlegen der Datenbank in der Datei <filename>config/kivitendo.conf</filename> die Variable
- <literal>dbcharset</literal> im Abschnitt <literal>system</literal> auf den Wert ‘<literal>ISO-8859-15</literal>’ setzen.</para>
-
- <para>Bitte beachten Sie, dass alle Datenbanken den selben Zeichensatz
- verwenden müssen, da diese Einstellungen momentan global in kivitendo
- vorgenommen wird und nicht nach Datenbank unterschieden werden kann.
- Auch die Authentifizierungsdatenbank muss mit diesem Zeichensatz
- angelegt worden sein.</para>
</sect2>
<sect2 id="Gruppen-anlegen">
<para>Wenn sich das Problem nicht auf Grund der ausgabe im Webbrowser verifizieren lässt:</para>
<itemizedlist>
<listitem>
- <para> editiere [kivitendo-home]/config/kivitendo.conf und ändere "keep_tmp_files" auf 1</para>
+ <para> editiere [kivitendo-home]/config/kivitendo.conf und ändere "keep_temp_files" auf 1</para>
<para><programlisting>keep_temp_files = 1;</programlisting></para>
</listitem>
<listitem>
<literal>print_templates</literal> auf ‘<literal>1</literal>’ stehen.
Dieses ist die Standardeinstellung.</para>
- <para>Weiterhin muss in der Datei
- <filename>config/kivitendo.conf</filename> die Variable
- <literal>dbcharset</literal> im Abschnitt <literal>system</literal> auf
- die Zeichenkodierung gesetzt werden, die auch bei der Speicherung der
- Daten in der Datenbank verwendet wird. Diese ist in den meisten Fällen
- "UTF-8".</para>
-
<para>Während die Erzeugung von reinen OpenDocument-Dateien keinerlei
weitere Software benötigt, wird zur Umwandlung dieser Dateien in PDF
OpenOffice.org benötigt. Soll dieses Feature genutzt werden, so muss
<para>Mit FastCGI ist die neuste Version auf 0,26 Sekunden selbst in
den kritischen Pfaden, unter 0,15 sonst.</para>
</sect2>
-
- <sect2 id="devel.fcgi.known-issues">
- <title>Bekannte Probleme</title>
-
- <sect3 id="devel.fcgi.known-issues.encoding">
- <title>Encoding Awareness</title>
-
- <para>UTF-8 kodierte Installationen sind sehr anfällig gegen
- fehlerhfate Encodings unter FCGI. latin9 Installationen behandeln
- falsch kodierte Zeichen eher unwissend, und geben sie einfach
- weiter. UTF-8 verweigert bei fehlerhaften Programmpfaden kurzerhand
- das Ausliefern. Es wird noch daran gearbeitet, alle Fehler da zu
- beseitigen.</para>
- </sect3>
- </sect2>
</sect1>
<sect1 id="db-upgrade-files" xreflabel="Datenbank-Upgradedateien">
xreflabel="Einführung in die Datenbank-Upgradedateien">
<title>Einführung</title>
- <para>Der alte Mechanismus für SQL-Upgradescripte, der auf einer
- Versionsnummer beruht und dann in sql/Pg-upgrade nach einem Script für
- diese Versionsnummer sucht, schränkt sehr ein, z.B. was die parallele
- Entwicklung im stable- und unstable-Baum betrifft.</para>
-
- <para>Dieser Mechanismus wurde für kivitendo 2.4.1 deutlich erweitert.
- Es werden weiterhin alle Scripte aus sql/Pg-upgrade ausgeführt.
- Zusätzlich gibt es aber ein zweites Verzeichnis, sql/Pg-upgrade2. In
- diesem Verzeichnis muss pro Datenbankupgrade eine Datei existieren,
- die neben den eigentlich auszuführenden SQL- oder Perl-Befehlen einige
- Kontrollinformationen enthält.</para>
-
- <para>Neu sind die Kontrollinformationen, die Abhängigkeiten und
- Prioritäten definieren können werden, sodass Datenbankscripte zwar in
- einer sicheren Reihenfolge ausgeführt werden (z.B. darf ein "ALTER
- TABLE" erst ausgeführt werden, wenn die Tabelle mit "CREATE TABLE"
- angelegt wurde), diese Reihenfolge aber so flexibel ist, dass man
- keine Versionsnummern mehr braucht.</para>
-
- <para>kivitendo merkt sich dabei, welches der Upgradescripte in
- sql/Pg-upgrade2 bereits durchgeführt wurde und führt diese nicht
- erneut aus. Dazu dient die Tabelle "schema_info", die bei der
- Anmeldung automatisch angelegt wird.</para>
+ <para>Datenbankupgrades werden über einzelne Upgrade-Scripte gesteuert, die sich im Verzeichnis <filename>sql/Pg-upgrade2</filename>
+ befinden. In diesem Verzeichnis muss pro Datenbankupgrade eine Datei existieren, die neben den eigentlich auszuführenden SQL- oder
+ Perl-Befehlen einige Kontrollinformationen enthält.</para>
+
+ <para>Kontrollinformationen definieren Abhängigkeiten und Prioritäten, sodass Datenbankscripte zwar in einer sicheren Reihenfolge
+ ausgeführt werden (z.B. darf ein <literal>ALTER TABLE</literal> erst ausgeführt werden, wenn die Tabelle mit <literal>CREATE
+ TABLE</literal> angelegt wurde), diese Reihenfolge aber so flexibel ist, dass man keine Versionsnummern braucht.</para>
+
+ <para>kivitendo merkt sich dabei, welches der Upgradescripte in <filename>sql/Pg-upgrade2</filename> bereits durchgeführt wurde und
+ führt diese nicht erneut aus. Dazu dient die Tabelle "<literal>schema_info</literal>", die bei der Anmeldung automatisch angelegt
+ wird.</para>
</sect2>
<sect2 id="db-upgrade-files.format"
point.</para>
</sect2>
+ <sect2 id="translations-languages.character-set"
+ xreflabel="Character set">
+ <title>Character set</title>
+
+ <para>All files included in a language pack must use UTF-8 as their encoding.</para>
+ </sect2>
+
<sect2 id="translations-languages.file-structure"
xreflabel="File structure">
<title>File structure</title>
</listitem>
</varlistentry>
- <varlistentry>
- <term>charset</term>
-
- <listitem>
- <para>This file should be present.</para>
-
- <para>The <filename>charset</filename> file describes which
- charset a language package is written in and applies to all
- other language files in the package. It is possible to write
- some language packages without an explicit charset, but it is
- still strongly recommended. You'll never know in what
- environment your language package will be used, and neither
- UTF-8 nor Latin1 are guaranteed.</para>
-
- <para>The whole content of this file is a string that can be
- recognized as a valid charset encoding. Example:</para>
-
- <programlisting>UTF-8</programlisting>
- </listitem>
- </varlistentry>
-
<varlistentry>
<term>all</term>
<itemizedlist>
<listitem><para>Alle Tests liegen im Unterverzeichnis <filename>t/</filename>.</para></listitem>
- <listitem><para>Ein Script (bzw. ein Test) in <filename>f/</filename> enthält einen oder mehrere Testfälle.</para></listitem>
+ <listitem><para>Ein Script (bzw. ein Test) in <filename>t/</filename> enthält einen oder mehrere Testfälle.</para></listitem>
<listitem><para>Alle Dateinamen von Tests enden auf <literal>.t</literal>. Es sind selbstständig ausführbare Perl-Scripte.</para></listitem>
- <listitem><para>Die Test-Suite besteht aus der Gesamtheit aller Tests, sprich aller Scripte in <filename>f/</filename>, deren
+ <listitem><para>Die Test-Suite besteht aus der Gesamtheit aller Tests, sprich aller Scripte in <filename>t/</filename>, deren
Dateiname auf <literal>.t</literal> endet.</para></listitem>
</itemizedlist>
</sect2>
<listitem><para><literal>Test::Harness</literal> 3.0.0 oder höher. Dieses Modul ist ab Perl 5.10.1 Bestandteil der
Perl-Distribution und kann für frühere Versionen aus dem <ulink url="http://www.cpan.org">CPAN</ulink> bezogen
werden.</para></listitem>
+ <listitem><para><literal>LWP::Simple</literal> aus dem Paket <literal>libwww-perl</literal> (Debian-Panetname:
+ <literal>libwww-perl</literal>; Fedora Core: <literal>perl-libwww-perl</literal>; openSUSE:
+ <literal>perl-libwww-perl</literal>)</para></listitem>
+ <listitem><para><literal>URI::Find</literal> (Debian-Panetname: <literal>liburi-find-perl</literal>; Fedora Core:
+ <literal>perl-URI-Find</literal>; openSUSE: <literal>perl-URI-Find</literal>)</para></listitem>
</itemizedlist>
+
+ <para>Weitere Voraussetzung ist, dass die Testsuite ihre eigene Datenbank anlegen kann, um Produktivdaten nicht zu gefährden. Dazu
+ müssen in der Konfigurationsdatei im Abschnit <literal>testing/database</literal> Datenbankverbindungsparameter angegeben
+ werden. Der hier angegebene Benutzer muss weiterhin das Recht haben, Datenbanken anzulegen und zu löschen.</para>
</sect2>
<sect2 id="devel.testsuite.execution">
</title>
<para>Es gibt mehrere Möglichkeiten zum Ausführen der Tests: entweder, man lässt alle Tests auf einmal ausführen, oder man führt
- gezielt einzelne Scripte aus. Für beide Fälle gibt es das Helferscript <filename>t/test.sh</filename>.</para>
+ gezielt einzelne Scripte aus. Für beide Fälle gibt es das Helferscript <filename>t/test.pl</filename>.</para>
- <para>Will man die komplette Test-Suite ausführen, so muss man einfach nur <filename>t/test.sh</filename> ohne weitere Parameter aus
+ <para>Will man die komplette Test-Suite ausführen, so muss man einfach nur <filename>t/test.pl</filename> ohne weitere Parameter aus
dem kivitendo-Basisverzeichnis heraus ausführen.</para>
- <para>Um einzelne Test-Scripte auszuführen, übergibt man deren Namen an <filename>t/test.sh</filename>. Beispielsweise:</para>
+ <para>Um einzelne Test-Scripte auszuführen, übergibt man deren Namen an <filename>t/test.pl</filename>. Beispielsweise:</para>
- <programlisting>t/test.sh t/form/format_amount.t t/background_job/known_jobs.t</programlisting>
+ <programlisting>t/test.pl t/form/format_amount.t t/background_job/known_jobs.t</programlisting>
</sect2>
Ideen für neue Test-Scripte, die keine konkreten Funktionen testen
</title>
- <para> Ideen, die abgesehen von Funktions noch nicht umgesetzt wurden:</para>
+ <para> Ideen, die abgesehen von Funktionen noch nicht umgesetzt wurden:</para>
<itemizedlist>
<listitem><para>Überprüfung auf fehlende symbolische Links</para></listitem>
<listitem><para>Namen sind englisch, komplett klein geschrieben und einzelne Wörter mit Unterstrichten getrennt (beispielsweise
<filename>bad_function_params.t</filename>).</para></listitem>
- <listitem><para>Unterverzeichnisse sollten grob nach dem Themenbereich benannt sind, mit dem sich die Scripte darin befassen
+ <listitem><para>Unterverzeichnisse sollten grob nach dem Themenbereich benannt sein, mit dem sich die Scripte darin befassen
(beispielsweise <filename>background_jobs</filename> für Tests rund um Hintergrund-Jobs).</para></listitem>
<listitem><para>Test-Scripte sollten einen überschaubaren Bereich von Funktionalität testen, der logisch zusammenhängend ist