Eu segui oinstruçõespara instalar o MongoDB via apt-get. Houve um problema com a verificação, mas rastrear isso no StackExchange indicou que era um problema conhecido com o processo de assinatura, então executei novamente apt-get install mongodb
sem o -y
sinalizador. A instalação foi bem-sucedida, ou assim parecia. Mas quando tentei iniciar o serviço, aconteceu isto:
$ 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)
Com certeza, o arquivo /etc/init.d/mongod
não existe. As instruções de instalação dizem explicitamente que este arquivo é fornecido:
O pacote mongodb-org inclui vários scripts de inicialização, incluindo o script de inicialização /etc/init.d/mongod.
O arquivo existe nas fontes do GitHub. Então posso continuar. Mas eu gostaria de saber por que um arquivo de configuração crítico está faltando em um pacote instalado com sucesso. (Chame-me de completista.)
Minha versão do Ubuntu é 16.10, que não é oficialmente suportada. Eu não acho que essa poderia ser a causa. A versão de lançamento poderia realmente ser a culpada? Ou foi um erro instalar os pacotes não assinados? Ou o próprio pacote está quebrado? Ou algo mais está acontecendo aqui?
Responder1
Eu estava errado. A incompatibilidade de lançamento é o problema. Parece que um script pós-instalação falhou silenciosamente, e é por isso que o arquivo ausente não existia.
A solução acabou sendo muito semelhante àessa questão, que sugere executareste roteiro.
Fiz pequenas alterações no script, de acordo com uma alteração nos locais de arquivo padrão do MongoDB 3.2.6. (As alterações não são estritamente necessárias. Só não gosto de cruft.) Anteriormente, os arquivos de dados estavam localizados no formato /data/db/
. O local padrão é agora /var/lib/mongodb/
e o local antigo não é mais usado. Então removi as linhas do script que se referem a esse caminho.
O Ubuntu agora usa o systemd por padrão em vez do Upstart, portanto /var/run/mongodb/
não é mais necessário. Apenas comentei essas linhas em vez de removê-las. Se você ainda estiver usando o Upstart por algum motivo, precisará descomentar as três linhas que se referem a esse caminho.
O script atualizado fica assim:
# 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