Чи можу я використовувати пакети MongoDB 14.04 з 16.04?


10

На жаль, офіційний пакет Ubuntu для MongoDB до сих пір застряг на 2.6, що є давнім на даний момент ( ця помилка не була підібрана для яскравих, хитрих чи ксеніальних).

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


Так, ти можеш. Якщо ви модернізуєте, це повинно бути легко. Якщо ви вперше
KhoPhi

@Rexford Як ви побачите у відповіді нижче, це не так просто в 16.04 зі старими пакетами (сервіс не буде встановлений належним чином із новою установкою)
Adam C

Відповіді:


14

Це трохи хак, але так, це можна зробити. Існує незадокументований крок, необхідний фактично запустити послугу, і (як не дивно), якщо ви не хочете розігнатися з перехідним перетворенням роботи вручну, вам потрібно спочатку встановити mongodbпакет Ubuntu , а потім видалити його, щоб у вас була послуга, що корисна. Безпосередня установка пакетів MongoDB не надасть вам робочої послуги з 16.04.

Оновлення - липень 2016: Офіційне виправлення цього (додавання підтримки до 16.04 до пакетів) було завершено у відділенні 3.3 dev як частина 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.
користувач1063287

1
Я намагався вирішити вищесказане, створивши сервісний файл для systemd (відповідно до askubuntu.com/a/694226/367134 ). Це результат: sudo service mongodb startнічого не повертає. sudo service mongodb statusповертає невдале повідомлення за допомогою status=2. Щоб виправити це, я змінив шлях у новоствореному файлі служби з /etc/mongodb.confна /etc/mongod.conf. Спираючись на свою оригінальну відповідь, як змусити mongodb запускатися при запуску системи?
користувач1063287

1
Наступні додаткові заходи дозволили MongoDB , щоб при запуску системи для мене sudo systemctl enable mongodb. Дивіться: digitalocean.com/community/tutorials/…
користувач1063287

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


3
Хоча ваша відповідь може бути достовірною, було б краще вказати кроки, перелічені у вашому посиланні тут. Посилання та їх зміст можуть змінюватися з часом, що зробить вашу відповідь марною.
Videonauth
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.