Apt-get gagal pada 16,04 atau 18,04 menginstal mongodb

26

Ketika saya mencoba menginstal mongodb menggunakan instruksi pada https://docs.mongodb.com/getting-started/shell/tutorial/install-mongodb-on-ubuntu/pada 16.04 saya mendapatkan hasil berikut pada langkah instal:

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

Saya memeriksa lalu lintas HTTP dengan Wireshark dan menemukan bahwa satu-satunya lalu lintas adalah GET HTTP untuk daftar dan respons HTTP 304 yang menunjukkan bahwa masalahnya terletak pada file konfigurasi lokal saya. File sources.list.d saya berisi entri berikut:

mongodb-org-3.4.list

Apa yang harus saya lakukan untuk terus memecahkan masalah ini?

EDIT: Saya mencoba melakukan ini lagi pada pemasangan baru 16,04 di bawah VirtualBox. Saya mengambil kunci, membuat daftar file, dan melakukan sudo apt updatedengan hasil berikut:

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

Seperti yang Anda lihat, kunci yang diambil adalah untuk Mongodb 3.4, bukan Mongodb 3.2 dan ini menjelaskan kegagalan GPG dalam pembaruan apt. Adakah yang tahu di mana mendapatkan kunci yang benar?

Jonathan
sumber

Jawaban:

74

Ubuntu 16.04 dan MongoDB 4.0

Pertama, hapus file repositori yang ada untuk MongoDB.

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

Selanjutnya, tambahkan kunci: ( tanpa kunci, repositori tidak akan memuat )

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

Sekarang, buat file daftar repositori MongoDB baru:

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'

Selesaikan penginstalan dengan pembaruan repositori, lalu instal:

sudo apt update
sudo apt install mongodb-org

Aktifkan mongodlayanan dan mulai itu:

systemctl enable mongod.service
systemctl start mongod.service

Periksa versi mongodb Anda:

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

Periksa apakah layanan berjalan:

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

MongoDB 4.0 ditampilkan stabil di mana 4.1 sebagai pratinjau untuk saat ini.

Pertama, hapus MongoDB dari sebelumnya jika diinstal:

sudo apt remove --autoremove mongodb-org

Hapus file daftar repo mongodb:

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

Sekarang, tambahkan kunci baru:

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

Tambahkan repositori baru:

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'

Instal MongoDB

sudo apt update
sudo apt install mongodb-org

Aktifkan dan mulai mongodlayanan server:

systemctl enable mongod.service
systemctl start mongod.service

Periksa instalasi Anda:

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

Anda juga dapat memeriksa layanan Anda sudah mulai:

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

Semoga ini membantu!

Terrance
sumber
1
Terima kasih untuk ini. Mendapatkan kunci yang tepat adalah bagian penting.
Jonathan
gpg: keyserver menerima gagal: Server mengindikasikan kegagalan
Máxima Alekz
@ MáximaAlekz Periksa jawaban saya.
Tpojka
Terima kasih banyak, @Terrance. Anda menghemat banyak waktu.
Anirudh Thatipelli
Terima kasih banyak temanku!
Jovana
10

Selain jawaban @Terrance, berikut adalah cara Anda menemukan kunci sig yang sesuai. Contoh berlaku untuk mongodb dalam kasus ini tetapi dapat digunakan untuk paket lain yang serupa. Sebelum Anda mengeksekusi baris dari jawaban @Terrance:

  1. Buka server kunci ubuntu untuk menemukan kunci aktual

  2. Cari string yang diminati (mongodb dalam kasus) dan kirimkan formulir pertama (Anda tidak perlu formulir kedua untuk ini) - klik Search!tombol

masukkan deskripsi gambar di sini

  1. Pada pencarian daftar yang disediakan cari versi Anda (itu 3,4 dalam kasus saya di sini misalnya)

masukkan deskripsi gambar di sini

  1. Anda dapat melihat dua baris dengan kunci di sana. Fokus pada tanggal yang paling aktual. String pertama adalah tanggal yang dibuat sementara yang kedua adalah tanggal yang seharusnya jatuh tempo.

  2. Gunakan sig dari baris yang disebutkan dalam poin 5 - seandainya dari gambar itu akan A15703C6

  3. Lanjutkan dengan jawaban Terrance apakah Anda perlu menginstal paket atau meningkatkan seperti saya

Tpojka
sumber
1
Terima kasih. Ini menghemat banyak waktu!
akazuko
1

Tidak ada yang berhasil untuk saya, jadi saya pergi ke situs web mogodb dan mengikuti instruksi ini untuk menginstal dari tarball:

Instal dependensi:

sudo apt-get install libcurl3 openssl

Unduh tarball dari halaman ini

cd ke direktori Unduhan atau ke mana pun file pergi, dan ekstrak:

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

Binari berada di bindirektori struktur yang diekstraksi. Anda dapat menambahkan direktori ini ke PATH atau menyalin file ke /usr/local/binatau lokasi PATH lainnya.

VishalTheBeast
sumber
Anda menginstal versi yang berbeda dari yang tercantum di atas pada saat itu sehingga jawaban tidak akan berfungsi untuk Anda. Saya telah memperbarui jawaban saya sejak itu. Untuk setiap versi perubahan kunci dan repositori berubah. Saya akan mencoba menjaga jawaban saya diperbarui untuk versi stabil baru ketika mereka keluar
Terrance