Lorsque j'essaie d'installer mongodb en suivant les instructions du https://docs.mongodb.com/getting-started/Shell/tutorial/install-mongodb-on-ubuntu/
du 16.04, le résultat suivant s'affiche à l'étape de l'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 ai constaté que le seul trafic était un HTTP GET pour la liste et une réponse HTTP 304, ce 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 liste et créé Sudo apt update
avec 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 constater, la clé extraite concernait Mongodb 3.4 et non Mongodb 3.2, ce qui explique l'échec de GPG dans apt update. Quelqu'un sait où obtenir la clé correcte?
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 sera pas chargé)
Sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E52529D4
Créez maintenant 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 service mongod
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
MongoDB 4.0 est présenté comme stable, où 4.1 comme aperçu pour le moment.
Tout d’abord, supprimez MongoDB de la version précédente si elle est installée:
Sudo apt remove --autoremove mongodb-org
Supprimez tous les fichiers de la 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 service serveur mongod
:
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!
En plus de la réponse de @Terrance, voici comment vous pouvez trouver la clé de signature appropriée. Cet exemple s’applique à mongodb dans ce cas, mais peut être utilisé de la même manière pour n’importe quel autre paquet. Avant d’exécuter les lignes de la réponse de @Terrance:
Allez à serveur de clés ubunt pour trouver la clé réelle
Recherchez la chaîne d’intérêt (mongodb en cas) et soumettez ce premier formulaire (vous n’avez pas besoin d’un deuxième formulaire pour cela) - cliquez sur le bouton Search!
Vous pouvez voir deux lignes avec des clés. Concentrez-vous sur le plus réel par date. La première chaîne est la date créée tandis que la seconde est la date valide.
Utilisez sig de la ligne mentionnée au point 5 - dans le cas de la photo, il s'agirait de A15703C6
Continuez avec la réponse de Terrance si vous devez installer un paquet ou mettre à jour comme moi
Rien ne fonctionnait pour moi non plus, alors je suis allé sur le site Web de mogodb et suivi ces instructions à installer à partir de tarball:
Installez des dépendances:
Sudo apt-get install libcurl3 openssl
Téléchargez l'archive à partir de cette page
cd
dans le répertoire Téléchargements ou où que le fichier soit, et extrayez-le:
tar -zxvf mongodb-linux-*-4.0.1.tgz
Les fichiers binaires se trouvent dans le répertoire bin
de la structure extraite. Vous pouvez ajouter ce répertoire à PATH ou copier les fichiers dans /usr/local/bin
ou un autre emplacement PATH.