Seguí eldireccionespara instalar MongoDB a través de apt-get. Hubo un problema con la verificación, pero rastrearlo en StackExchange indicó que era un problema conocido con el proceso de firma, así que volví a ejecutar apt-get install mongodb
sin la -y
bandera. La instalación fue exitosa, o eso parecía. Pero cuando intenté iniciar el servicio, sucedió esto:
$ 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)
Efectivamente, el archivo /etc/init.d/mongod
no existe. Las instrucciones de instalación dicen explícitamente que se proporciona este archivo:
El paquete mongodb-org incluye varios scripts de inicio, incluido el script de inicio /etc/init.d/mongod.
El archivo existe en las fuentes de GitHub. Así puedo seguir. Pero me gustaría saber por qué falta un archivo de configuración crítico en un paquete instalado correctamente. (Llámame completista).
Mi versión de Ubuntu es 16.10, que no es compatible oficialmente. No creo que esa pueda ser la causa. ¿Podría ser la versión de lanzamiento realmente la culpable? ¿O fue un error instalar los paquetes sin firmar? ¿O el paquete está roto? ¿O está pasando algo más aquí?
Respuesta1
Simplemente estaba equivocado. La incompatibilidad de versiones es el problema. Parece que un script posterior a la instalación fallaba silenciosamente, razón por la cual el archivo que faltaba no existía.
La solución resultó ser muy similar aesta pregunta, lo que sugiere correreste guión.
Hice cambios menores en el script, de acuerdo con un cambio en las ubicaciones de archivos predeterminadas para MongoDB 3.2.6. (Los cambios no son estrictamente necesarios. Simplemente no me gusta el cruft). Anteriormente, los archivos de datos se ubicaban en /data/db/
. La ubicación predeterminada es ahora /var/lib/mongodb/
y la ubicación anterior ya no se utiliza en absoluto. Entonces eliminé las líneas del script que hacen referencia a esa ruta.
Ubuntu ahora usa systemd de forma predeterminada en lugar de Upstart, por lo que /var/run/mongodb/
ya no es necesario. Simplemente comenté estas líneas en lugar de eliminarlas. Si todavía estás usando Upstart por cualquier motivo, deberás descomentar las tres líneas que hacen referencia a esta ruta.
El script actualizado tiene este aspecto:
# 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