読者です 読者をやめる 読者になる 読者になる

tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

<mongodb path>/bin/mongod: cannot execute binary fileと怒られるエラーについて。64bit or 32bit?

はじめに

すっごく初歩的なミスだけどmongodbをインストールしていてタイトルのエラーが出たのでメモ。

結果的にはOSとmonbodbの対応bit数が違うというものなんだけど
エラーが出たことへのメモではなくやる前に確認しましょうという自分戒めメモw

mongodb導入の手順

導入手順としては以前自分でも書いた記事があるのでこちらを元に行います
mongodb入れてみるテスト(ダウンロード~web console~認証まで)

エラーが出たオペレーション

上述の記事の通りですがエラーが出るまでそんなに長くないオペレーションなので
ざざっと書いちゃいます

# pwd
/usr/local/src

※ mongodbのサイトよりダウンロードリンクのアドレスをコピーしてダウンロード
※ mongodbのサイト:http://www.mongodb.org/downloads
# curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.5.tgz

# ls -al
-rw-r-----  1 hoge hoge 115741898 10月 15 23:16 mongodb-linux-x86_64-2.6.5.tgz

※ 解凍したりディレクトリ作ったりもろもろ
# sudo cp mongodb-linux-x86_64-2.6.5.tgz /usr/local
# cd /usr/local
# sudo tar xvfz mongodb-linux-x86_64-2.6.5.tgz
# sudo rm mongodb-linux-x86_64-2.6.5.tgz 
# sudo ln -s mongodb-linux-x86_64-2.6.5 mongodb
# sudo mkdir -p /usr/local/mongodb/logs
# sudo mkdir -p /usr/local/mongodb/data/db

※ 起動&エラー?エラーというかなんというか。。。
# sudo /usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/data/db
/usr/local/mongodb/bin/mongod: /usr/local/mongodb/bin/mongod: cannot execute binary file

と、こんな感じで起動が実行できません。
すげー悩みに悩んだわけではないですが少しだけハマりそうになりました

osが32bitに対して、ダウンロードしたmongodbが64bit版だったのが原因です。

確認を忘れない良いオペレーション

こちらも以前書いたんですが、osが何bitかはunameコマンドでわかります
コマンドでOSが32bitか64bitか調べる方法(windows、mac、linux(centos))

# pwd
/usr/local/src

※ 
※ uname -aでosが何bitか確認
※ → 32bit!!!!
※ 
# uname -a
Linux hoge.local 2.6.18-128.el5 #1 SMP Wed Jan 21 10:44:23 EST 2009 i686 i686 i386 GNU/Linux

※ mongodbのサイトより32bit用のダウンロードリンクのアドレスをコピーしてダウンロード
※ mongodbのサイト:http://www.mongodb.org/downloads
# curl -O https://fastdl.mongodb.org/linux/mongodb-linux-i686-2.6.5.tgz

# ls -al
-rw-r-----  1 hoge hoge 115741898 10月 15 23:16 mongodb-linux-i686-2.6.5.tgz

※ 解凍したりディレクトリ作ったりもろもろ
# sudo cp mongodb-linux-i686-2.6.5.tgz /usr/local
# cd /usr/local
# sudo tar xvfz mongodb-linux-i686-2.6.5.tgz
# sudo rm mongodb-linux-i686-2.6.5.tgz 
# sudo ln -s mongodb-linux-i686-2.6.5 mongodb
# sudo mkdir -p /usr/local/mongodb/logs
# sudo mkdir -p /usr/local/mongodb/data/db

※ 起動
# sudo /usr/local/mongodb/bin/mongod --dbpath /usr/local/mongodb/data/db
2014-10-16T14:30:30.020+0900 
2014-10-16T14:30:30.020+0900 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.
2014-10-16T14:30:30.020+0900 
2014-10-16T14:30:30.025+0900 [initandlisten] MongoDB starting : pid=19752 port=27017 dbpath=/usr/local/mongodb/data/db 32-bit host=hoge.local
2014-10-16T14:30:30.025+0900 [initandlisten] 
2014-10-16T14:30:30.025+0900 [initandlisten] ** NOTE: This is a 32 bit MongoDB binary.
2014-10-16T14:30:30.025+0900 [initandlisten] **       32 bit builds are limited to less than 2GB of data (or less with --journal).
2014-10-16T14:30:30.025+0900 [initandlisten] **       Note that journaling defaults to off for 32 bit and is currently off.
2014-10-16T14:30:30.025+0900 [initandlisten] **       See http://dochub.mongodb.org/core/32bit
・・・省略・・・

わざわざ32bit版に対するこんな感じのwarningも出してくれるのでジャーナリングさせたい場合はオプションつけましょう

warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.

ジャーナリングに関してはこちらが参考になります
MongoDBの新機能:ジャーナリングについて詳しく

まとめ

ってことでお恥ずかしいあれですが気にせずメモ