14.04で14.04 MongoDBパッケージを使用できますか?


10

残念ながら、MongoDBの公式Ubuntuパッケージはまだ2.6のままですが、これは現時点では古くからあります(このバグは、鮮やか、ワイリー、ゼニアルでは検出されませんでした)。

MongoDBはまだ16.04(Xenial)のパッケージをリリースしていません。14.04(Trusty)パッケージを使用して、MongoDB 3.2+を16.04にインストールする方法を教えてください。


はい、できます。アップグレードする場合、それは簡単なはずです。あなたが新鮮16.04をインストールした場合は、単にここでの手順に従います。askubuntu.com/questions/724749/...
KhoPhi

@Rexford以下の答えでわかるように、16.04では古いパッケージを使用するのはそれほど簡単ではありません(サービスを新規インストールすると正しくインストールされません)
Adam C

回答:


14

それは少しハックですが、はい、これは可能です。サービスを実際に開始するために必要な文書化されていない手順があります。(大胆に)アップスタートジョブの変換を手動で実行したくない場合は、まずUbuntu mongodbパッケージをインストールしてから削除し、使用可能なサービスを利用できるようにする必要があります。MongoDBパッケージ直接インストールしても、新しい16.04で機能するサービスは提供されません

アップデート-2016年7月:これに対する公式の修正(パッケージへの16.04のサポートの追加)は、SERVER-23043の一部として3.3 devブランチで完了し、3.2の一部として3.2シリーズのバックポートとしてリリースされました。 7。したがって、3.2.7以降を使用している場合は、これを行う必要はなく、公式のMongoDBパッケージのインストールがそのまま機能します。

いずれの場合も、追加/削除を行った後、14.04 の通常の手順に従っください。

# install the Ubuntu package (to get the service set up correctly)
sudo apt-get install mongodb
# Now remove it and continue with the MongoDB instructions
sudo apt-get remove mongodb
sudo apt-get autoremove
# import key
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
# add trusty repos
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
# update apt
sudo apt-get update
# install the MongoDB package
sudo apt-get install -y mongodb-org

インストールは成功し、Ubuntuパッケージのおかげでサービスに必要なすべての要素が揃っていますが、サービスを開始しようとすると最初は失敗します。

$ sudo service mongodb start
Failed to start mongodb.service: Unit mongodb.service is masked.

これを修正することはそれほど難しくありません:

$ sudo systemctl unmask mongodb
Removed symlink /etc/systemd/system/mongodb.service.

これで、サービスを有効化/開始し、そのステータスなどを取得できます。

$ sudo service mongodb enable
$ sudo service mongodb start
$ sudo service mongodb status
● mongodb.service - LSB: An object/document-oriented database
   Loaded: loaded (/etc/init.d/mongodb; bad; vendor preset: enabled)
   Active: active (running) since Thu 2016-04-14 16:40:35 IST; 7s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 2849 ExecStart=/etc/init.d/mongodb start (code=exited, status=0/SUCCESS)
 Main PID: 1593 (code=exited, status=0/SUCCESS)
    Tasks: 13 (limit: 512)
   Memory: 51.9M
      CPU: 100ms
   CGroup: /system.slice/mongodb.service
           └─2861 /usr/bin/mongod --config /etc/mongodb.conf

成功-アクティブな構成ファイルへの良いポインタが得られます(これは古いkey=value形式です。新しい推奨YAML形式の例については、こちらを参照してください)。

注:実際には二つの設定ファイルがあります/etc/mongod.confし、/etc/mongodb.conf我々がインストールされた2つのパッケージ間のわずかな違いに感謝。デフォルトでは、古い形式のいずれかに現在アクティブなサービスのポイントは/etc/mongodb.conf-あなたはコピー/移動することで切り替えることができますmongod.confへのmongodb.confあなたであればそう願いを、または単にファイルを直接編集します。

開始したら、テストするには、mongoシェルを使用してデータベースに接続します。

$ mongo
MongoDB shell version: 3.2.5
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
    http://docs.mongodb.org/
Questions? Try the support group
    http://groups.google.com/group/mongodb-user
Server has startup warnings: 
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] 
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] 
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] 
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] 
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] 

THP警告を取り除きたい場合は、この回答を確認してください。


1
上記のコードの最初のブロックの後、実行するとsudo service mongodb startreturnが返されますFailed to start mongodb.service: Unit mongodb.service not found
user1063287

1
systemdのサービスファイルを作成して(askubuntu.com/a/694226/367134に従って)、上記を解決しようとしました。これが結果ですsudo service mongodb start。何も返しません。sudo service mongodb statusで失敗したメッセージを返しますstatus=2。これを修正するために、新しく作成したサービスファイルのパスをからに変更し/etc/mongodb.confました/etc/mongod.conf。元の答えに基づいて、mongodbをシステムの起動時にどのように起動しますか?
user1063287

1
次の追加アクションにより、mongodbがシステムの起動時に起動できるようになりました sudo systemctl enable mongodb。参照: digitalocean.com/community/tutorials/...
user1063287

1
ああ、私が指示をコピー/貼り付けするときにその行を省略したことを確認します。そうでない場合、同様に失敗します。ヘッドアップしてくれてありがとう
Adam C

1
3.2.8では確実に修正されていません。最後のコメントを参照してください。3.2.9で取り組む必要があります。
Goran Miskovic

-1

すでにインストールしている場合は、mongodbを次の方法で削除します。

sudo apt-get remove mongodb
sudo apt-get autoremove

digitalocean https://www.digitalocean.com/community/tutorials/how-to-install-mongodb-on-ubuntu-16-04の推奨事項を試してください


3
あなたの答えは有効かもしれませんが、こちらのリンクに記載されている手順を提供することをお勧めします。リンクとそのコンテンツは時間の経過とともに変化し、回答が役に立たなくなる可能性があります。
Videonauth 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.