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?

Adam C
la source
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 .

Adam C
la source
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
-1

Si vous l'avez déjà installé, supprimez mongodb en:

sudo apt-get remove mongodb
sudo apt-get autoremove

Essayez avec recommandation sur digitalocean https://www.digitalocean.com/community/tutorials/how-to-install-mongodb-on-ubuntu-16-04

grey87
la source
3
Bien que votre réponse soit valide, il serait préférable de fournir les étapes répertoriées dans votre lien ici. Les liens et leur contenu peuvent changer au fil du temps, ce qui rendrait votre réponse inutile.
Videonauth