Apt-get falha em 16.04 instalando o mongodb

8

Quando tento instalar o mongodb usando as instruções do 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

Eu 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 locais. 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?

EDITAR: Tentei fazer isso novamente em uma nova instalação do 16.04 no VirtualBox. Recuperei a chave, criei o arquivo da lista e fiz sudo apt update com 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 no apt update. Alguém sabe onde conseguir a chave correta?

    
por Jonathan 27.10.2016 / 23:35

2 respostas

20

NOTA: Estas instruções são para o MongoDB 3.2.

Vamos refazer as etapas de instalação do MongoDB.

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 carregará )

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

Agora, crie um novo arquivo de lista de repositórios do MongoDB:

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

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

sudo apt update
sudo apt install mongodb-org

Espero que isso ajude!

    
por Terrance 28.10.2016 / 00:04
5

Além da resposta do @Terrance, aqui está como você pode encontrar a chave sig apropriada. Exemplo é aplicável ao mongodb neste caso, mas pode ser usado para qualquer outro pacote de forma semelhante. Antes de você executar linhas da resposta do @Terrance:

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

  2. Pesquise por sequência de interesse (mongodb no caso) e envie o primeiro formulário (não é necessário o segundo formulário para isso) - clique em Search! button

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

  1. Você pode ver duas linhas com chaves lá. Concentre-se no mais real por data. A primeira string é criada enquanto a segunda é válida com data.

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

  3. Continue com a resposta de Terrance se precisar instalar um pacote ou atualizar como eu

por Tpojka 14.02.2018 / 13:52