Script de inicialização do MongoDB 3.2.6 está faltando

5

Eu segui as rotas para instalar MongoDB via apt-get. Houve um problema com a verificação, mas o rastreamento no StackExchange indicou que era um problema conhecido no processo de assinatura, portanto, eu corri novamente o apt-get install mongodb sem o sinalizador -y . Instalação, em seguida, conseguiu, ou assim parecia. Mas quando tentei iniciar o serviço, isso aconteceu:

$ 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 explicitamente dizem que esse 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 no GitHub. Então eu posso continuar. Mas eu gostaria de saber por que um arquivo de configuração crítica está faltando em um pacote instalado com sucesso. (Me chame de um completo).

Meu lançamento do Ubuntu é 16.10, que não é oficialmente suportado. Eu não pensaria que 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 pacote está quebrado? Ou alguma outra coisa está acontecendo aqui?

    
por MTippetts 03.05.2016 / 23:32

1 resposta

3

Eu estava errado. A incompatibilidade de liberação é o problema. Parece que um script de pós-instalação estava falhando silenciosamente, e é por isso que o arquivo ausente não existia.

A solução acabou por ser muito semelhante a esta questão , o que sugere a execução este script .

Fiz pequenas alterações no script, de acordo com uma alteração nos locais de arquivo padrão do MongoDB 3.2.6. (As mudanças não são estritamente necessárias. Eu simplesmente não gosto de cruft.) Anteriormente, os arquivos de dados estavam localizados em /data/db/ . O local padrão agora é /var/lib/mongodb/ e o local antigo não é mais usado. Então eu removi as linhas no script que se referem a esse caminho.

O Ubuntu agora usa o systemd por padrão em vez do Upstart, então /var/run/mongodb/ não é mais necessário. Eu apenas comentei estas linhas em vez de removê-las. Se você ainda estiver usando o Upstart por qualquer motivo, precisará remover o comentário das três linhas que se referem a esse caminho.

O script atualizado é 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
    
por MTippetts 04.05.2016 / 04:05

Tags