Wie kann ich MongoDB erstellen?

10

Mir scheint, es gibt derzeit zwei Möglichkeiten:

  1. https://github.com/skrabban/mongo-nonx86
  2. https://github.com/RickP/mongopi

Ich entschied mich für die mongo-nonx86Gabel. Ich habe die Abhängigkeiten wie unter Install Mongodb in Raspberry Pi beschrieben installiert und versucht, MongoDB mit zu erstellen scons. Aber ich bekomme folgenden Fehler:

generate_buildinfo(["build/buildinfo.cpp"], ['\n#include <string>\n#include <boost/version.hpp>\n\n#include "mongo/util/version.h"\n\nnamespace mongo {\n    const char * gitVersion() { return "%(git_version)s"; }\n    std::string sysInfo() { return "%(sys_info)s BOOST_LIB_VERSION=" BOOST_LIB_VERSION ; }\n}  // namespace mongo\n'])
gcc -o build/linux2/normal/third_party/pcre-8.30/pcre_exec.o -c -fPIC -fno-strict-aliasing -Wstrict-aliasing -ggdb -pthread -Wall -Wsign-compare -Wno-unknown-pragmas -Wcast-align -Winvalid-pch -O3 -DBOOST_ALL_NO_LIB -D_SCONS -DMONGO_EXPOSE_MACROS -DSUPPORT_UTF8 -D_FILE_OFFSET_BITS=64 -DJS_C_STRINGS_ARE_UTF8 -DMONGO_HAVE_HEADER_UNISTD_H -DMONGO_HAVE_EXECINFO_BACKTRACE -DHAVE_SYNC_FETCH_AND_ADD -DALIGNMENT_IMPORTANT -DHAVE_BSWAP32 -DHAVE_BSWAP64 -DHAVE_CONFIG_H -Ibuild/linux2/normal/third_party/boost -Isrc/third_party/boost -Ibuild/linux2/normal/third_party/pcre-8.30 -Isrc/third_party/pcre-8.30 -Ibuild/linux2/normal -Isrc -Ibuild/linux2/normal/mongo -Isrc/mongo src/third_party/pcre-8.30/pcre_exec.c
gcc: internal compiler error: Killed (program cc1)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.6/README.Bugs> for instructions.
scons: *** [build/linux2/normal/third_party/pcre-8.30/pcre_exec.o] Error 4
scons: building terminated because of errors.

Das Kompilieren mongopiwird bei genau derselben Datei mit derselben Fehlermeldung beendet.

In der Zwischenzeit stellte ich fest, dass mein System dramatisch veraltet war. Aber selbst ein Upgrade auf die neuesten Versionen hat das Problem nicht gelöst. An dieser Stelle gehe ich davon aus, dass es sich tatsächlich um ein Problem mit dem freien Speicher handelt. Da ich nur ein frühes 256 MB Modell habe.

Der Hochstapler
quelle
könnte ein Speicherproblem sein - haben Sie die Speicheraufteilung konfiguriert? Wie viel freien Speicher haben Sie, bevor Sie gcc ausführen?
Abolotnov
@abolotnov: Ich werde diese beantworten, sobald meine Zusammenstellung von mongopiabgeschlossen ist; D Während ich gerade diese Straße erkunde
Der Hochstapler
@abolotnov: Speicheraufteilung ist 224/32. free -mzeigt 177 frei.
Der Hochstapler
1
Mongodb Binary befindet sich im communityRepository der Arch ARM Distribution.
Jivings
@Jivings: Könnte einen Versuch wert sein, Arch zu verwenden, da ich mit dem Kompilieren in der Wheezy-Version nirgendwo hin will.
Der Hochstapler

Antworten:

9

Bitte beachten Sie, dass diese Antwort nur für die 256-MB-Version des Raspberry Pi gilt. Die 512-MB-Version sollte über ausreichend freien Speicher verfügen, um MongoDB ohne zusätzliche Anpassungen zu kompilieren

Beim Lesen über Situationen mit wenig Arbeitsspeicher im Allgemeinen fand ich Vorschläge, den Swap-Bereich einfach zu vergrößern, um die Situation zu beheben.

Nachdem ich die Antwort von Bearbin gelesen hatte , war ich überzeugt, dass dies eine gültige Option sein könnte. Ich habe mich jedoch dafür entschieden, Swap Space ohne Verwendung von zRAM hinzuzufügen .

Da ich mich für nichts an den vollständigen Prozess erinnern kann , habe ich die Anleitung Linux Add a Swap File - Howto von Nixcraft befolgt.

  1. Auslagerungsdatei / Speicherplatz erstellen:

    sudo dd if=/dev/zero of=/swapfile1 bs=1024 count=524288
    
  2. Platz als Tauschbereich einrichten:

    sudo mkswap /swapfile1
    
  3. Lassen Sie root nur lesen / schreiben:

    sudo chmod 0600 /swapfile1
    
  4. Swap-Bereich aktivieren:

    sudo swapon /swapfile1
    

Danach sconserfolgreich abgeschlossen und ich konnte MongoDB installieren. Ich habe mongopiam Ende die Gabel benutzt.

db level locking enabled: 1
mongod --help for help and startup options
Sun Feb 10 13:05:33
Sun Feb 10 13:05:33 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.
Sun Feb 10 13:05:33
Sun Feb 10 13:05:33 [initandlisten] MongoDB starting : pid=2182 port=27017 dbpath=/data/db/ 32-bit host=raspberrypi
Sun Feb 10 13:05:33 [initandlisten]
Sun Feb 10 13:05:33 [initandlisten] ** NOTE: This is a development version (2.1.1) of MongoDB.
Sun Feb 10 13:05:33 [initandlisten] **       Not recommended for production.
Sun Feb 10 13:05:33 [initandlisten]
Sun Feb 10 13:05:33 [initandlisten] ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
Sun Feb 10 13:05:33 [initandlisten] **       see http://blog.mongodb.org/post/137788967/32-bit-limitations
Sun Feb 10 13:05:33 [initandlisten] **       with --journal, the limit is lower
Sun Feb 10 13:05:33 [initandlisten]
Sun Feb 10 13:05:33 [initandlisten] db version v2.1.1, pdfile version 4.5
Sun Feb 10 13:05:33 [initandlisten] git version: f457ff42ec37f2562d1a5ff06b4d96a861414c94
Sun Feb 10 13:05:33 [initandlisten] build info: Linux raspberrypi 3.2.27+ #250 PREEMPT Thu Oct 18 19:03:02 BST 2012 armv6l BOOST_LIB_VERSION=1_49
Sun Feb 10 13:05:33 [initandlisten] options: {}
Sun Feb 10 13:05:34 [initandlisten] waiting for connections on port 27017
Sun Feb 10 13:05:34 [websvr] admin web console waiting for connections on port 28017
Der Hochstapler
quelle
Ich hatte das gleiche Problem bei einem Modell B und diese Lösung funktionierte. Thx
Mircea Nistor
VIELEN DANK OLIVER. Ich möchte darauf hinweisen, dass Modell B nicht genügend freien Speicher für mich hatte und dass die Installation nach Befolgung dieses Hinweises funktioniert hat. Würde es Ihnen etwas ausmachen, Ihre Notiz in dieser Antwort zu ändern, um zu berücksichtigen, dass zwei Personen mit Modell B Ihre Schritte befolgen müssen?
Matthew Moisen
@MatthewMoisen: Ich hatte dieses Problem auch mit einem Modell B. Aber meine war die erste Revision mit 256 MB RAM. Nur die zweite Revision bekam 512 MB.
Der Hochstapler
1

Ich habe eine Option, die funktionieren könnte . Dies wird Ihren Kompilierungsprozess jedoch wahrscheinlich dramatisch verlangsamen.

Sie müssen ZRAM auf Ihrem Pi einrichten. Grundsätzlich wird der verwendete RAM komprimiert, damit Sie mehr verwenden können, jedoch auf Kosten einer höheren CPU-Auslastung.

Wir werden den Anweisungen hier folgen , aber ich werde sie zur leichteren Anzeige in den Beitrag einfügen.

Zunächst müssen Sie root sein, da für viele dieser Befehle root erforderlich ist:

sudo su

Erstellen Sie dann eine aufgerufene Datei /etc/init.d/zrammit folgendem Inhalt:

#!/bin/bash

### BEGIN INIT INFO
#Provides: zram
#Required-Start:
#Required-Stop:
#Default-Start: 2 3 4 5
#Default-Stop: 0 1 6
#Short-Description: Increased Performance In Linux With zRam (Virtual Swap Compressed in RAM)
#Description: Adapted for Raspian (Rasberry pi) by eXtremeSHOK.com using https://raw.github.com/gionn/etc/master/init.d/zram
### END INIT INFO

start() {
    mem_total_kb=$(grep MemTotal /proc/meminfo | grep -E --only-matching '[[:digit:]]+')

    modprobe zram

    sleep 1
    #only using 50% of system memory, comment the line below to use 100% of system memory
    mem_total_kb=$((mem_total_kb/2))

    echo $((mem_total_kb * 1024)) > /sys/block/zram0/disksize

    mkswap /dev/zram0

    swapon -p 100 /dev/zram0
}

stop() {
    swapoff /dev/zram0
    sleep 1
    rmmod zram
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        sleep 3
        start
        ;;
    *)
        echo "Usage: $0 {start|stop|restart}"
        RETVAL=1
esac

Wenn Sie einen einfachen Weg suchen, um es auf den Pi zu bekommen : sudo wget http://vps1.berboe.co.uk/zram.sh -O /etc/init.d/zram.

Fügen Sie dann Ihr Skript zur Start-beim-Start-Liste hinzu, indem Sie Folgendes tun:

chmod +x /etc/init.d/zram
update-rc.d zram defaults

Dann neu starten und alles sollte funktionieren.

Führen Sie nach dem Neustart den folgenden Befehl aus : swapon -s. Die Ausgabe sollte ungefähr so ​​aussehen:

Filename Type Size Used Priority
/var/swap file 524284 0 -1
/dev/zram0 partition 237900 0 100

Jetzt ist ZRAM installiert und wenn Sie versuchen, wie zuvor zu kompilieren, funktioniert es möglicherweise.

hifkanotiks
quelle
Danke für diesen Vorschlag! Ich habe einfach zusätzlichen Swap-Speicher hinzugefügt, ohne vorerst zram zu verwenden. Ich versuche jetzt, die Kompilierung fortzusetzen.
Der Hochstapler