Kann ich 14.04 MongoDB-Pakete mit 16.04 verwenden?

10

Leider steckt das offizielle Ubuntu-Paket für MongoDB immer noch auf 2.6, was zu diesem Zeitpunkt uralt ist ( dieser Fehler wurde nicht für lebhaft, listig oder xenial aufgegriffen).

MongoDB hat noch kein Paket für 16.04 (Xenial) veröffentlicht. Wie kann ich also die 14.04 (Trusty) -Pakete verwenden, um MongoDB 3.2+ am 16.04 zu installieren?

Adam C.
quelle
Ja, du kannst. Wenn Sie ein Upgrade durchführen, sollte es einfach sein. Wenn Sie 16.04 neu installiert haben, folgen Sie einfach den Schritten hier: askubuntu.com/questions/724749/…
KhoPhi
@ Rexford Wie Sie in der Antwort unten sehen werden, ist es in 16.04 mit den alten Paketen nicht ganz so einfach (der Dienst wird bei einer Neuinstallation nicht richtig installiert)
Adam C

Antworten:

14

Es ist ein bisschen wie ein Hack, aber ja, das kann man machen. Es ist ein undokumentierter Schritt erforderlich, um den Dienst tatsächlich zu starten, und (seltsamerweise) müssen Sie das Ubuntu- mongodbPaket zuerst installieren und dann entfernen, damit Sie einen verwendbaren Dienst haben, es sei denn, Sie möchten die Konvertierung von Upstart-Jobs manuell durchführen . Eine direkte Installation der MongoDB-Pakete bietet Ihnen keinen funktionierenden Service für einen neuen 16.04.

Update - Juli 2016: Der offizielle Fix für dieses Problem (Hinzufügen von Unterstützung für 16.04 zu den Paketen) wurde im 3.3 -Entwicklungszweig als Teil von SERVER-23043 abgeschlossen - und als Backport in der 3.2-Serie als Teil von 3.2 veröffentlicht. 7 . Wenn Sie 3.2.7+ verwenden, müssen Sie dies nicht tun, und die offizielle Installation des MongoDB-Pakets sollte einfach funktionieren.

Befolgen Sie in jedem Fall nach dem Hinzufügen / Entfernen die üblichen Anweisungen für 14.04, die hier zusammengefasst sind:

# install the Ubuntu package (to get the service set up correctly)
sudo apt-get install mongodb
# Now remove it and continue with the MongoDB instructions
sudo apt-get remove mongodb
sudo apt-get autoremove
# import key
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
# add trusty repos
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
# update apt
sudo apt-get update
# install the MongoDB package
sudo apt-get install -y mongodb-org

Die Installation ist erfolgreich, und dank des Ubuntu-Pakets verfügen wir über alle für einen Dienst erforderlichen Komponenten. Der Versuch, den Dienst zu starten, schlägt jedoch zunächst fehl:

$ sudo service mongodb start
Failed to start mongodb.service: Unit mongodb.service is masked.

Dies zu beheben ist nicht allzu schwer:

$ sudo systemctl unmask mongodb
Removed symlink /etc/systemd/system/mongodb.service.

Jetzt können wir den Dienst aktivieren / starten, seinen Status abrufen usw.

$ sudo service mongodb enable
$ sudo service mongodb start
$ sudo service mongodb status
● mongodb.service - LSB: An object/document-oriented database
   Loaded: loaded (/etc/init.d/mongodb; bad; vendor preset: enabled)
   Active: active (running) since Thu 2016-04-14 16:40:35 IST; 7s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 2849 ExecStart=/etc/init.d/mongodb start (code=exited, status=0/SUCCESS)
 Main PID: 1593 (code=exited, status=0/SUCCESS)
    Tasks: 13 (limit: 512)
   Memory: 51.9M
      CPU: 100ms
   CGroup: /system.slice/mongodb.service
           └─2861 /usr/bin/mongod --config /etc/mongodb.conf

Erfolg - und wir erhalten einen schönen Zeiger auf die aktive Konfigurationsdatei (die im alten key=valueFormat vorliegt, siehe hier für Beispiele im neueren empfohlenen YAML-Format).

Hinweis: Es gibt tatsächlich zwei Konfigurationsdateien /etc/mongod.confund /etc/mongodb.confdank geringfügiger Unterschiede zwischen den beiden von uns installierten Paketen. Der jetzt aktive Dienst verweist standardmäßig auf das alte Format. /etc/mongodb.confSie können wechseln, indem Sie das auf verschieben / kopieren mongod.conf, mongodb.confwenn Sie dies wünschen, oder die Datei einfach direkt bearbeiten.

Stellen Sie nach dem Start zum Testen eine Verbindung zur Datenbank mit der mongoShell her:

$ mongo
MongoDB shell version: 3.2.5
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
    http://docs.mongodb.org/
Questions? Try the support group
    http://groups.google.com/group/mongodb-user
Server has startup warnings: 
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] 
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] 
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] 
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] 
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] 

Wenn Sie die THP-Warnungen entfernen möchten, lesen Sie diese Antwort .

Adam C.
quelle
1
Nach dem ersten Codeblock oben ausgeführt sudo service mongodb startkehrt Failed to start mongodb.service: Unit mongodb.service not found.
user1063287
1
Ich habe versucht, das oben genannte Problem zu beheben, indem ich eine Servicedatei für systemd erstellt habe (gemäß askubuntu.com/a/694226/367134 ). Dies ist das Ergebnis: sudo service mongodb startGibt nichts zurück. sudo service mongodb statusgibt eine fehlgeschlagene Nachricht mit zurück status=2. Um dies zu beheben, habe ich den Pfad in der neu erstellten Servicedatei von /etc/mongodb.confnach geändert /etc/mongod.conf. Wie bringen Sie Mongodb auf der Grundlage Ihrer ursprünglichen Antwort dazu, beim Systemstart zu starten?
user1063287
1
Die folgende zusätzliche Aktion ermöglichte es mongodb, beim Systemstart für mich zu starten : sudo systemctl enable mongodb. Siehe: digitalocean.com/community/tutorials/…
user1063287
1
Ah, ziemlich sicher, dass ich diese Zeile beim Kopieren / Einfügen meiner Anweisungen einfach weggelassen habe, sonst wäre ich ähnlich gescheitert, danke für das Heads-up
Adam C
1
In 3.2.8 definitiv nicht behoben. Siehe den letzten Kommentar . Sollte in 3.2.9 angegangen werden.
Goran Miskovic
-1

Wenn Sie es bereits installiert haben, entfernen Sie mongodb durch:

sudo apt-get remove mongodb
sudo apt-get autoremove

Versuchen Sie es mit einer Empfehlung zu digitalocean https://www.digitalocean.com/community/tutorials/how-to-install-mongodb-on-ubuntu-16-04

grey87
quelle
3
Obwohl Ihre Antwort möglicherweise gültig ist, ist es besser, die in Ihrem Link aufgeführten Schritte hier anzugeben. Links und deren Inhalt können sich im Laufe der Zeit ändern, wodurch Ihre Antwort unbrauchbar wird.
Videonauth