MongoDB SpiderMonkey не понимает UTF-8 - PullRequest
8 голосов
/ 07 июня 2011

Если я добавлю не-ASCII символы в базу данных MongoDB, то все db.find () не сообщат «Обнаружен не ascii символ».

Это проблема SpiderMonkey, я должен перестроить его с поддержкой UTF-8,Я пытался сделать это, как в http://www.mongodb.org/display/DOCS/Building+Spider+Monkey

, но это не работает (SpiderMonkey не устанавливается после того, как я выполнил все шаги).

У меня есть Ubuntu 11.04,Кто-нибудь есть инструкция, как заставить его работать там ?

Рабочая инструкция, как заставить работать MongoDB с Google V8 также может помочь.

Ответы [ 2 ]

14 голосов
/ 08 июня 2011

Я использую MongoDB на Ubuntu Server 11.04, установил его после установки новой ОС, используя эту инструкцию: http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages Все отлично работает из коробки. Для вас важно создать MongoDB с нуля?

5 голосов
/ 06 декабря 2011

Использование 10gen-опубликованных пакетов работает нормально, но если вы действительно хотите скомпилировать SpiderMonkey из исходного кода с поддержкой UFT-8:

curl -O ftp://ftp.mozilla.org/pub/mozilla.org/js/js185-1.0.0.tar.gz
tar xvzf js185-1.0.0.tar.gz
cd js-1.8.5/js/src
export CFLAGS="-DJS_C_STRINGS_ARE_UTF8"
export CXXFLAGS="-DJS_C_STRINGS_ARE_UTF8"

А затем следуйте инструкциям https://developer.mozilla.org/En/SpiderMonkey/Build_Documentation

autoconf-2.13
./configure
make
make install
cp js /usr/local/bin/

Это установит в / usr / local / lib, однако пакет mongodb ищет его в / usr / lib (где установлен пакет spidermonkey). Итак, мы связываем все установленные файлы с / usr / local / lib из / usr / lib

ln -s /usr/local/lib/libmozjs185.so /usr/lib/libmozjs185.so
ln -s /usr/local/lib/libmozjs185.so.1.0 /usr/lib/libmozjs185.so.1.0
ln -s /usr/local/lib/libmozjs185.so.1.0.0 /usr/lib/libmozjs185.so.1.0.0
ln -s /usr/local/lib/libmozjs185-1.0.a /usr/lib/libmozjs185-1.0.a

Конечно, вы можете просто переместить их в / usr / lib вместо символьных ссылок, но я хотел, чтобы библиотеки с поддержкой utf находились вдали от места по умолчанию, чтобы избежать конфликтов с пакетом spidermonkey по умолчанию. Без установленного пакета libmozjs apt жалуется, что зависимости для mongodb не удовлетворяются, поэтому я оставил его установленным.

Имейте в виду, что если пакет spidermonkey будет обновлен, он может перезаписать символические ссылки на наши новые библиотеки (или сами библиотеки, если вы переместили их в / usr / local / lib). Идеальным решением было бы создать собственный пакет для решения проблем зависимости навсегда.

...