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


10

不幸的是,MongoDB的官方Ubuntu软件包仍然停留在2.6上,这在当时是很古老的(此错误并未因生动,狡猾或xenial而被拾取)。

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


是的你可以。如果要升级,这应该很容易。如果您是新安装的16.04,只需按照以下步骤操作:askubuntu.com/questions/724749/…–
KhoPhi

@Rexford正如您将在下面的答案中看到的那样,使用旧软件包在16.04中并不是那么容易(通过全新安装无法正确安装该服务)
Adam C

Answers:


14

有点hack,但是可以的。要真正启动该服务,需要执行一个未记录的步骤,(足够奇怪的是)除非您希望手动进行新手作业转换,否则您需要先安装Ubuntu mongodb软件包,然后再删除它,以便获得可用的服务。直接安装MongoDB软件包不会为您提供全新的16.04 服务

更新-2016年7月:针对此问题的正式修补程序(对软件包增加了对16.04的支持)已作为SERVER-23043的一部分在3.3 dev分支中完成-并已作为3.2系列的backport作为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.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 '16

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 '16

1
以下附加操作使mongodb对我而言可以在系统启动时启动: sudo systemctl enable mongodb。请参阅: digitalocean.com/community/tutorials/...
user1063287

1
啊,可以肯定的是,我在复制/粘贴我的说明时只是把那行留在了外面,否则我也同样会失败,感谢大家的注意
Adam C

1
绝对不是在3.2.8中修复的。请参阅最后一条评论。应在3.2.9中解决。
Goran Miskovic

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.