Apt-get falla en 16.04 o 18.04 al instalar mongodb

26

Cuando intento instalar mongodb usando las instrucciones https://docs.mongodb.com/getting-started/shell/tutorial/install-mongodb-on-ubuntu/en 16.04 obtengo el siguiente resultado en el paso de instalación:

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

Verifiqué el tráfico HTTP con Wireshark y descubrí que el único tráfico era un HTTP GET para la lista y una respuesta HTTP 304 que sugiere que el problema radica en mis archivos de configuración locales. Mi archivo sources.list.d contiene la siguiente entrada:

mongodb-org-3.4.list

¿Qué debo hacer para continuar solucionando este problema?

EDITAR: Traté de hacer esto nuevamente en una nueva instalación de 16.04 en VirtualBox. Recuperé la clave, creé el archivo de lista y lo hice sudo apt updatecon los siguientes resultados:

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 <[email protected]>" 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:~$ 

Como puede ver, la clave recuperada fue para Mongodb 3.4, no para Mongodb 3.2 y esto explica la falla de GPG en la actualización de apt. ¿Alguien sabe dónde obtener la clave correcta?

Jonathan
fuente

Respuestas:

75

Ubuntu 16.04 y MongoDB 4.0

Primero, elimine cualquier archivo de repositorio existente para MongoDB.

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

Luego, agregue la clave: ( sin la clave, el repositorio no se cargará )

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

Ahora, cree un nuevo archivo de lista de repositorio 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'

Complete la instalación con la actualización de los repositorios y luego instale:

sudo apt update
sudo apt install mongodb-org

Habilite el mongodservicio e inícielo:

systemctl enable mongod.service
systemctl start mongod.service

Comprueba tu versión de 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

Compruebe si el servicio se está ejecutando:

~$ 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 y MongoDB 4.0

MongoDB 4.0 se muestra como estable, donde 4.1 es una vista previa por el momento.

Primero, elimine MongoDB del anterior si está instalado:

sudo apt remove --autoremove mongodb-org

Elimine cualquier archivo de lista de repositorio mongodb:

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

Ahora, agregue la nueva clave:

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

Agregue el nuevo repositorio:

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'

Instalar MongoDB

sudo apt update
sudo apt install mongodb-org

Habilite e inicie el mongodservicio del servidor:

systemctl enable mongod.service
systemctl start mongod.service

Comprueba tu instalación:

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

También puede verificar que su servicio ha comenzado:

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

¡Espero que esto ayude!

Terrance
fuente
1
Gracias por esto. Obtener la clave correcta fue la parte crítica.
Jonathan
gpg: la recepción del servidor de claves falló: el servidor indicó una falla
Máxima Alekz
@ MáximaAlekz Comprueba mi respuesta.
Tpojka
Muchas gracias, @Terrance. Me ahorraste mucho tiempo.
Anirudh Thatipelli
¡Muchas gracias amigo!
Jovana
10

Además de la respuesta de @Terrance, así es como puede encontrar la clave sig adecuada. El ejemplo es aplicable a mongodb en este caso, pero puede usarse para cualquier otro paquete de manera similar. Antes de ejecutar líneas de la respuesta de @Terrance:

  1. Vaya al servidor de claves ubuntu para encontrar la clave real

  2. Busque una cadena de interés (mongodb en el caso) y envíe ese primer formulario (no necesita el segundo formulario para esto) - haga clic en el Search!botón

ingrese la descripción de la imagen aquí

  1. En la lista de búsqueda proporcionada, busque su versión (fue 3.4 en mi caso aquí, por ejemplo)

ingrese la descripción de la imagen aquí

  1. Puedes ver dos filas con llaves allí. Concéntrese en lo más actual por fecha. La primera cadena es la fecha de creación, mientras que la segunda es la fecha de vencimiento válida.

  2. Utilice sig de la fila mencionada en el punto 5; en el caso de la imagen, sería A15703C6

  3. Continúe con la respuesta de Terrance si necesita instalar el paquete o actualizar como yo

Tpojka
fuente
1
Gracias. ¡Esto me ahorró mucho tiempo!
akazuko
1

Nada funcionó para mí tampoco, así que fui al sitio web de mogodb y seguí estas instrucciones para instalar desde tarball:

Instalar dependencias:

sudo apt-get install libcurl3 openssl

Descargue el tarball de esta página

cd al directorio de Descargas o donde sea que vaya el archivo, y extráigalo:

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

Los binarios están en el bindirectorio de la estructura extraída. Puede agregar este directorio a PATH o copiar los archivos a /usr/local/binu otra ubicación de PATH.

VishalTheBeast
fuente
Instaló una versión diferente de la que se mencionó anteriormente en ese momento, por lo que las respuestas no le funcionarán. He actualizado mi respuesta desde entonces. Para cada versión, la clave cambia y el repositorio cambia. Intentaré mantener actualizada mi respuesta para las nuevas versiones estables a medida que salgan.
Terrance
0

Primer intento:

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

Luego realice una nueva instalación de MongoDB utilizando los comandos provistos en las instrucciones oficiales de instalación de MongoDB para Ubuntu .

Lakshmi
fuente
¿Puedes incluir comandos de este enlace dentro de tu respuesta?
damadam hace