Apt-get fallisce l'installazione di mongodb su 16.04 o 18.04


26

Quando provo ad installare mongodb usando le istruzioni https://docs.mongodb.com/getting-started/shell/tutorial/install-mongodb-on-ubuntu/su 16.04 ottengo il seguente risultato durante l'installazione:

jonathan@poseidon:~$ sudo apt-get install mongodb-org
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package mongodb-org is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'mongodb-org' has no installation candidate

Ho controllato il traffico HTTP con Wireshark e ho scoperto che l'unico traffico era un HTTP GET per l'elenco e una risposta HTTP 304 che suggerisce che il problema risiede nei miei file di configurazione locali. Il mio file sources.list.d contiene la seguente voce:

mongodb-org-3.4.list

Cosa devo fare per continuare a risolvere questo problema?

EDIT: ho provato a farlo di nuovo su una nuova installazione di 16.04 in VirtualBox. Ho recuperato la chiave, creato il file di elenco e fatto sudo apt updatecon i seguenti risultati:

jonathan@Ubuntu-16:~$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
[sudo] password for jonathan: 
Executing: /tmp/tmp.uWYpRUWfjK/gpg.1.sh --keyserver
hkp://keyserver.ubuntu.com:80
--recv
0C49F3730359A14518585931BC711F9BA15703C6
gpg: requesting key A15703C6 from hkp server keyserver.ubuntu.com
gpg: key A15703C6: public key "MongoDB 3.4 Release Signing Key <packaging@mongodb.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
jonathan@Ubuntu-16:~$ echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse
jonathan@Ubuntu-16:~$ sudo apt update
Ign:1 http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 InRelease
Get:2 http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 Release [3 462 B]
Hit:3 http://mx.archive.ubuntu.com/ubuntu xenial InRelease               
Get:4 http://security.ubuntu.com/ubuntu xenial-security InRelease [94.5 kB]                   
Get:5 http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 Release.gpg [801 B]                      
Get:6 http://mx.archive.ubuntu.com/ubuntu xenial-updates InRelease [95.7 kB]           
Ign:5 http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 Release.gpg                       
Get:7 http://mx.archive.ubuntu.com/ubuntu xenial-backports InRelease [92.2 kB]                    
Reading package lists... Done      
W: GPG error: http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY D68FA50FEA312927
E: The repository 'http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 Release' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
jonathan@Ubuntu-16:~$ 

Come puoi vedere, la chiave recuperata era per Mongodb 3.4, non Mongodb 3.2 e questo spiega l'errore GPG nell'aggiornamento apt. Qualcuno sa dove ottenere la chiave corretta?

Risposte:


74

Ubuntu 16.04 e MongoDB 4.0

Innanzitutto, rimuovere qualsiasi file di repository esistente per MongoDB.

sudo rm /etc/apt/sources.list.d/mongodb*.list

Successivamente, aggiungi la chiave: ( senza la chiave, il repository non verrà caricato )

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E52529D4

Ora, crea un nuovo file elenco repository MongoDB:

sudo bash -c 'echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" > /etc/apt/sources.list.d/mongodb-org-4.0.list'

Completa l'installazione con l'aggiornamento dei repository quindi installa:

sudo apt update
sudo apt install mongodb-org

Abilitare il mongodservizio e avviarlo:

systemctl enable mongod.service
systemctl start mongod.service

Controlla la tua versione mongodb:

~$ mongo --version
MongoDB shell version v4.0.5
git version: 3739429dd92b92d1b0ab120911a23d50bf03c412
OpenSSL version: OpenSSL 1.0.2g  1 Mar 2016
allocator: tcmalloc
modules: none
build environment:
    distmod: ubuntu1604
    distarch: x86_64
    target_arch: x86_64

Verifica se il servizio è in esecuzione:

~$ systemctl status mongod.service
● mongod.service - MongoDB Database Server
   Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2019-01-21 00:33:51 MST; 7s ago
     Docs: https://docs.mongodb.org/manual
 Main PID: 2906 (mongod)
   CGroup: /system.slice/mongod.service
           └─2906 /usr/bin/mongod --config /etc/mongod.conf

Ubuntu 18.04 e MongoDB 4.0

MongoDB 4.0 è mostrato come stabile dove 4.1 è come anteprima per il momento.

Innanzitutto, rimuovere MongoDB dal precedente se installato:

sudo apt remove --autoremove mongodb-org

Rimuovere tutti i file dell'elenco repo mongodb:

sudo rm /etc/apt/sources.list.d/mongodb*.list
sudo apt update

Ora aggiungi la nuova chiave:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E52529D4

Aggiungi il nuovo repository:

sudo bash -c 'echo "deb [arch=amd64] http://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" > /etc/apt/sources.list.d/mongodb-org-4.0.list'

Installa MongoDB

sudo apt update
sudo apt install mongodb-org

Abilitare e avviare il mongodservizio server:

systemctl enable mongod.service
systemctl start mongod.service

Controlla la tua installazione:

~$ mongo --version
MongoDB shell version v4.0.3
git version: 7ea530946fa7880364d88c8d8b6026bbc9ffa48c
OpenSSL version: OpenSSL 1.1.0g  2 Nov 2017
allocator: tcmalloc
modules: none
build environment:
    distmod: ubuntu1804
    distarch: x86_64
    target_arch: x86_64

Puoi anche verificare che il servizio sia stato avviato:

~$ systemctl status mongod.service
● mongod.service - MongoDB Database Server
   Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: e
   Active: active (running) since Sun 2018-10-07 12:33:46 MDT; 2min 34s ago
     Docs: https://docs.mongodb.org/manual
 Main PID: 5573 (mongod)
   CGroup: /system.slice/mongod.service
           └─5573 /usr/bin/mongod --config /etc/mongod.conf

Spero che sia di aiuto!


1
Grazie per questo. Ottenere la chiave giusta è stata la parte critica.
Jonathan,

gpg: ricezione del keyserver non riuscita: il server ha indicato un errore
Máxima Alekz,

@ MáximaAlekz Controlla la mia risposta.
Tpojka,

Grazie mille, @Terrance. Mi hai risparmiato un sacco di tempo.
Anirudh Thatipelli,

Grazie mille amico mio!
Jovana,

10

Oltre alla risposta di @Terrance, ecco come trovare la chiave sig appropriata. L'esempio è applicabile a mongodb in questo caso, ma può essere usato allo stesso modo per qualsiasi altro pacchetto. Prima di eseguire le righe dalla risposta di @Terrance:

  1. Vai a Ubuntu Key Server per trovare la chiave effettiva

  2. Cerca la stringa di interesse (nel caso mongodb) e invia il primo modulo (non è necessario il secondo modulo per questo) - fai clic sul Search!pulsante

inserisci qui la descrizione dell'immagine

  1. Nella lista di ricerca fornita cerca la tua versione (era 3.4 nel mio caso qui nell'esempio)

inserisci qui la descrizione dell'immagine

  1. Puoi vedere due file con le chiavi lì. Concentrati sulla data più attuale. La prima stringa è la data di creazione, mentre la seconda è la data di scadenza valida.

  2. Usa sig dalla riga menzionata al punto 5 - nel caso in cui dalla foto sarebbe A15703C6

  3. Continua con la risposta di Terrance se devi installare un pacchetto o aggiornare come me


1
Grazie. Questo mi ha fatto risparmiare un sacco di tempo!
Akazuko,

1

Nulla ha funzionato neanche per me, quindi sono andato sul sito Web di mogodb e ho seguito queste istruzioni per l'installazione da tarball:

Installa dipendenze:

sudo apt-get install libcurl3 openssl

Scarica il tarball da questa pagina

cd nella directory Download o ovunque sia andato il file ed estrarlo:

tar -zxvf mongodb-linux-*-4.0.1.tgz

I binari si trovano nella bindirectory della struttura estratta. È possibile aggiungere questa directory a PATH o copiare i file in /usr/local/bino un'altra posizione PATH.


Hai installato una versione diversa da quella sopra elencata al momento, quindi le risposte non avranno funzionato per te. Ho aggiornato la mia risposta da allora. Per ogni versione cambia la chiave e cambia il repository. Cercherò di mantenere la mia risposta aggiornata per le nuove versioni stabili man mano che escono.
Terrance

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.