MongoDB 3.2.6 の init スクリプトが見つかりません

MongoDB 3.2.6 の init スクリプトが見つかりません

私は方向apt-get 経由で MongoDB をインストールします。検証で問題が発生しましたが、StackExchange で追跡すると、署名プロセスの既知の問題であることがわかったので、apt-get install mongodbフラグなしで再実行しました-y。その後、インストールは成功したように見えました。しかし、サービスを開始しようとすると、次の問題が発生しました。

$ 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)

案の定、ファイルは/etc/init.d/mongod存在しません。インストール手順では、このファイルが提供されていることが明示的に記載されています。

mongodb-org パッケージには、init スクリプト /etc/init.d/mongod を含むさまざまな init スクリプトが含まれています。

ファイルは GitHub のソースに存在します。したがって、作業を続けることができます。ただし、正常にインストールされたパッケージから重要な構成ファイルが欠落している理由を知りたいです。(私を完璧主義者と呼んでください。)

私の Ubuntu リリースは 16.10 ですが、これは公式にはサポートされていません。これが原因であるとは思えません。リリース バージョンが本当に原因なのでしょうか? それとも、署名されていないパッケージをインストールしたのが間違いだったのでしょうか? それとも、パッケージ自体が壊れているのでしょうか? それとも、他に何か問題がありますか?

答え1

私が間違っていました。リリースの非互換性が問題です。インストール後のスクリプトがサイレントに失敗していたため、不足しているファイルが存在しなかったようです。

解決策は、この質問、これは実行を示唆しているこのスクリプト

MongoDB 3.2.6 のデフォルトのファイルの場所の変更に合わせて、スクリプトに小さな変更を加えました。(変更は厳密には必要ではありません。私は単に不要なものが嫌いなのです。) 以前は、データ ファイルは に配置されていました/data/db/。現在のデフォルトの場所は であり/var/lib/mongodb/、古い場所はまったく使用されなくなりました。そのため、そのパスを参照するスクリプトの行を削除しました。

Ubuntu は現在、Upstart ではなく systemd をデフォルトで使用するため、/var/run/mongodb/不要になりました。これらの行は削除するのではなく、単にコメント アウトしました。何らかの理由で Upstart をまだ使用している場合は、このパスを参照する 3 行のコメントを解除する必要があります。

更新されたスクリプトは次のようになります。

# 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

関連情報