O apt-get falha no 16.04 ou 18.04 ao instalar o mongodb

26

Quando tento instalar o mongodb usando as instruções https://docs.mongodb.com/getting-started/shell/tutorial/install-mongodb-on-ubuntu/no 16.04, obtenho o seguinte resultado na etapa de instalação:

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

Verifiquei o tráfego HTTP com o Wireshark e descobri que o único tráfego era um HTTP GET para a lista e uma resposta HTTP 304, o que sugere que o problema está nos meus arquivos de configuração local. Meu arquivo sources.list.d contém a seguinte entrada:

mongodb-org-3.4.list

O que preciso fazer para continuar a solucionar esse problema?

Edição: Eu tentei fazer isso novamente em uma nova instalação do 16.04 no VirtualBox. Recuperei a chave, criei o arquivo de lista e fiz sudo apt updatecom os seguintes 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 você pode ver, a chave recuperada foi para o Mongodb 3.4, não para o Mongodb 3.2, e isso explica a falha do GPG na atualização do apt. Alguém sabe onde conseguir a chave correta?

Jonathan
fonte

Respostas:

74

Ubuntu 16.04 e MongoDB 4.0

Primeiro, remova qualquer arquivo de repositório existente para o MongoDB.

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

Em seguida, adicione a chave: ( sem a chave, o repositório não será carregado )

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

Agora, crie um novo arquivo de lista de repositório do 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'

Conclua a instalação com atualização dos repositórios e instale:

sudo apt update
sudo apt install mongodb-org

Ative o mongodserviço e inicie-o:

systemctl enable mongod.service
systemctl start mongod.service

Verifique sua versão do 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

Verifique se o serviço está sendo executado:

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

O MongoDB 4.0 é mostrado como estável, onde 4.1 é como uma prévia por enquanto.

Primeiro, remova o MongoDB do anterior, se instalado:

sudo apt remove --autoremove mongodb-org

Remova todos os arquivos da lista de repositórios mongodb:

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

Agora, adicione a nova chave:

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

Adicione o novo repositório:

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'

Instale o MongoDB

sudo apt update
sudo apt install mongodb-org

Ative e inicie o mongodserviço do servidor:

systemctl enable mongod.service
systemctl start mongod.service

Verifique sua instalação:

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

Você também pode verificar se o seu serviço foi iniciado:

~$ 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 isto ajude!

Terrance
fonte
1
Obrigado por isso. Obter a chave certa foi a parte crítica.
31416 Jonathan
gpg: falha no recebimento do servidor de chaves: servidor indicou uma falha
Máxima Alekz
@ MáximaAlekz Verifique minha resposta.
Tpojka
Muito obrigado, @Terrance. Você me salvou muito tempo.
Anirudh Thatipelli
Muito obrigado, meu amigo!
Jovana
10

Além da resposta do @Terrance, veja como encontrar a chave de sigilo apropriada. O exemplo é aplicável ao mongodb nesse caso, mas pode ser usado para qualquer outro pacote da mesma forma. Antes de executar as linhas da resposta do @Terrance:

  1. Vá para o servidor de chaves do ubuntu para encontrar a chave real

  2. Pesquise a sequência de interesse (mongodb no caso) e envie o primeiro formulário (você não precisa do segundo formulário para isso) - clique no Search!botão

insira a descrição da imagem aqui

  1. Na lista de pesquisa fornecida, procure sua versão (era 3,4 no meu caso aqui no exemplo)

insira a descrição da imagem aqui

  1. Você pode ver duas linhas com chaves lá. Concentre-se na maioria das datas reais. A primeira sequência é a data de criação, enquanto a segunda é a data de vencimento válida.

  2. Use sig da linha mencionada no ponto 5 - no caso da imagem seria A15703C6

  3. Continue com a resposta da Terrance se você precisa instalar o pacote ou atualizar como eu

Tpojka
fonte
1
Obrigado. Isso me salvou muito tempo!
akazuko 12/03
1

Nada funcionou para mim também, então fui ao site do mogodb e segui estas instruções para instalar a partir do tarball:

Instale dependências:

sudo apt-get install libcurl3 openssl

Faça o download do tarball desta página

cd para o diretório Downloads ou para onde quer que o arquivo fosse, e extraia-o:

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

Os binários estão no bindiretório da estrutura extraída. Você pode adicionar esse diretório ao PATH ou copiar os arquivos para /usr/local/binoutro local do PATH.

VishalTheBeast
fonte
Você instalou uma versão diferente da listada acima no momento, para que as respostas não tenham funcionado para você. Eu atualizei minha resposta desde então. Para cada versão, a chave é alterada e o repositório é alterado. Tentarei manter minha resposta atualizada para novas versões estáveis ​​à medida que forem lançadas.
Terrance