\chapter{Erzeugen und Installieren der Applikation}
\index{Installieren}
Um den Pool Video Switch erfolgreich zu kompilieren, müssen zunächst die Quelldateien heruntergeladen werden. Hierzu sollte auf dem Arbeitsrechner ein Subversion-Client installiert sein. Ein Checkout kann in einem beliebigen Terminal erfolgen, wobei es zwei unterschiedliche Arten des Zugriffs gibt.\\

Anonym, nur Leserechte:\\
\textbf{git clone git://git.openslx.org/pvs.git pvs}\\

Mit Account, auch Schreibrechte (hier wird vorausgesetzt, dass der Benutzer vorher seinen öffentlichen SSH-Schlüssel hinterlegt hat):\\
\textbf{git clone git@openslx.org:pvs.git}\\


\section{Voraussetzungen}
Der Pool Video Switch benötigt zum Kompilieren folgende Pakete (und ihre Abhängigkeiten):
\begin{itemize}
 \item libvncserver-dev >= 0.9.3\\
	Eine angenehm kleine, wenn auch in C geschriebene, Bibliothek für die Erstellung von VNC Servern und Clients. 
 \item libx11-dev >= 1.3.3\\
	Diese Bibliothek wurde eingesetzt, um ausgewählten oder allen Zielrechnern den Zugriff auf Maus und Tastatur zu entziehen und den Bildschirm schwarz zu schalten.
 \item libqt4-dev >= 4.5.3\\
	Sowohl die Server als auch die ClientGUI benutzen das Qt Framework in der Version 4. Ferner wird QtNetwork zur Kommunikation zwischen Server und Client benötigt und QtDbus zur Interprozesskommunikation zwischen Client-Daemon und GUI.
 \item qt4-dev-tools >= 4.5.3\\
	Dies wird nur benötigt, falls Unterstützung weiterer Sprachen implementiert werden soll, da in diesem Paket das Hilfsprogramm \textbf{linguist} enthalten ist.
 \item cmake >= 2.4.0\\
	Eingesetztes Buildsystem und der Makefile-Generator. Um distributionsspezifische Pakete zu erzeugen wird CPack benutzt.
 \item libxtst-dev, libxi-dev\\
	Diese Bibliotheken dienen zur Implementierung der Fernsteuerungsfunktionen.
\end{itemize}

\section{Kompilieren aus Quellen}
Sobald alle Voraussetzungen erfüllt und die Quellen installiert sind, kann das ausführbare Programm erzeugt werden. Falls gewünscht, kann zusätzlich in der Datei \textit{CMakeLists.txt} der Build-Type eingestellt werden. Gültige Werte sind \texttt{Debug} und \texttt{Release} und ihre Wirkung den zwei weiteren Zeilen zu entnehmen.
\begin{verbatim}
SET(CMAKE_BUILD_TYPE Debug)
SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g -Wall")
SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -march=native")
\end{verbatim}
Damit das Wurzelverzeichnis des Projekts weiterhin sauber bleibt (Übersicht beibehalten, Arbeit mit SVN erleichtern), werden wir hier einen Out-Of-Source Build durchführen. Dies bedeutet, dass zum Kompilieren ein seperates Verzeichnis benutzt wird und sämtliche automatisch generierten Dateien sowie das Kompilat selbst hier abgelegt wird. In einem Terminal sollte nun in das Verzeichnis indem sich das Projekt befindet gewechselt werden, um folgende Befehle ausführen zu können:\\

\textbf{mkdir -p build}\\
\textbf{cd build/}\\
\textbf{cmake ..}\\
\textbf{make}\\

Die verschiedenen Applikationen können nun folgendermaßen (in \textit{build/}) ausgeführt und getestet werden:
\begin{itemize}
 \item Den Server starten: \textbf{./pvsmgr}
 \item Den Server mit Touchscreenoberfläche starten: \textbf{./pvsmgrtouch}
 \item Den ClientDaemon starten: \textbf{./pvs}
 \item Die ClientGUI starten: \textbf{./pvsgui}
\end{itemize}

\section{Installation}
\index{Paket!RPM} \index{Paket!DPKG}
Nachdem das Projekt kompiliert wurde, kann es (als Superuser z.B. root) auf dem lokalen System installiert werden:\\
\textbf{make install}\\

Dabei werden folgende Dateien auf das aktuelle System übertragen:\\
\textit{/usr/local/bin/pvsmgr}\\
\textit{/usr/local/bin/pvs}\\
\textit{/usr/local/bin/pvsgui}\\
\textit{/usr/local/bin/pvsmgrtouch}\\
\textit{/usr/local/share/dbus-1/services/org.openslx.pvs.service}\\

Ein Vorteil ist, dass nun ein seperates Ausführen des Client-Daemon nicht mehr notwendig ist. Dieser wird ab sofort automatisch gestartet und beendet, sobald die ClientGUI ausgeführt wurde.\\

Es ist ebenfalls möglich, distributionsspezifische Pakete zu erstellen (zur Zeit nur .deb):\\
\textbf{make package}\\

Falls erfolgreich, befindet sich nun eine Installationsdatei (pvs-<version>-Linux.deb) in \textit{build/} die z.B. auf Debian-Derivaten mit \textbf{dpkg -i} installiert werden kann.\\
Anmerkung: Falls Pakete für Rechner gebaut werden sollen, die vom Erstellungssystem her verschieden sind, muß der Schalter \texttt{-march=native} in der Datei \textit{CMakeLists.txt} angepasst werden!
