Могу ли я использовать пакеты MongoDB 14.04 с 16.04?

10

К сожалению, официальный пакет Ubuntu для MongoDB все еще застрял на версии 2.6, которая на данный момент является древней ( эта ошибка не была обнаружена для ярких, хитрых или ксениальных).

MongoDB еще не выпустила пакет для 16.04 (Xenial), так как я могу использовать пакеты 14.04 (Trusty) для установки MongoDB 3.2+ на 16.04?

Адам С
источник
Да, ты можешь. Если вы обновляетесь, это должно быть легко. Если вы только что установили 16.04, просто следуйте инструкциям
KhoPhi
@Rexford Как вы увидите в ответе ниже, в 16.04 со старыми пакетами не все так просто (служба не будет правильно установлена ​​при новой установке)
Адам С

Ответы:

14

Это что-то вроде хака, но да, это можно сделать. Существует недокументированный шаг, необходимый для фактического запуска службы, и (как ни странно), если вы не хотите вручную переходить с преобразования upstart, вам нужно mongodbсначала установить пакет Ubuntu , а затем удалить его, чтобы у вас была работоспособная служба. Прямая установка пакетов MongoDB не даст вам работающий сервис на свежем 16.04.

Обновление - июль 2016 года . Официальное исправление для этого (добавление поддержки 16.04 в пакеты) было завершено в ветке разработчика 3.3 как часть SERVER-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.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 startвозвращается 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.
Горан Мискович
-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

grey87
источник
3
Хотя ваш ответ может быть действительным, было бы лучше указать шаги, указанные в вашей ссылке здесь. Ссылки и их содержание могут со временем меняться, что сделает ваш ответ бесполезным.
Видеонавт