MongoDB 3.2.6 Init-Skript fehlt

MongoDB 3.2.6 Init-Skript fehlt

Ich folgte demRichtungenum MongoDB über apt-get zu installieren. Es gab einen Schluckauf bei der Überprüfung, aber als ich dies auf StackExchange nachverfolgte, stellte sich heraus, dass es sich um ein bekanntes Problem beim Signaturprozess handelte, also habe ich es apt-get install mongodbohne das -yFlag erneut ausgeführt. Die Installation war dann erfolgreich, oder so schien es zumindest. Aber als ich versuchte, den Dienst zu starten, passierte Folgendes:

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

Tatsächlich /etc/init.d/mongodexistiert die Datei nicht. In den Installationsanweisungen heißt es ausdrücklich, dass diese Datei bereitgestellt wird:

Das Paket mongodb-org enthält verschiedene Init-Skripte, darunter das Init-Skript /etc/init.d/mongod.

Die Datei existiert in den Quellen auf GitHub. Ich kann also weitermachen. Aber ich würde gerne wissen, warum eine kritische Konfigurationsdatei in einem erfolgreich installierten Paket fehlt. (Nennen Sie mich einen Komplettisten.)

Meine Ubuntu-Version ist 16.10, die nicht offiziell unterstützt wird. Ich würde nicht denken, dass das die Ursache sein könnte. Könnte wirklich die Version der Version schuld sein? Oder war es ein Fehler, die Pakete unsigniert zu installieren? Oder ist das Paket selbst kaputt? Oder ist hier etwas anderes los?

Antwort1

Ich habe mich einfach geirrt. Das Problem ist die Inkompatibilität der Version. Es scheint, als ob ein Post-Installationsskript stillschweigend fehlgeschlagen ist, weshalb die fehlende Datei nicht existierte.

Die Lösung erwies sich als sehr ähnlich zudiese Frage, was darauf hindeutet,dieses Skript.

Ich habe kleinere Änderungen am Skript vorgenommen, entsprechend einer Änderung der Standarddateispeicherorte für MongoDB 3.2.6. (Die Änderungen sind nicht unbedingt notwendig. Ich mag einfach keinen Ballast.) Bisher befanden sich Datendateien in /data/db/. Der Standardspeicherort ist jetzt /var/lib/mongodb/, und der alte Speicherort wird überhaupt nicht mehr verwendet. Daher habe ich die Zeilen im Skript entfernt, die auf diesen Pfad verweisen.

Ubuntu verwendet jetzt standardmäßig systemd statt Upstart und /var/run/mongodb/wird daher nicht mehr benötigt. Ich habe diese Zeilen nur auskommentiert, anstatt sie zu entfernen. Wenn Sie aus irgendeinem Grund immer noch Upstart verwenden, müssen Sie die drei Zeilen, die auf diesen Pfad verweisen, auskommentieren.

Das aktualisierte Skript sieht folgendermaßen aus:

# 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

verwandte Informationen