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

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?

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!


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


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.