Das Init-Skript MongoDB 3.2.6 fehlt

8

Ich folgte den Anweisungen , um MongoDB über apt-get zu installieren. Es gab einen Schluckauf mit der Überprüfung, aber das Aufspüren auf StackExchange zeigte an, dass es sich um ein bekanntes Problem beim Signaturprozess handelte, sodass ich apt-get install mongodbohne das -yFlag erneut ausgeführt wurde. Die Installation war dann erfolgreich, oder so schien es. 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)

Sicher genug, die Datei /etc/init.d/mongodexistiert nicht. In den Installationsanweisungen wird ausdrücklich angegeben, dass diese Datei bereitgestellt wird:

Das mongodb-org-Paket enthält verschiedene Init-Skripte, einschließlich des Init-Skripts /etc/init.d/mongod.

Die Datei existiert in den Quellen auf GitHub. Also kann ich weitermachen. Aber ich möchte wissen, warum eine kritische Konfigurationsdatei in einem erfolgreich installierten Paket fehlt. (Nennen Sie mich einen Komplettisten.)

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

MTippetts
quelle
Interessanterweise hat mongo funktioniert, aber die Datei /etc/init.d/mongod ist nie zurückgekommen. Ich folgte den Schritten aus der Antwort von @MTippetts.
Tony

Antworten:

6

Ich habe mich einfach geirrt Die Release-Inkompatibilität ist das Problem. Es scheint, dass ein Skript nach der Installation stillschweigend fehlgeschlagen ist, weshalb die fehlende Datei nicht vorhanden war.

Die Lösung war dieser Frage sehr ähnlich , was darauf hindeutet, dieses Skript auszuführen .

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

Ubuntu verwendet jetzt standardmäßig systemd anstelle von Upstart und wird daher /var/run/mongodb/nicht mehr benötigt. Ich habe diese Zeilen nur auskommentiert, anstatt sie zu entfernen. Wenn Sie Upstart aus irgendeinem Grund immer noch 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
MTippetts
quelle