Apt-get schlägt bei der Installation von mongodb am 16.04 oder 18.04 fehl


26

Wenn ich versuche, Mongodb mithilfe der Anweisungen unter https://docs.mongodb.com/getting-started/shell/tutorial/install-mongodb-on-ubuntu/16.04 zu installieren, erhalte ich beim Installationsschritt das folgende Ergebnis:

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

Ich habe den HTTP-Verkehr mit Wireshark überprüft und festgestellt, dass der einzige Verkehr ein HTTP-GET für die Liste und eine HTTP-304-Antwort war, was darauf hindeutet, dass das Problem in meinen lokalen Konfigurationsdateien liegt. Meine sources.list.d-Datei enthält den folgenden Eintrag:

mongodb-org-3.4.list

Was muss ich tun, um dieses Problem weiterhin zu beheben?

BEARBEITEN: Ich habe versucht, dies auf einer neuen Installation von 16.04 unter VirtualBox erneut zu tun. Ich habe den Schlüssel abgerufen, die Listendatei erstellt und dabei sudo apt updatefolgende Ergebnisse erzielt:

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 <packaging@mongodb.com>" 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:~$ 

Wie Sie sehen, wurde der Schlüssel für Mongodb 3.4 und nicht für Mongodb 3.2 abgerufen. Dies erklärt den GPG-Fehler bei der Aktualisierung von apt. Weiß jemand, wo man den richtigen Schlüssel bekommt?

Antworten:


73

Ubuntu 16.04 und MongoDB 4.0

Entfernen Sie zunächst alle vorhandenen Repository-Dateien für MongoDB.

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

Fügen Sie als Nächstes den Schlüssel hinzu: ( Ohne den Schlüssel wird das Repository nicht geladen. )

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

Erstellen Sie nun eine neue MongoDB-Repository-Listendatei:

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'

Schließen Sie die Installation mit der Aktualisierung der Repositorys ab und installieren Sie dann:

sudo apt update
sudo apt install mongodb-org

Aktivieren Sie den mongodDienst und starten Sie ihn:

systemctl enable mongod.service
systemctl start mongod.service

Überprüfen Sie Ihre Mongodb-Version:

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

Überprüfen Sie, ob der Dienst ausgeführt wird:

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

MongoDB 4.0 wird als stabil angezeigt, wobei 4.1 vorerst als Vorschau dient.

Entfernen Sie zuerst MongoDB von der vorherigen Version, falls installiert:

sudo apt remove --autoremove mongodb-org

Entfernen Sie alle Mongodb-Repo-Listendateien:

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

Fügen Sie nun den neuen Schlüssel hinzu:

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

Fügen Sie das neue Repository hinzu:

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'

Installieren Sie MongoDB

sudo apt update
sudo apt install mongodb-org

Aktivieren und starten Sie den mongodServerdienst:

systemctl enable mongod.service
systemctl start mongod.service

Überprüfen Sie Ihre 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

Sie können auch überprüfen, ob Ihr Dienst gestartet wurde:

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

Hoffe das hilft!


1
Danke dafür. Der richtige Schlüssel war der entscheidende Teil.
Jonathan

gpg: keyserver empfangen fehlgeschlagen: Server hat einen Fehler
gemeldet

@ MáximaAlekz Überprüfe meine Antwort.
Tpojka

Vielen Dank, @Terrance. Du hast mir viel Zeit gespart.
Anirudh Thatipelli

Vielen Dank mein Freund!
Jovana

10

Neben der Antwort von @Terrance finden Sie hier auch den passenden Signaturschlüssel. Beispiel gilt in diesem Fall für mongodb, kann aber in ähnlicher Weise für jedes andere Paket verwendet werden. Bevor Sie Zeilen aus der Antwort von @Terrance ausführen:

  1. Gehen Sie zum Ubuntu Key Server , um den tatsächlichen Schlüssel zu finden

  2. Suchen Sie nach der gewünschten Zeichenfolge (Mongodb für den Fall) und senden Sie das erste Formular ab (Sie benötigen dafür kein zweites Formular) - klicken Sie auf die Search!Schaltfläche

Bildbeschreibung hier eingeben

  1. Suchen Sie in der angegebenen Suchliste nach Ihrer Version (in meinem Beispiel war es hier 3.4)

Bildbeschreibung hier eingeben

  1. Sie können dort zwei Zeilen mit Schlüsseln sehen. Konzentrieren Sie sich auf das aktuellste Datum. Die erste Zeichenfolge ist das Erstellungsdatum, die zweite das Fälligkeitsdatum.

  2. Verwenden Sie das in Punkt 5 erwähnte Zeichen aus der Zeile - falls es aus dem Bild stammt A15703C6

  3. Fahren Sie mit Terrances Antwort fort, ob Sie das Paket installieren oder wie ich aktualisieren müssen


1
Vielen Dank. Das hat mir viel Zeit gespart!
Akazuko

1

Auch bei mir hat nichts geklappt , also bin ich auf die Mogodb-Website gegangen und habe die folgenden Anweisungen befolgt , um die Installation von Tarball aus durchzuführen:

Abhängigkeiten installieren:

sudo apt-get install libcurl3 openssl

Laden Sie den Tarball von dieser Seite herunter

cd Wechseln Sie in das Download-Verzeichnis oder in das Verzeichnis, in dem sich die Datei befindet, und extrahieren Sie sie:

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

Die Binärdateien befinden sich im binVerzeichnis der extrahierten Struktur. Sie können dieses Verzeichnis zu PATH hinzufügen oder die Dateien an einen /usr/local/binanderen Pfad kopieren .


Sie haben eine andere Version als die oben aufgeführte installiert, sodass die Antworten bei Ihnen nicht funktioniert haben. Ich habe meine Antwort seitdem aktualisiert. Für jede Version ändert sich der Schlüssel und das Repository. Ich werde versuchen, meine Antwort für neue stabile Versionen auf dem neuesten Stand zu halten, sobald sie herauskommen.
Terrance
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.