Puis-je utiliser les packages MongoDB 14.04 avec 16.04?


10

Malheureusement, le paquet Ubuntu officiel pour MongoDB est toujours bloqué sur 2.6, qui est ancien à ce stade ( ce bug n'a pas été détecté pour vif, rusé ou xenial).

MongoDB n'a pas encore publié de package pour 16.04 (Xenial), alors comment puis-je utiliser les packages 14.04 (Trusty) pour installer MongoDB 3.2+ le 16.04?


Oui, vous pouvez. Si vous effectuez une mise à niveau, cela devrait être facile. Si vous avez récemment installé le 16.04, suivez simplement les étapes ici: askubuntu.com/questions/724749/…
— KhoPhi

@Rexford Comme vous le verrez dans la réponse ci-dessous, ce n'est pas si facile en 16.04 avec les anciens packages (le service ne sera pas installé correctement avec une nouvelle installation)
— Adam C

Réponses:


14

C'est un peu un hack mais oui, cela peut être fait. Il y a une étape non documentée nécessaire pour démarrer réellement le service et (assez bizarrement) à moins que vous ne vouliez faire un tour avec la conversion de travail par le haut manuellement, vous devez d'abord installer le mongodbpaquet Ubuntu , puis le supprimer afin d'avoir un service utilisable. Une installation directe des packages MongoDB ne vous donnera pas un service fonctionnel sur une nouvelle version 16.04.

Mise à jour - juillet 2016: le correctif officiel pour cela (ajout de la prise en charge de la version 16.04 aux packages) a été achevé dans la branche 3.3 dev dans le cadre de SERVER-23043 - et a été publié en tant que backport dans la série 3.2 dans le cadre de 3.2. 7 . Par conséquent, si vous utilisez 3.2.7+, vous n'avez pas besoin de le faire et l'installation officielle du package MongoDB devrait simplement fonctionner.

Dans tous les cas, après avoir effectué l'ajout / la suppression, suivez les instructions habituelles du 14.04, résumées ici:

# 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

L'installation réussit, et grâce au package Ubuntu, nous avons toutes les pièces nécessaires pour un service, mais tenter de démarrer le service échouera initialement:

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

Il n'est pas trop difficile de résoudre ce problème:

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

Maintenant, nous pouvons activer / démarrer le service, obtenir son statut, etc.

$ 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

Succès - et nous obtenons un joli pointeur vers le fichier de configuration actif (qui est dans l'ancien key=valueformat, voir ici pour des exemples dans le nouveau format YAML recommandé).

Remarque: Il y aura en fait deux fichiers de configuration /etc/mongod.confet /etc/mongodb.confgrâce à de légères différences entre les deux packages que nous avons installés. Le service maintenant actif pointe vers l'ancien format par défaut /etc/mongodb.conf- vous pouvez basculer en déplaçant / copiant le mongod.confvers mongodb.confsi vous le souhaitez, ou modifiez simplement le fichier directement.

Une fois démarré, pour tester, connectez-vous à la base de données avec le 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] 

Si vous souhaitez vous débarrasser des avertissements THP, consultez cette réponse .


1
Après votre premier bloc de code ci-dessus, l'exécution sudo service mongodb startrevient Failed to start mongodb.service: Unit mongodb.service not found.
— user1063287

1
J'ai essayé de résoudre ce qui précède en créant un fichier de service pour systemd (selon askubuntu.com/a/694226/367134 ). Voici le résultat: sudo service mongodb startne renvoie rien. sudo service mongodb statusrenvoie un message ayant échoué avec status=2. Pour résoudre ce problème, j'ai changé le chemin d'accès dans le fichier de service nouvellement créé de /etc/mongodb.confà /etc/mongod.conf. Sur la base de votre réponse originale, comment faire démarrer mongodb au démarrage du système?
— user1063287

1
L'action supplémentaire suivante a permis MongoDB pour démarrer au démarrage du système pour moi: sudo systemctl enable mongodb. Voir: digitalocean.com/community/tutorials/…
— user1063287

1
Ah, je suis sûr que je viens de laisser cette ligne en copiant / collant mes instructions, ou j'aurais échoué de la même manière, merci pour la tête
— Adam C

1
Certainement pas corrigé dans 3.2.8. Voir le dernier commentaire . Devrait être abordé en 3.2.9.
— Goran Miskovic

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.