web-dev-qa-db-fra.com

Le script d'initialisation MongoDB 3.2.6 est manquant

J'ai suivi le instructions pour installer MongoDB via apt-get. Il y avait un problème avec la vérification, mais le fait de le retrouver sur StackExchange a indiqué qu'il s'agissait d'un problème connu lié au processus de signature. J'ai donc relancé apt-get install mongodb sans l'indicateur -y. L'installation a ensuite réussi, semblait-il. Mais quand j'ai essayé de démarrer le service, c'est arrivé:

$ Sudo service mongod start
[Sudo] password for mark: 
Failed to start mongod.service: Unit mongod.service not found.
$ Sudo service mongod status
● mongod.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)

Effectivement, le fichier /etc/init.d/mongod n'existe pas. Les instructions d'installation indiquent explicitement que ce fichier est fourni:

Le paquetage mongodb-org comprend divers scripts d'initialisation, notamment le script d'initialisation /etc/init.d/mongod.

Le fichier existe dans les sources sur GitHub. Donc je peux continuer. Mais j'aimerais savoir pourquoi un fichier de configuration critique manque dans un package installé avec succès. (Appelez-moi un completiste.)

Ma version Ubuntu est la version 16.10, qui n’est pas officiellement prise en charge. Je ne pense pas que cela pourrait être la cause. La version de publication pourrait-elle vraiment être à blâmer? Ou était-ce une erreur d'installer les paquets non signés? Ou le paquet lui-même est-il cassé? Ou est-ce que quelque chose d'autre se passe ici?

7
MTippetts

J'avais juste tort. L'incompatibilité de publication est le problème. Il semble qu'un script de post-installation échouait silencieusement, c'est pourquoi le fichier manquant n'existait pas.

La solution s'est avérée très similaire à cette question , ce qui suggère de lancer ce script .

J'ai apporté des modifications mineures au script, conformément à une modification des emplacements de fichiers par défaut pour MongoDB 3.2.6. (Les modifications ne sont pas strictement nécessaires. Je n'aime pas trop cruel.) Auparavant, les fichiers de données se trouvaient dans /data/db/. L'emplacement par défaut est maintenant /var/lib/mongodb/ et l'ancien emplacement n'est plus du tout utilisé. J'ai donc supprimé les lignes du script qui font référence à ce chemin.

Ubuntu utilise maintenant systemd par défaut plutôt que Upstart, donc /var/run/mongodb/ n'est plus nécessaire. Je viens de commenter ces lignes plutôt que de les supprimer. Si vous utilisez toujours Upstart pour une raison quelconque, vous devez supprimer les trois lignes qui font référence à ce chemin.

Le script mis à jour ressemble à ceci:

# enable_mongo.sh

echo '[Unit]
Description=High-performance, schema-free document-oriented database
After=syslog.target network.target

[Service]
User=mongodb
Group=mongodb
ExecStart=/usr/bin/mongod -f /etc/mongod.conf

[Install]
WantedBy=multi-user.target' > /lib/systemd/system/mongod.service

# Setup the required directories
# mkdir -p /var/run/mongodb/
mkdir -p /var/log/mongodb/
mkdir -p /var/lib/mongodb/

# chown mongodb:mongodb /var/run/mongodb/
chown mongodb:mongodb /var/log/mongodb/
chown mongodb:mongodb /var/lib/mongodb/

# chmod 0755 /var/run/mongodb/
chmod 0755 /var/log/mongodb/
chmod 0755 /var/lib/mongodb/

# Start the new service and enable it on boot
systemctl --system daemon-reload
systemctl enable mongod.service

echo "Starting"
systemctl start mongod.service
6
MTippetts