Posso usare i pacchetti MongoDB 14.04 con 16.04?


10

Sfortunatamente il pacchetto Ubuntu ufficiale per MongoDB è ancora bloccato su 2.6, che è antico a questo punto ( questo bug non è stato raccolto per vivido, astuto o xenial).

MongoDB non ha ancora rilasciato un pacchetto per 16.04 (Xenial), quindi come posso usare i pacchetti 14.04 (Trusty) per installare MongoDB 3.2+ su 16.04?


Si, puoi. Se stai aggiornando, dovrebbe essere facile. Se hai appena installato il 16.04, segui semplicemente i passaggi qui: askubuntu.com/questions/724749/…
KhoPhi,

@Rexford Come vedrai nella risposta qui sotto, non è così facile in 16.04 con i vecchi pacchetti (il servizio non verrà installato correttamente con una nuova installazione)
Adam C

Risposte:


14

È un po 'un trucco ma sì, questo può essere fatto. È necessario un passaggio non documentato per avviare effettivamente il servizio e (abbastanza stranamente) a meno che non si desideri tentare manualmente di avviare manualmente la conversione del lavoro, è necessario prima installare il mongodbpacchetto Ubuntu , quindi rimuoverlo in modo da disporre di un servizio utilizzabile. Un'installazione diretta dei pacchetti MongoDB non ti darà un servizio funzionante su un nuovo 16.04.

Aggiornamento - Luglio 2016: la correzione ufficiale per questo (aggiunta del supporto per 16.04 ai pacchetti) è stata completata nella filiale 3.3 dev come parte del SERVER-23043 - ed è stata rilasciata come backport nella serie 3.2 come parte della 3.2. 7 . Pertanto, se si utilizza 3.2.7+ non è necessario eseguire questa operazione e l'installazione del pacchetto MongoDB ufficiale dovrebbe funzionare.

In ogni caso, dopo aver eseguito l'aggiunta / rimozione, seguire le consuete istruzioni per 14.04, riepilogate qui:

# 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

L'installazione ha esito positivo e grazie al pacchetto Ubuntu abbiamo tutti i pezzi necessari per un servizio, ma inizialmente il tentativo di avviare il servizio fallirà:

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

Risolvere questo non è troppo difficile:

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

Ora possiamo abilitare / avviare il servizio, ottenere il suo stato ecc.

$ 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

Successo - e otteniamo un bel puntatore al file di configurazione attivo (che è nel vecchio key=valueformato, vedi qui per esempi nel più recente formato YAML raccomandato).

Nota: in realtà ci saranno due file di configurazione /etc/mongod.confe /etc/mongodb.confgrazie a lievi differenze tra i due pacchetti che abbiamo installato. I punti di servizio ormai attivo al vecchio formato uno per impostazione predefinita /etc/mongodb.conf- è possibile attivare spostando / copiando il mongod.confper mongodb.confse lo desiderate, o semplicemente modificare direttamente il file.

Una volta avviato, per testare, connettersi al database con la mongoshell:

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

Se desideri eliminare gli avvisi THP, dai un'occhiata a questa risposta .


1
Dopo il tuo primo blocco di codice sopra, l'esecuzione sudo service mongodb startritorna Failed to start mongodb.service: Unit mongodb.service not found.
user1063287

1
Ho provato a risolvere quanto sopra creando un file di servizio per systemd (come da askubuntu.com/a/694226/367134 ). Questo è il risultato: sudo service mongodb startnon restituisce nulla. sudo service mongodb statusrestituisce un messaggio non riuscito con status=2. Per risolvere questo problema, ho modificato il percorso nel file di servizio appena creato da /etc/mongodb.confa /etc/mongod.conf. Sulla base della risposta originale, come si avvia mongodb all'avvio del sistema?
user1063287

1
L'azione seguente ulteriore permesso MongoDB per iniziare all'avvio del sistema per me: sudo systemctl enable mongodb. Vedi: digitalocean.com/community/tutorials/…
user1063287

1
Ah, abbastanza sicuro di aver appena lasciato fuori quella riga quando ho copiato / incollato le mie istruzioni, o avrei fallito in modo simile, grazie per l'heads-up
Adam C

1
Sicuramente non risolto in 3.2.8. Vedere l'ultimo commento . Dovrebbe essere affrontato in 3.2.9.
Goran Miskovic,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.