8

如果我将非 ASCII 字符添加到 MongoDB 数据库,那么所有 db.find() 都无法告诉“检测到非 ascii 字符”。

这是 SpiderMonkey 的问题,我必须使用 UTF-8 支持重建它。我试过像 http://www.mongodb.org/display/DOCS/Building+Spider+Monkey

但它不起作用(在我完成所有步骤后没有安装SpiderMonkey)。

我有 Ubuntu 11.04。有没有人指示如何让它在那里工作?

工作说明如何使用 Google V8 制作 MongoDB 也可以提供帮助。

4

2 回答 2

14

我在 Ubuntu Server 11.04 上使用 MongoDB,在使用以下指令安装全新操作系统后安装它:http ://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages 开箱即用一切正常. 从头开始构建 MongoDB 对您来说至关重要吗?

于 2011-06-08T14:46:54.800 回答
5

使用 10gen-published 包可以正常工作,但如果您真的想从源代码编译 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/lib 链接到 /usr/local /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,则这些库本身)。理想的解决方案是构建自己的包来解决依赖问题。

于 2011-12-06T16:44:17.353 回答