Apt-get kończy się niepowodzeniem 16.04 lub 18.04 podczas instalacji mongodb

26

Kiedy próbuję zainstalować mongodb zgodnie z instrukcjami https://docs.mongodb.com/getting-started/shell/tutorial/install-mongodb-on-ubuntu/z 16.04, otrzymuję następujący wynik na etapie instalacji:

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

Sprawdziłem ruch HTTP za pomocą Wireshark i stwierdziłem, że jedynym ruchem był HTTP GET dla listy i odpowiedź HTTP 304, co sugeruje, że problem leży w moich lokalnych plikach konfiguracyjnych. Mój plik sources.list.d zawiera następujący wpis:

mongodb-org-3.4.list

Co muszę zrobić, aby kontynuować rozwiązywanie tego problemu?

EDYCJA: Próbowałem to zrobić ponownie przy nowej instalacji 16.04 w VirtualBox. Pobrałem klucz, utworzyłem plik listy i zrobiłem sudo apt updatez następującymi wynikami:

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

Jak widać, klucz został pobrany dla Mongodb 3.4, a nie Mongodb 3.2, co wyjaśnia awarię GPG podczas aktualizacji apt. Czy ktoś wie, skąd wziąć odpowiedni klucz?

Jonathan
źródło

Odpowiedzi:

74

Ubuntu 16.04 i MongoDB 4.0

Najpierw usuń istniejący plik repozytorium dla MongoDB.

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

Następnie dodaj klucz: ( bez klucza repozytorium nie zostanie załadowane )

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

Teraz utwórz nowy plik listy repozytorium 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'

Zakończ instalację aktualizacją repozytoriów, a następnie zainstaluj:

sudo apt update
sudo apt install mongodb-org

Włącz mongodusługę i uruchom ją:

systemctl enable mongod.service
systemctl start mongod.service

Sprawdź swoją wersję 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

Sprawdź, czy usługa jest uruchomiona:

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

MongoDB 4.0 jest pokazany jako stabilny, a 4.1 jest na razie podglądem.

Najpierw usuń MongoDB z poprzedniego, jeśli jest zainstalowany:

sudo apt remove --autoremove mongodb-org

Usuń wszystkie pliki listy repozytorium mongodb:

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

Teraz dodaj nowy klucz:

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

Dodaj nowe repozytorium:

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'

Zainstaluj MongoDB

sudo apt update
sudo apt install mongodb-org

Włącz i uruchom mongodusługę serwera:

systemctl enable mongod.service
systemctl start mongod.service

Sprawdź swoją instalację:

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

Możesz także sprawdzić, czy usługa została uruchomiona:

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

Mam nadzieję że to pomoże!

Terrance
źródło
1
Dzięki za to. Kluczem było uzyskanie odpowiedniego klucza.
Jonathan
gpg: otrzymywanie serwera kluczy nie powiodło się: Serwer wskazał błąd
Máxima Alekz
@ MáximaAlekz Sprawdź moją odpowiedź.
Tpojka
Wielkie dzięki, @Terrance. Zaoszczędziłeś mi dużo czasu.
Anirudh Thatipelli,
Wielkie dzięki, przyjacielu!
Jovana
10

Oprócz odpowiedzi @Terrance, oto jak znaleźć odpowiedni klucz sig. Przykład dotyczy mongodb w tym przypadku, ale może być użyty w każdym innym pakiecie podobnie. Zanim wykonasz wiersze z odpowiedzi @Terrance:

  1. Przejdź do serwera kluczy Ubuntu, aby znaleźć aktualny klucz

  2. Wyszukaj ciąg zainteresowań (w przypadku mongodb) i prześlij pierwszy formularz (do tego nie potrzebujesz drugiego formularza) - kliknij Search!przycisk

wprowadź opis zdjęcia tutaj

  1. Na podanej liście wyszukiwania wyszukaj swoją wersję (w moim przypadku było to 3,4)

wprowadź opis zdjęcia tutaj

  1. Można tam zobaczyć dwa rzędy z kluczami. Skoncentruj się na najbardziej aktualnych terminach. Pierwszy ciąg to data utworzenia, a drugi ważny termin.

  2. Użyj sig z rzędu wymienionego w punkcie 5 - w przypadku, gdy byłoby to z obrazka A15703C6

  3. Kontynuuj z odpowiedzią Terrance'a, czy musisz zainstalować pakiet lub zaktualizować jak ja

Tojko
źródło
1
Dzięki. Zaoszczędziło mi to dużo czasu!
akazuko
1

Dla mnie też nic nie działało, więc poszedłem na stronę mogodb i postępowałem zgodnie z tymi instrukcjami, aby zainstalować z tarball:

Zainstaluj zależności:

sudo apt-get install libcurl3 openssl

Pobierz archiwum z tej strony

cd do katalogu Pobrane lub gdziekolwiek poszedł plik i rozpakuj go:

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

Pliki binarne znajdują się w binkatalogu wyodrębnionej struktury. Możesz dodać ten katalog do ŚCIEŻKI lub skopiować pliki do /usr/local/binlub innej lokalizacji ŚCIEŻKI.

VishalTheBeast
źródło
Zainstalowałeś inną wersję niż ta, która była wówczas wymieniona powyżej, więc odpowiedzi nie zadziałały. Od tego czasu zaktualizowałem swoją odpowiedź. Dla każdej wersji zmienia się klucz i zmiany w repozytorium. Postaram się aktualizować moją odpowiedź dla nowych stabilnych wersji, gdy tylko się pojawią.
Terrance