Comment installer les pilotes MongoDB C ++ pour Ubuntu?

J’ai téléchargé le dernier pilote C ++ de MongoDB, http://downloads.mongodb.org/cxx-driver/mongodb-linux-x86_64-2.5.2.tgz . Quand je fais des «scons», ça marche bien. Une fois le bâtiment terminé, je reçois les informations suivantes:

ranlib build/libmongoclient.a Install file: "build/libmongoclient.a" as "libmongoclient.a" scons: done building targets. 

Il dit qu’il installe mongo, mais je voudrais installer la lib et les en-têtes à un endroit approprié, comme / usr / local. Quoi que j’essaye (installer des scons, avec ou sans préfixe), il ne veut tout simplement pas l’installer dans / usr / local. En fait, il est dit que la cible d’installation est à jour:

 $sudo scons install --prefix=/usr/local scons: Reading SConscript files ... Checking for C++ library boost_thread-mt... (cached) yes Checking for C++ library boost_filesystem-mt... (cached) yes Checking for C++ library boost_system-mt... (cached) yes Checking for sasl_version_info(0, 0, 0, 0, 0, 0) in C library sasl2... (cached) yes Checking for C++ header file execinfo.h... (cached) yes Checking whether backtrace is declared... (cached) yes Checking whether backtrace_symbols is declared... (cached) yes Checking whether backtrace_symbols_fd is declared... (cached) yes scons: done reading SConscript files. scons: Building targets ... scons: `install' is up to date. scons: done building targets. 

Devrais-je utiliser d’autres parameters pour l’installer? Pour la bibliothèque, je peux simplement le copier, mais les en-têtes seraient plus fastidieux à installer manuellement.

EDIT : Cet article génère beaucoup de trafic, mais décrit comment créer le pilote “Legacy C ++”, désormais officiellement obsolète. Le pilote C ++ hérité a été rendu obsolète par le nouveau pilote C ++ 11. Le nouveau pilote C ++ 11 devrait être le premier choix lors de l’écriture d’une application cliente en C ++ qui communiquera avec MongoDB. Les informations sur la façon de construire le nouveau pilote C ++ 11 sont disponibles ici:

https://github.com/mongodb/mongo-cxx-driver/wiki/Quickstart-Guide-(New-Driver)

EDIT : Veuillez noter que cette réponse est obsolète. La réponse de Tyler ci-dessous est la réponse correcte pour tous les utilisateurs modernes du pilote C ++.

Je déconseille d’essayer d’utiliser l’archive du pilote C ++ à partir de la version 2.5 (ou, d’ailleurs, dans la version 2.4) pour créer la bibliothèque de pilotes.

Le meilleur moyen de générer le pilote C ++ provient de l’archive complète de la source mongodb. Il y a plusieurs raisons à cela, mais la plus importante est que la version tarball n’offre qu’un système de construction très minimal. Comme vous l’avez remarqué, il n’a pas de cibles d’installation. Une autre limitation est que la génération d’archive tar ne peut pas produire un object partagé, alors que les sources complètes peuvent le faire.

Voici quelques instructions de base sur la construction du pilote C ++ à partir des sources mongodb principales:

  • Clonez les sources mongodb depuis https://github.com/mongodb/mongo
  • Exécutez scons --prefix= --full --use-system-all install-mongoclient
  • Si vous voulez une bibliothèque partagée (prise en charge dans la dernière version 2.4 et la dernière version 2.5), ajoutez --sharedclient à la ligne ci-dessus.
  • Si vous voulez une version de débogage de la bibliothèque, passez soit --dd (2.4), soit --dbg=on (pointe de 2,5 du tronc).

Le --use-system-all est très important: son utilisation empêche la création de versions vendues dans des versions comme boost et pcre qui viennent avec les sources mongodb principales. Vous ne voulez pas que votre bibliothèque soit construite sur ces bibliothèques, car la bibliothèque résultante ne sera pas appropriée pour être mélangée avec des applications créées avec les versions système de ces bibliothèques. Ceci est particulièrement important lors de la construction avec --sharedclient .

Un des défis avec ce qui précède est que lors de la construction avec --use-system-all , le système de construction vérifie la présence de différentes bibliothèques sur le système. Certaines de ces bibliothèques, telles que la v8, peuvent ne pas être disponibles. Sous 2.4, vous devez soit installer une version applicable de la bibliothèque, soit modifier le SConstruct pour empêcher les appels CheckLib recherchant la bibliothèque. Sous 2.5, ce n’est pas un problème car les bibliothèques manquantes provoquent l’échec de la génération uniquement si vous essayez de créer une cible qui dépend de la bibliothèque manquante. Comme la construction du pilote client C ++ ne dépend que d’un petit nombre de bibliothèques (comme boost), il est beaucoup plus facile de travailler.

Je recommande également de créer avec un argument test --prefix premier lieu pour vous assurer que les actions d’installation sont comme vous le souhaitez.

J’espère que cela t’aides.

Actuellement, le meilleur moyen d’installer le pilote MongoDB C ++ consiste à aller dans le repository officiel de github et à lire la page wiki “Télécharger et comstackr” .

Il existe trois twigs du référentiel (deux offrant actuellement un stream de publication stable). La première série de versions stables s’appelle 26compat (compatible MongoDB 2.6) et contient le code source extrait de la version 2.6 de MongoDB (avec des modifications mineures pour le rendre indépendant). Il est conçu pour remplacer le code existant construit autour du pilote C ++.

L’autre version de la version stable porte le nom de legacy et est similaire à la twig 26compat, mais contient des améliorations en amont et de nombreuses améliorations et corrections importantes. C’est le bon sharepoint départ pour de nouveaux projets . Les projets existants utilisant l’ancien “pilote de serveur” ou le pilote 26compat devraient également avoir pour objective de passer à la série de versions héritées stable.

Si cela vous intéresse, vous pouvez en lire plus sur les changements ici, mais en général, vous aurez plus de facilité à utiliser ce que nous fournissons maintenant dans le repository github. Alors que le pilote C ++ était techniquement disponible auparavant via la source du serveur, il n’était pas vraiment destiné à être utilisé en externe à MongoDB. Maintenant, le code que nous fournissons dans le référentiel officiel est destiné à être utilisé en externe et pris en charge par l’équipe de pilotes C ++.

Nous travaillons également sur un tout nouveau pilote conçu pour C ++ 11 sur la twig principale, mais qui n’est pas encore prêt pour la production. Nous vous encourageons à essayer et à fournir des commentaires.

Malheureusement, la bibliothèque n’est pas automatiquement installée. Il est compilé pour que vous puissiez dissortingbuer la bibliothèque avec votre application. L’inclusion du fichier cpp ou de l’utilisation du fichier d’archive n’est pas recommandée.

Veuillez consulter la documentation à ce lien: http://docs.mongodb.org/ecosystem/tutorial/download-and-comstack-cpp-driver/#download-and-comstack-cpp-driver

Le meilleur, Charlie