Apt-get ล้มเหลวในการติดตั้ง mongodb 16.04 หรือ 18.04


26

เมื่อฉันพยายามติดตั้ง mongodb โดยใช้คำแนะนำในhttps://docs.mongodb.com/getting-started/shell/tutorial/install-mongodb-on-ubuntu/วันที่ 16.04 ฉันได้รับผลลัพธ์ดังต่อไปนี้ในขั้นตอนการติดตั้ง:

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

ฉันตรวจสอบทราฟฟิก HTTP ด้วย Wireshark และพบว่าทราฟฟิกเดียวคือ HTTP GET สำหรับรายการและการตอบสนอง HTTP 304 ซึ่งแสดงว่าปัญหาอยู่ในไฟล์กำหนดค่าท้องถิ่นของฉัน ไฟล์ source.list.d ของฉันมีรายการดังต่อไปนี้:

mongodb-org-3.4.list

ฉันต้องทำอย่างไรเพื่อแก้ไขปัญหานี้ต่อไป

แก้ไข: ฉันพยายามทำเช่นนี้อีกครั้งในการติดตั้งใหม่ของ 16.04 ภายใต้ VirtualBox ฉันดึงคีย์สร้างไฟล์รายการและทำsudo apt updateด้วยผลลัพธ์ต่อไปนี้:

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

อย่างที่คุณเห็นกุญแจที่ดึงมานั้นมีไว้สำหรับ Mongodb 3.4 ไม่ใช่ Mongodb 3.2 และนี่จะอธิบายถึงความล้มเหลวของ GPG ในการอัพเดท apt มีใครรู้ว่าจะหากุญแจที่ถูกต้องได้ที่ไหน?

คำตอบ:


74

Ubuntu 16.04 และ MongoDB 4.0

ขั้นแรกให้ลบไฟล์ที่เก็บที่มีอยู่สำหรับ MongoDB

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

ถัดไปเพิ่มคีย์: ( ไม่มีคีย์ที่เก็บจะไม่โหลด )

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

ตอนนี้สร้างไฟล์รายการที่เก็บ 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'

ทำการติดตั้งให้สมบูรณ์ด้วยการอัพเดตที่เก็บจากนั้นติดตั้ง:

sudo apt update
sudo apt install mongodb-org

เปิดใช้งานmongodบริการและเริ่มต้น:

systemctl enable mongod.service
systemctl start mongod.service

ตรวจสอบเวอร์ชั่น 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

ตรวจสอบว่าบริการกำลังทำงานอยู่หรือไม่:

~$ 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 และ MongoDB 4.0

MongoDB 4.0 นั้นจะแสดงว่าเสถียรโดยที่ 4.1 นั้นจะเป็นตัวอย่างในขณะนั้น

ก่อนอื่นให้ลบ MongoDB จากก่อนหน้าหากติดตั้งไว้:

sudo apt remove --autoremove mongodb-org

ลบไฟล์รายการ repo mongodb ใด ๆ :

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

ตอนนี้เพิ่มรหัสใหม่:

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

เพิ่มที่เก็บใหม่:

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'

ติดตั้ง MongoDB

sudo apt update
sudo apt install mongodb-org

เปิดใช้งานและเริ่มmongodบริการเซิร์ฟเวอร์:

systemctl enable mongod.service
systemctl start mongod.service

ตรวจสอบการติดตั้งของคุณ:

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

นอกจากนี้คุณยังสามารถตรวจสอบบริการของคุณได้เริ่มต้น:

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

หวังว่านี่จะช่วยได้!


1
ขอบคุณสำหรับสิ่งนี้. การรับคีย์ที่ถูกต้องเป็นส่วนที่สำคัญ
Jonathan

gpg: keyserver ได้รับล้มเหลว: เซิร์ฟเวอร์ระบุความล้มเหลว
Máxima Alekz

@ MáximaAlekzตรวจสอบคำตอบของฉัน
Tpojka

ขอบคุณมาก @Terrance คุณช่วยฉันได้มากเวลา
Anirudh Thatipelli

ขอบคุณมากเพื่อนของฉัน!
Jovana

10

นอกจากคำตอบของ @Terrance นี่คือวิธีที่คุณสามารถค้นหาคีย์ sig ที่เหมาะสม ตัวอย่างสามารถใช้กับ mongodb ในกรณีนี้ แต่สามารถใช้สำหรับแพ็คเกจอื่น ๆ ในทำนองเดียวกัน ก่อนที่คุณจะประมวลผลบรรทัดจากคำตอบของ @Terrance:

  1. ไปที่เซิร์ฟเวอร์คีย์ ubuntuเพื่อค้นหาคีย์จริง

  2. ค้นหาสตริงที่น่าสนใจ (ในกรณี mongodb) และส่งแบบฟอร์มแรก (คุณไม่ต้องการแบบฟอร์มที่สองสำหรับสิ่งนี้) - Search!ปุ่มคลิก

ป้อนคำอธิบายรูปภาพที่นี่

  1. ในรายการค้นหาที่มีให้ค้นหารุ่นของคุณ (เป็น 3.4 ในกรณีของฉันที่นี่ในตัวอย่าง)

ป้อนคำอธิบายรูปภาพที่นี่

  1. คุณสามารถเห็นแถวสองแถวพร้อมกุญแจได้ มุ่งเน้นไปที่จริงมากที่สุดตามวันที่ สตริงแรกคือวันที่สร้างในขณะที่สองคือวันที่ถูกต้องเนื่องจาก

  2. ใช้ sig จากแถวที่กล่าวถึงในจุดที่ 5 - ในกรณีที่เป็นรูปภาพ A15703C6

  3. ดำเนินการต่อด้วยคำตอบของ Terrance ไม่ว่าคุณจะต้องติดตั้งแพ็คเกจหรืออัพเกรดตัวเอง


1
ขอบคุณ สิ่งนี้ช่วยฉันได้มากเวลา!
akazuko

1

ฉันก็ไปที่เว็บไซต์ mogodbและทำตามคำแนะนำเหล่านี้เพื่อติดตั้งจาก tarball:

ติดตั้งการพึ่งพา:

sudo apt-get install libcurl3 openssl

ดาวน์โหลด tarball จากหน้านี้

cd ไปที่ไดเรกทอรีดาวน์โหลดหรือที่ใดก็ตามที่ไฟล์ไปและแตกไฟล์:

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

ไบนารีอยู่ในbinไดเรกทอรีของโครงสร้างที่แยกออกมา คุณสามารถเพิ่มไดเรคทอรี่นี้ไปที่ PATH หรือคัดลอกไฟล์ไปยัง/usr/local/binหรือที่ตั้ง PATH อื่น


คุณติดตั้งรุ่นอื่นแล้วสิ่งที่ระบุไว้ข้างต้นในเวลานั้นคำตอบจะไม่ได้ผลสำหรับคุณ ฉันได้ปรับปรุงคำตอบของฉันตั้งแต่ สำหรับแต่ละรุ่นการเปลี่ยนแปลงที่สำคัญและการเปลี่ยนแปลงที่เก็บ ฉันจะพยายามให้คำตอบของฉันอัปเดตสำหรับรุ่นที่มีเสถียรภาพใหม่เมื่อพวกเขาออกมา
Terrance
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.