[[Vorlage(Archiviert)]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Paketquellen freischalten: Bearbeiten von Paketquellen] [:Programme kompilieren: Pakete aus dem Quellcode erstellen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] [:Packprogramme: Archive entpacken] }}} [[Inhaltsverzeichnis()]] Leider ist die Version von [:CouchDB:] aus den Paketquellen von [:Lucid:Ubuntu 10.04] vergleichsweise alt und bietet z.B nur eine rudimentäre Nutzerverwaltung. Wer mit CouchDB entwickeln möchte, ist sicher an einer aktuelleren Version interessiert. Für einen „normalen“ Desktop ist dies jedoch nicht notwendig. {{{#!vorlage Warnung Auf Desktop-Systemen führt die Deinstallation des Paketes '''couchdb-bin''' zur Deinstallation zahlreicher Abhängigkeiten. Damit gehen eventuell gespeicherte Daten, wenigstens aber der Zugriff darauf verloren. Es wird auch auf Desktop-Systemen laut der [http://wiki.apache.org/couchdb/Installing_on_Ubuntu Installationsanleitung des Herstellers] {en} eine Parallelinstallation empfohlen. }}} Es wird aus Gründen der Einfachheit eine Parallelinstallation beschrieben, da alle Informationen für eine Einzelinstallation enthalten sind. Dies hat nebenbei den Vorteil, dass man so mehrere Versionen von CouchDB auf einem Rechner betreiben kann. An diesem Punkt können also die Pakete '''couchdb''' und '''couchdb-bin''' installiert sein bzw. bleiben. = Installation = == Vorbereitung == Einen laufenden CouchDB-Server sollte man den sicherheitshalber stoppen. Dazu ein Terminal öffnen und folgendes eingeben: {{{#!vorlage Befehl sudo service couchdb stop }}} Des Weiteren ist es wie immer ratsam, eine [:CouchDB#Datensicherung:Sicherung] der aktuellen CouchDB-Datenbank(en) anzulegen. == Pakete zum Kompilieren installieren == Man benötigt zunächst die Quellen von CouchDB. Dazu einfach aus der [http://www.apache.org/dyn/closer.cgi?path=/couchdb/ Liste der Spiegelserver] {en} die entsprechende Version heraussuchen und herunterladen und entpacken[6]. Weiterhin werden noch folgende Pakete für einen erfolgreichen Bau benötigt. Alle Pakete, die auf "-dev" enden, sowie das Paket '''build-essential''' können nach Abschluss der Installation entfernt werden. {{{#!vorlage Paketinstallation erlang erlang-dev erlang-eunit libicu-dev libcurl4-openssl-dev libgjs-dev libmozjs-dev build-essential }}} == Weitere Quellen == Leider ist das benötigte Spidermonkey seit Ubuntu 10.04 nicht mehr in den offiziellen Paketquellen enthalten. Um auf einen eigenen Bau zu verzichten, kann man auf die Entwickler-Quellen zugreifen[2]: {{{#!vorlage Befehl sudo add-apt-repository ppa:launchpad/ppa sudo aptitude update sudo aptitude install spidermonkey-bin libmozjs-dev }}} Das PPA kann ebenfalls nach Abschluss der Installation wieder deaktiviert werden. ==Kompilieren== Nun zum eigentlichen Kompilieren. Es bietet sich an, die Installation als Paket zu sichern und deshalb '''checkinstall''' zu verwenden. Hierfür muss gegebenenfalls das Paket [packages:checkinstall:] installiert werden. Danach navigiert man im Terminal in den Ordner mit den entpackten Quellen und führt dort folgenden Befehl aus[4]: {{{#!vorlage Befehl ./configure --prefix=/opt/couchdb-1.0.1 }}} Danach kann wie gewohnt kompiliert und installiert werden[3]. Nimmt man den Weg über checkinstall, können die Quellen nach der Installation sämtlich gelöscht werden. Es ist aber in diesem Fall dringend ein Paketname zu verwenden, der in den Quellen noch nicht verwendet wird. Zum Beispiel: '''couchdb-bin-custom-1.0.1''' == Tests der Installation == Die installierten Dateien sind nun in '''/opt/couchdb-1.0.1/''' zu finden. Sollte der Benutzer '''couchdb''' zu diesem Zeitpunkt noch nicht im System angelegt sein, ist dies nun zu tun[4]: {{{#!vorlage Befehl sudo adduser --system --home=/opt/couchdb-1.0.1/ --no-create-home --disabled-password couchdb --shell=/bin/bash }}} Um den CouchDB-Server startbar zu machen, müssen noch verschiedene Verzeichnisrechte angepasst werden. Da die die genannten Verzeichnisse erst beim ersten Start des Servers erstellt werden, sind sie eventuell vorher anzulegen: {{{#!vorlage Befehl sudo mkdir -p couchdb /opt/couchdb-1.0.1/var/{lib,log,run}/couchdb/ sudo chown -R couchdb /opt/couchdb-1.0.1/var/{lib,log,run}/couchdb/ /opt/couchdb-1.0.1/etc/couchdb }}} Der Server kann nun zum Test gestartet werden. Es ist darauf zu achten, dass ein eventuell konkurrierender CouchDB-Dienst gestoppt ist. {{{#!vorlage Befehl sudo /opt/couchdb-1.0.1/etc/init.d/couchdb start }}} Jetzt sollte der Server laufen und anfragen entgegen nehmen. Es empfiehlt sich, an dieser Stelle die integrierten Testroutinen einmal anzustoßen, damit man einen groben Überblick über die implementierten Funktionalitäten bekommt: {{{#!vorlage Befehl netstat -ant | grep 5984 }}} Dieser Befehl sollte folgendes Ergebnis produzieren: {{{ tcp 0 0 127.0.0.1:5984 0.0.0.0:* LISTEN }}} Eine kurze Anfrage via [:cURL:] sollte die Version und eine Willkommensmeldung zurückgeben (das Paket '''curl''' muss eventuell zusätzlich installiert werden): {{{#!vorlage Befehl curl http://127.0.0.1:5984/ }}} Abschließend noch ein Funktionstest mittels Webbrowser, wozu man folgende URL aufruft: {{{ http://127.0.0.1:5984/_utils/couch_tests.html?script/couch_tests.js }}} Dann alle Tests durchlaufen lassen. Dies funktioniert nur bei einer Desktop Installation, wo auf dem gleichen Rechner auch ein Browser installiert ist. Bei Server-Installationen muss vorher in '''/opt/couchdb-1.0.1/etc/couchdb/local.ini''' die Direktive `bind_address` so abgeändert werden, dass der CouchDB Dienst an einem erreichbaren IP-Adresse und Port lauscht. Alternativ kann man sich den Port natürlich auch ein seinen eigenen lokalen Host binden. In diesem Fall sollte man darauf achten, dass nicht am eigenen `localhost` ein CouchDB-Dienst läuft. Dieser ist entweder zu stoppen oder ein anderer Port anzugeben. {{{#!vorlage Befehl ssh -N -f -L 5984:127.0.0.1:5984 benutzer@server }}} Sollten alle Tests abgeschlossen sein, ist der Server zunächst wieder zu stoppen. {{{#!vorlage Befehl sudo /opt/couchdb-1.0.1/etc/init.d/couchdb stop }}} {{{#!vorlage Hinweis Es ist möglich, dass nicht alle Tests erfolgreich abgeschlossen werden können. Dies bedeutet nicht unbedingt, dass die Datenbank nicht nutzbar ist oder nicht funktioniert. }}} == Integration ins System == Nun ist der CouchDB-Server installiert, aber noch nicht in das System integriert. Um den Server wie gewohnt als Dienst startbar zu machen, wird ein Link auf den Starter unter '''/etc/init.d/''' erzeugt. {{{#!vorlage Befehl sudo ln -s /opt/couchdb-1.0.1/etc/init.d/couchdb /etc/init.d/couchdb-1.0.1 }}} Danach kann man den Dienst wie gewohnt starten: {{{#!vorlage Befehl sudo /etc/init.d/couchdb-1.0.1 start }}} Auch der alte CouchDB-Server ist natürlich noch startbar: {{{#!vorlage Befehl sudo /etc/init.d/couchdb-1.0.1 stop sudo /etc/init.d/couchdb start }}} {{{#!vorlage Warnung Wenn man beide Server auf dem gleichen Port unter einer gemeinsamen IP startet, können unter Umständen Zombie-Prozesse entstehen. Diese müssen dann gewaltsam beendet werden, damit der Server wieder erfolgreich an einen Port binden kann. Es ist daher unbedingt notwendig, für jeden CouchDB-Server die Voreinstellungen in '''PREFIX/etc/couchdb/local.ini''' anzupassen. }}} Sind die Voreinstellungen korrekt, können beide Server problemlos nebeneinander betrieben werden. Abschließend fügt man den neuen Server noch zum Autostart hinzu. {{{#!vorlage Befehl sudo update-rc.d couchdb-1.0.1 defaults }}} == Aufräumen == Die folgenden Schritten sind optional, halten aber das System sauber. * Pakete entfernen: * '''build-essential''' * '''libicu-dev''' * '''libcurl4-openssl-dev''' * '''libgjs-dev''' * '''libmozjs-dev''' * Entwickler-Quellen ausschalten[2], z.B. über[4]: {{{#!vorlage Befehl sudo rm /etc/apt/sources.list.d/launchpad-ppa-lucid.list sudo aptitude update }}} = Links= * [:CouchDB:] - Hauptartikel #tag: Server, Datanbanken