web-dev-qa-db-fra.com

Puis-je utiliser les packages 14.04 MongoDB avec 16.04?

Malheureusement, le paquet officiel Ubuntu pour MongoDB est toujours bloqué sur la version 2.6, qui est ancienne à ce stade ( ce bogue n’a pas été prise en compte pour les couleurs vives, astucieuses ou xéniales).

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

10
Adam C

C'est un peu un bidouillage mais oui, cela peut être fait. Il faut une étape non documentée pour démarrer le service et (assez bizarrement), à moins que vous ne souhaitiez modifier manuellement la conversion des tâches en amont, vous devez d'abord installer le paquet Ubuntu mongodb, puis le supprimer pour obtenir un service utilisable. Une installation directe des packages MongoDB ne vous donnera pas de service opérationnel sur une nouvelle version 16.04.

Mise à jour - juillet 2016: Le correctif officiel pour cela (ajout de la prise en charge de 16.04 dans les packages) a été complété dans la branche de développement 3.3 dans le cadre de - SERVER-2304 - et a été publié en tant que backport dans la série 3.2 en tant que élément de 3.2.7 . Par conséquent, si vous utilisez 3.2.7+, vous n'en avez pas besoin et l'installation officielle du paquet MongoDB devrait simplement fonctionner.

Dans tous les cas, après avoir ajouté/supprimé, suivez les instructions habituelles pour 14.04, résumé 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 aboutit et, grâce au paquet Ubuntu, nous disposons de toutes les pièces nécessaires à un service, mais toute tentative de démarrage du service échouera initialement:

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

Réparer ce n'est pas trop difficile:

$ 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 pointeur de Nice sur le fichier de configuration actif (qui est dans l'ancien format key=value, voir ici pour obtenir des exemples dans le format YAML recommandé plus récent).

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

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

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

14
Adam C