मैं MongoDB कैसे बना सकता हूं?


10

ऐसा लगता है कि वर्तमान में इस बारे में जाने के दो तरीके हैं:

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

मैं mongo-nonx86कांटे के लिए बस गया । मैं रास्पबेरी पाई में स्थापित Mongodb में वर्णित निर्भरताएं स्थापित करता हूं और उपयोग करके MongoDB बनाने की कोशिश करता हूंscons । लेकिन मुझे निम्नलिखित त्रुटि मिलती है:

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.

संकलन mongopiउसी त्रुटि संदेश के साथ सटीक फ़ाइल पर रुक जाएगा।

इस बीच, मुझे एहसास हुआ कि मेरा सिस्टम नाटकीय रूप से पुराना था। लेकिन नवीनतम संस्करणों में अपग्रेड करने से भी समस्या हल नहीं हुई। इस बिंदु पर, मैं मान रहा हूं कि यह वास्तव में मुक्त स्मृति के साथ एक मुद्दा है। यह देखते हुए कि मेरे पास केवल 256 एमबी मॉडल है।


एक स्मृति मुद्दा हो सकता है - क्या आपने मेमोरी विभाजन को कॉन्फ़िगर किया है? जीसीसी चलाने से पहले आपके पास कितनी मुफ्त मेमोरी है?
abolotnov

@abolotnov: जैसे ही मेरा संकलन mongopiपूरा होता है, मैं उन लोगों को जवाब दूंगा ; डी के रूप में मैं अभी उस एवेन्यू की खोज कर रहा हूं
Der Hochstapler

@abolotnov: मेमोरी स्प्लिट 224/32 है। free -m177 मुफ्त दिखाता है।
डेर होकस्टापलर

1
Mongodb बाइनरी communityआर्क एआरएम डिस्ट्रो पर रिपॉजिटरी में है ।
Jivings

@ शिवलिंग: आर्क का उपयोग करने के लिए एक शॉट के लायक हो सकता है, क्योंकि मैं व्हीजी रिलीज पर इसे संकलित करने के साथ कहीं नहीं जा रहा हूं।
डेर होकस्टापलर

जवाबों:


9

कृपया ध्यान दें कि यह उत्तर केवल रास्पबेरी पाई के 256 एमबी संस्करण पर लागू होता है। 512 एमबी संस्करण में अतिरिक्त समायोजन के बिना MongoDB संकलित करने के लिए पर्याप्त मुक्त मेमोरी होनी चाहिए

सामान्य रूप से कम-मेमोरी स्थिति के बारे में पढ़ते हुए, मुझे स्थिति को मापने के लिए बस स्वैप स्पेस बढ़ाने के सुझाव मिले।

इसलिए, भालू के जवाब को पढ़ने के बाद , मुझे विश्वास हो गया कि यह एक वैध विकल्प हो सकता है। हालाँकि, मैंने zRAM का उपयोग किए बिना स्वैप स्थान जोड़ने का विकल्प चुना ।

चूँकि मैं किसी भी चीज़ के लिए पूरी प्रक्रिया को कभी याद नहीं रख सकता, इसलिए मैंने गाइड लिनक्स के बाद एक स्वैप फाइल जोड़ें - निक्सन द्वारा हाउटो।

  1. स्वैप फ़ाइल / संग्रहण स्थान बनाएँ:

    sudo dd if=/dev/zero of=/swapfile1 bs=1024 count=524288
    
  2. स्वैप स्थान के रूप में स्थान सेट करें:

    sudo mkswap /swapfile1
    
  3. केवल रूट को पढ़ने / लिखने की अनुमति दें:

    sudo chmod 0600 /swapfile1
    
  4. स्वैप क्षेत्र सक्षम करें:

    sudo swapon /swapfile1
    

बाद में, sconsसफलतापूर्वक पूरा हुआ और मैं MongoDB स्थापित करने में सक्षम था। मैंने mongopiअंत में कांटे का इस्तेमाल किया ।

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

मुझे एक मॉडल B पर समान समस्या थी और इस समाधान ने काम किया। Thx
Mircea Nistor

तुम बहुत ओलिंपिक धन्यवाद। मैं यह बताना चाहता हूं कि मॉडल बी में मेरे लिए पर्याप्त मुफ्त मेमोरी नहीं थी और इस सलाह का पालन करने के बाद स्थापना ने काम किया। क्या आप इस उत्तर में अपने नोट को बदलने पर विचार करेंगे कि मॉडल बी के दो लोगों को आपके चरणों का पालन करने की आवश्यकता है?
मैथ्यू मोइज़

@MatthewMoisen: मेरे पास एक मॉडल B के साथ भी यह समस्या थी। लेकिन मेरा 256 एमबी रैम वाला पहला संशोधन था। केवल दूसरे संशोधन में 512 एमबी मिला।
डेर होकस्टापलर

1

मेरे पास एक विकल्प है जो काम कर सकता है । हालाँकि, यह संभवतः आपकी संकलन प्रक्रिया को नाटकीय रूप से धीमा कर देगा।

आपको अपने पाई पर ZRAM सेट करने की आवश्यकता है। मूल रूप से यह आपको अधिक उपयोग करने की अनुमति देने के लिए उपयोग की गई रैम को संपीड़ित करता है, लेकिन अधिक सीपीयू उपयोग की कीमत पर।

हम यहां दिए गए निर्देशों का पालन ​​करेंगे लेकिन मैं उन्हें आसानी से देखने के लिए पोस्ट में डालूंगा।

इसलिए पहले, आपको रूट होने की आवश्यकता है क्योंकि इनमें से बहुत सी कमांड के लिए रूट की आवश्यकता है

sudo su

फिर, /etc/init.d/zramनिम्नलिखित सामग्रियों के साथ एक फाइल बनाएं :

#!/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

यदि आप चाहते हैं पाई पर इसे पाने के लिए एक आसान तरीका: sudo wget http://vps1.berboe.co.uk/zram.sh -O /etc/init.d/zram

फिर, अपनी स्क्रिप्ट को स्टार्ट-एट-बूट सूची में जोड़कर करें:

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

फिर रिबूट और यह सब काम करना चाहिए।

रिबूट के बाद, यह कमांड चलाएँ swapon -s:। आउटपुट कुछ इस तरह होना चाहिए:

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

अब, ZRAM स्थापित किया गया है और यदि आप संकलित करने का प्रयास करते हैं, तो इससे पहले कि आप काम कर सकें।


इस सुझाव के लिए धन्यवाद! मैंने अभी के लिए zram का उपयोग किए बिना अतिरिक्त स्वैप स्थान जोड़ा है। अब संकलन जारी रखने की कोशिश की जा रही है।
डेर होकस्टापलर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.