# CouchDB 3.4.2 unter Linux Mint 22 (Ubuntu 24.04) Derzeit (Dezember 2024) gibt es für »Ubuntu-24.04« bzw. darauf basierenden Linux-Distributionen noch immer keine fertigen Installationspakete, obwohl es sich bei »Ubuntu-24.04« um eine LTS-Version (»Long Term Support«) handelt (siehe: https://apache.jfrog.io/ui/native/couchdb-deb/dists/). Versucht man mit der standardmäßig installierbaren Erlang-Version »CouchDB« zu kompilieren, erhält man bereits in der Phase der Konfiguration die folgende Ausschrift: ``` ************************************************************************** This version of Erlang ("25.3.2.8") is known to contain bugs that directly affect the correctness of Apache CouchDB. You should *NOT* use this version of Erlang. See https://docs.couchdb.org/en/stable/install/unix.html#dependencies for the latest information on dependencies. ************************************************************************** ``` Vermutlich liegt darin der Grund für das Fehlen der Installationspakete. Im Folgenden soll gezeigt werden, wie es trotz des Erlang-Problems und weiterer Probleme gelingt, »CouchDB 3.4.2« unter »Ubuntu-24.04« zu kompilieren und zu installieren. ## Vorbereitung ### Installation notwendiger Pakete (Mit Root-Privilegien auszuführen.) ``` apt update apt install libicu-dev openssl make nodejs quickjs build-essential python3.12-venv help2man ``` ### Installation einer geeigneten Erlang-Version Die Version 26 hat sich als geeignet herausgestellt. Um sie zu installieren, ist dem System ein sogenanntes »PPA« (»Personal Package Archive«) bekannt zu machen (siehe: https://launchpad.net/~rabbitmq/+archive/ubuntu/rabbitmq-erlang-26). Normalerweise geschieht dies folgendermaßen: (Mit Root-Privilegien auszuführen.) ``` sudo add-apt-repository ppa:rabbitmq/rabbitmq-erlang-26 sudo apt update ``` In unserer Netzwerkumgebung führt das jedoch zu keinem positiven Ergebnis (»Timeout«). Die Ursache könnte beim Proxy-Server oder der Firewall liegen. Aus diesem Grunde wurde ein anderer Weg beschritten: * Datei `/etc/apt/sources.list.d/rabbitmq-rabbitmq-erlang-26-noble.list` mit folgendem Inhalt erzeugen: ``` deb https://ppa.launchpadcontent.net/rabbitmq/rabbitmq-erlang-26/ubuntu noble main ``` * »Signing key« beschaffen: ``` curl -sL "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xB279943D2A549531E144B875F77F1EDA57EBB1CC" \ | sudo apt-key add - mv /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d/rabbitmq-rabbitmq-erlang-26-noble.gpg ``` Die Angabe `0xB279943D2A5...` findt man unter »Technical details about this PPA« / »Signing key« auf der Erlang-PPA-Seite. Es kann sein, dass dieser Weg nicht ganz korrekt ist, da offenbar neuerdings `/usr/share/keyrings` statt `/etc/apt/trusted.gpg.d/` bevorzugt wird (TODO: nachlesen und ggf. ändern). * Installieren der Erlang-Pakete: ``` apt update apt install erlang erlang-reltool ``` * Korrektur eines »broken links« innerhalb der Erlang-Installation (Defekt der »cpp-man-page« von »cpp-13«): ``` apt install --install-suggests cpp-14 ln -sf /usr/share/man/man1/x86_64-linux-gnu-cpp-14.1.gz /usr/lib/erlang/man/man1/cpp.1.gz rm /usr/lib/erlang/man/man1/cpp-14.1 ``` Obwohl dieser Defekt eher formaler Natur ist, führt er später zu einem kritischen Problem. Anmerkung: Vermutlich ist mittlerweile (1/2025) dieses Problem bei dem standardmäßig installierten cpp-Paket bereits beseitigt, womit die beschriebenen Schritte unterbleiben können. ## Kompilieren von »CouchDB« ``` git clone https://github.com/apache/couchdb.git cd couchdb ./configure --js-engine=quickjs --disable-spidermonkey make release ``` Im Erfolgsfall befinden sich danach unterhalb des Verzeichnisses `rel/couchdb/` die zu installierenden Dateien. ## Installation von »CouchDB« ### Vorbereitung * Anlegen des Nutzers und der Gruppe »couchdb«: (Mit Root-Privilegien auszuführen.) ``` adduser --system \ --home /opt/couchdb \ --no-create-home \ --shell /bin/bash \ --group --gecos \ "CouchDB Administrator" couchdb ``` * Beschaffen der Systemd-Service-Datei: (Mit Root-Privilegien auszuführen.) ``` wget https://raw.githubusercontent.com/apache/couchdb-pkg/refs/heads/main/debian/couchdb.service \ -P /usr/lib/systemd/system/ ``` ## Installation und Start Das beim Kompilieren entstandene Verzeichnis mit allen enthaltenen Dateien ist an den korrekten Ort zu kopieren und der Eigentümer ist zu ändern. (Mit Root-Privilegien auszuführen.) ``` cp -R rel/couchdb /opt/ mkdir /var/lib/couchdb cd /opt/couchdb ln -s /var/lib/couchdb data chown -R couchdb:couchdb /opt/couchdb /var/lib/couchdb find /opt/couchdb -type d -exec chmod 0770 {} \; ``` Start des Systemd-Services: ``` systemctl enable couchdb.service systemctl start couchdb.service systemctl status couchdb.service ``` ## Bemerkungen zum Schluss Obwohl der beschriebene Weg offenbar erfolgreich ist, sollte weiterhin beobachtet werden, ob doch noch offizielle Installationspakete für »CouchDB« unter »Ubuntu 24.04« erscheinen (siehe: https://docs.couchdb.org/en/stable/install/unix.html und https://apache.jfrog.io/ui/native/couchdb-deb/dists/). Ist dies der Fall, sollten alle hier beschriebenen Schritte rückgängig gemacht werden und stattdessen auf die Installationspakete zurückgegriffen werden.