MongoDB und Fedora 13

NoSQL ist ja zur Zeit in aller Munde. So habe ich mich mal umgeschaut, und will mich in Zukunft ein wenig mit MongoDB befassen. Und da es für MongoDB für fast alle Mainstream Programmiersprachen einen Treiber gibt, lohnt sich der Blick, aus meiner Sicht, auf jeden Fall.

Als erstes steht allerdings  erst einmal eine Installation auf meiner Fedora 13 Workstation an. Es gibt auf den Download-Seiten des Projekts fertige, generische Binaries und auch RPMs für Fedora/CentOS, jedoch für Fedora nur 11/12 und auch nur als x86_64. Also heißt die Devise: selber bauen. Da ich diese Schritte auch für Fedora Neulinge nachvollziebar halten will, fange ich wirklich ganz von Vorne an. Alles was hier beschrieben steht, außer die Installationen mit yum, wird als normaler $User ausgeführt.

1. Mit

yum install rpm-build rpmdevtools auto-buildrequires

werden die nötigen Tools, und deren Abhängigkeiten, installiert. Diese sind grundlegend für das Bauen der RPM-Pakete. Des weiteren installiert ihr mit

yum install gcc-c++ cons js-devel readline-devel boost-devel pcre-devel

alle anderen, für den Build der MongoDB RPMs, benötigten Sachen.

2. Mit einem beherzten Aufruf von rpmdev-setuptree erzeugt ihr die nötige Ordnerstruktur. Danach solltete ihr in $HOME folgendes vorfinden:

  • rpmbuild/BUILD
  • rpmbuild/RPMS
  • rpmbuild/SOURCES
  • rpmbuild/SPECS
  • rpmbuil/SRPMS

3. Ihr entpackt das runtergeladene tar.gz Archiv von MongoDB und sucht dort nach einem rpm-Ordner. In diesem befindet sich eine mongo.spec Datei. Kopiert die mongo.spec in den SPECS Ordner. Das Verzeichnis des entpackten Archivs benennt ihr nun einfach von mongodb-src-r${Version} in mongo-${Version} um und erzeugt mit diesem Ordner ein neues Archiv, welches dann z.B. mongo-1.4.2.tar.gz heißt. Dies hat mit einigen Kleinigkeiten in der spec-Datei zu tun. Ich werde hier, in den nächsten Tagen, eine überarbeitete Datei zum Download anbieten.

4. Dieses Archiv kopiert ihr nun in den SOURCES Ordner der zuvor erzeugten rmpbuild Umgebung.

5. Wechlselt in den rpmbuild Ordner und gebt jetzt einfach rpmbuild -ba –clean SPECS/mongo.spec ein. Sollte alles richtig installiert sein, beginnt jetzt der übliche configure, make und build Prozess. Es dauert eine Weile, je nachdem wieviel Leistung euer Rechner bietet.

6. Ist der Build-Prozess abgeschlossen, solltet ihr in RPMS/$(eure Architecktur) 4 rpm-Dateien vorfinden, die alle mongo-irgendwas.rpm heißen. Von diesen 4 benötigen wir nur den mongo-server und das mongo Paket. Diese beiden installieren wir nun mit

yum localinstall --nogpgcheck paket1 paket2

Wer an MongoDB selbst entwickeln möchte, oder aber z.B. eine Schnittstelle zu PHP braucht, der sollte auch das devel-Paket installieren.

7. Zum Schluß geben wir als root/sudo noch schnell service mongod start ein und können dann im Browser unsere Vertrauens, unter http://localhost:28017, unsere Installation bewundern.

So, das war’s für’s erste. Jetzt habt ihr unter Fedora 13 eine funktionierende MongoDB Installation am Laufen. Wenn ihr mit PHP entwickelt, reicht nun ein

pecl install mongo

, vorrausgesetzt ihr habt das devel-Paket von MongoDB installiert. Für Java gibt es auch passende JDBC-Treiber auf den Projektseiten.

4 Kommentare zu “MongoDB und Fedora 13”

  1. Daniel sagt:

    Hi,

    ich habe auch vor mich ein wenig in NoSQL-DBs einzuarbeiten. Ich werde jedoch wahrscheinlich die CouchDB ausprobieren. Was hat dich bewogen MongoDB zu wählen?

    lg

  2. Mario Guenterberg sagt:

    Hallo Daniel,

    ich habe mich deshalb für MongoDB entschieden, weil ich viel im Web-Bereich arbeite. Laut diversen Aussagen im Internet kann MongoDB dort sehr gut eingesetzt werden, ist leicht skalierbar und arbeitet nicht nach dem MVCC Prinzip. Schau dir mal diese doch recht objektive Gegenüberstellung an: http://www.mongodb.org/display/DOCS/Comparing+Mongo+DB+and+Couch+DB. Vor allem hat mich die enorme Vielfalt der vorhandenen Schnittstellen/Treiber, und der kaum vorhandene Overhead an Abhängigkeiten, überzeugt. Wenn ich sehe, was bei der Installation von CouchDB noch alles so auf die Platte will…

  3. Martin sagt:

    Ich have versucht mongo-1.6.2 nach Ihrem Rezept zu installieren. Nach dem es einige Zeit (1-2 min) kompiliert hat, stoppte der Prozess plötzlich mit der folgenden Errormeldung:

    Checking for unpackaged file(s): /usr/lib/rpm/check-files /home/martin/rpmbuild/BUILDROOT/mongo-1.6.2-mongodb_1.fc13.i386
    error: Installed (but unpackaged) file(s) found:
    /usr/bin/bsondump

    RPM build errors:
    Installed (but unpackaged) file(s) found:
    /usr/bin/bsondump

    Haben Sie eine Ahnung was ich falsch gemacht habe?

    Beste Grüsse

    Martin

  4. Mario Guenterberg sagt:

    Hallo Martin.

    Falsch, garnichts :-) Wenn eine neue Minor-Version erscheint, kann es vorkommen, das sich etwas an der API usw. ändert, oder neue Dateien hinzukommen, wie in diesem Fall. Schauen Sie in der spec-Datei einfach mal unter dem Punkt %files nach und tragen dort die fehlende Datei ein. Es müßte dann in so aussehen:

    %{_bindir}/bsondump

    Die obige Meldung besagt übrigens nur, das der Paketierungsprozess Dateien gefunden hat, mit denen er nichts anfangen kann, da sie nicht in seiner spec-Datei stehen. Das kann allerdings für noch einige Dateien vorkommen. Ich selbst habe die 1.6.x Version von mongodb aus Zeitmangel bisher noch nicht als Paket gebaut. Werde ich aber in den nächsten Tagen nachholen und hier dann berichten.

    Schönes Wochenende noch.
    Mario

Kommentar schreiben

XHTML: Sie können diese Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Rss Feed Tweeter button Facebook button Linkedin button Delicious button Digg button Flickr button