我可以将 14.04 MongoDB 包与 16.04 一起使用吗?

我可以将 14.04 MongoDB 包与 16.04 一起使用吗?

不幸的是,Ubuntu 上 MongoDB 的官方软件包仍然停留在 2.6 版本,这个版本已经过时了(这个错误没有因为生动、狡猾或热情而被选中)。

MongoDB 尚未发布适用于 16.04(Xenial)的软件包,那么如何使用 14.04(Trusty)软件包在 16.04 上安装 MongoDB 3.2+?

答案1

这有点像 hack,但确实可以做到。实际启动服务需要执行一个未记录的步骤,并且(奇怪的是)除非您想手动处理 upstart 作业转换,否则您需要先安装 Ubuntu 包mongodb,然后将其删除,这样您才能获得可用的服务。直接安装 MongoDB 包不会为您提供有效的服务在新的 16.04 上。

更新 - 2016 年 7 月:官方已在 3.3 dev 分支中修复了这个问题(在软件包中添加了对 16.04 的支持),作为服务器-23043- 并已作为 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要归功于我们安装的两个软件包之间的细微差别。现在活动的服务默认指向旧格式的配置文件/etc/mongodb.conf- 如果您愿意,可以通过移动/复制配置文件进行切换mongod.confmongodb.conf或者直接编辑文件。

启动后,为了测试,使用mongoshell 连接到数据库:

$ 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 警告,请查看这个答案

答案2

如果你已经安装了它,请通过以下方式删除 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

相关内容