Apt-get échoue le 16.04 ou 18.04 lors de l'installation de mongodb

26

Lorsque j'essaie d'installer mongodb en utilisant les instructions du https://docs.mongodb.com/getting-started/shell/tutorial/install-mongodb-on-ubuntu/16.04, j'obtiens le résultat suivant à l'étape d'installation:

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

J'ai vérifié le trafic HTTP avec Wireshark et j'ai constaté que le seul trafic était un HTTP GET pour la liste et une réponse HTTP 304 qui suggère que le problème réside dans mes fichiers de configuration locaux. Mon fichier sources.list.d contient l'entrée suivante:

mongodb-org-3.4.list

Que dois-je faire pour continuer à résoudre ce problème?

EDIT: J'ai essayé de le faire à nouveau sur une nouvelle installation de 16.04 sous VirtualBox. J'ai récupéré la clé, créé le fichier de liste et l'ai fait sudo apt updateavec les résultats suivants:

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

Comme vous pouvez le voir, la clé récupérée était pour Mongodb 3.4, pas Mongodb 3.2 et cela explique l'échec du GPG dans la mise à jour d'apt. Quelqu'un sait où obtenir la bonne clé?

Jonathan
la source

Réponses:

76

Ubuntu 16.04 et MongoDB 4.0

Tout d'abord, supprimez tout fichier de référentiel existant pour MongoDB.

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

Ensuite, ajoutez la clé: ( sans la clé, le référentiel ne se chargera pas )

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

Maintenant, créez un nouveau fichier de liste de référentiels 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'

Terminez l'installation avec la mise à jour des référentiels puis installez:

sudo apt update
sudo apt install mongodb-org

Activez le mongodservice et démarrez-le:

systemctl enable mongod.service
systemctl start mongod.service

Vérifiez votre version 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

Vérifiez si le service est en cours d'exécution:

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

MongoDB 4.0 est affiché comme stable où 4.1 est en tant qu'aperçu pour le moment.

Tout d'abord, supprimez MongoDB du précédent s'il est installé:

sudo apt remove --autoremove mongodb-org

Supprimez tous les fichiers de liste de dépôt mongodb:

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

Maintenant, ajoutez la nouvelle clé:

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

Ajoutez le nouveau référentiel:

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'

Installer MongoDB

sudo apt update
sudo apt install mongodb-org

Activez et démarrez le mongodservice serveur:

systemctl enable mongod.service
systemctl start mongod.service

Vérifiez votre installation:

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

Vous pouvez également vérifier que votre service a commencé:

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

J'espère que cela t'aides!

Terrance
la source
2
Merci pour cela. Obtenir la bonne clé était la partie critique.
Jonathan
gpg: échec de la réception du serveur de clés: le serveur a indiqué un échec
Máxima Alekz
@ MáximaAlekz Vérifiez ma réponse.
Tpojka
Merci beaucoup, @Terrance. Tu m'as sauvé beaucoup de temps.
Anirudh Thatipelli
Merci beaucoup mon ami!
Jovana
10

En plus de la réponse de @Terrance, voici comment vous pouvez trouver la clé sig appropriée. L'exemple est applicable à mongodb dans ce cas mais peut être utilisé de la même manière pour tout autre package. Avant d'exécuter des lignes de la réponse de @Terrance:

  1. Accédez au serveur de clés Ubuntu pour trouver la clé réelle

  2. Recherchez la chaîne d'intérêt (mongodb dans le cas) et soumettez ce premier formulaire (vous n'avez pas besoin du deuxième formulaire pour cela) - cliquez sur le Search!bouton

entrez la description de l'image ici

  1. Sur la liste de recherche fournie, recherchez votre version (c'était 3.4 dans mon cas ici en exemple)

entrez la description de l'image ici

  1. Vous pouvez y voir deux rangées de clés. Concentrez-vous sur la date la plus récente. La première chaîne est la date de création tandis que la seconde est la date de validité due.

  2. Utilisez sig de la ligne mentionnée au point 5 - dans le cas de l'image, il serait A15703C6

  3. Continuez avec la réponse de Terrance si vous devez installer le package ou mettre à niveau comme moi

Tpojka
la source
1
Merci. Cela m'a fait gagner beaucoup de temps!
akazuko
1

Rien ne fonctionnait pour moi non plus, donc je suis allé sur le site Web de mogodb et j'ai suivi ces instructions pour installer depuis tarball:

Installer les dépendances:

sudo apt-get install libcurl3 openssl

Téléchargez l'archive depuis cette page

cd dans le répertoire Téléchargements ou partout où le fichier est allé, et extrayez-le:

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

Les binaires se trouvent dans le binrépertoire de la structure extraite. Vous pouvez ajouter ce répertoire à PATH ou copier les fichiers vers /usr/local/binou à un autre emplacement PATH.

VishalTheBeast
la source
Vous avez installé une version différente de celle indiquée ci-dessus à l'époque, de sorte que les réponses n'auront pas fonctionné pour vous. J'ai mis à jour ma réponse depuis. Pour chaque version, la clé change et le référentiel change. Je vais essayer de garder ma réponse à jour pour les nouvelles versions stables à mesure qu'elles sortent.
Terrance
1

Première exécution:

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

On peut supprimer le fichier sources.list ou on peut simplement supprimer les lignes liées à mongo présentes dans le fichier sources.list.

Effectuez ensuite une nouvelle installation de MongoDB à l'aide des commandes fournies dans les instructions d' installation officielles de MongoDB pour Ubuntu .

Les commandes dans le lien fourni sont données ci-dessous

wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -

sudo apt-get install gnupg

wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -

echo "deb [arch = amd64] https://repo.mongodb.org/apt/ubuntu bionic / mongodb-org / 4.2 multivers" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list

mise à jour sudo apt-get

sudo apt-get install -y mongodb-org

sudo service mongod start

sudo service mongod status

Lakshmi
la source
pouvez-vous inclure des commandes de ce lien dans votre réponse?
damadam