ฉันสามารถใช้แพ็คเกจ MongoDB 14.04 กับ 16.04 ได้หรือไม่?


10

น่าเสียดายที่แพ็คเกจ Ubuntu อย่างเป็นทางการสำหรับ MongoDB ยังคงติดอยู่ที่ 2.6 ซึ่งเป็นรุ่นเก่าในตอนนี้ ( ข้อผิดพลาดนี้ไม่ได้ถูกหยิบขึ้นมาเพื่อความสดใสคมชัดหรือเยื้อง)

MongoDB ยังไม่ได้เปิดตัวแพ็คเกจสำหรับ 16.04 (Xenial) ดังนั้นฉันจะใช้แพคเกจ 14.04 (Trusty) เพื่อติดตั้ง MongoDB 3.2+ บน 16.04 ได้อย่างไร


ใช่คุณสามารถ. หากคุณกำลังอัพเกรดมันควรจะง่าย หากคุณติดตั้งใหม่ 16.04 เพียงทำตามขั้นตอนที่นี่: askubuntu.com/questions/724749/ …
KhoPhi

@Rexford อย่างที่คุณเห็นในคำตอบด้านล่างมันไม่ใช่เรื่องง่ายใน 16.04 กับแพคเกจเก่า (บริการจะไม่ได้รับการติดตั้งอย่างถูกต้องกับการติดตั้งใหม่)
Adam C

คำตอบ:


14

มันเป็นเรื่องของการแฮ็ค แต่ใช่สิ่งนี้สามารถทำได้ มีขั้นตอนที่ไม่มีเอกสารที่จำเป็นในการเริ่มบริการจริง ๆ และ (แปลกพอ) เว้นแต่คุณต้องการ futz ด้วยการแปลงงานธรรมดาด้วยตนเองคุณต้องติดตั้งmongodbแพคเกจUbuntu ก่อนจากนั้นจึงลบบริการออกเพื่อให้คุณมีบริการที่ใช้ได้ การติดตั้งแพกเกจ MongoDB แบบตรงจะไม่ให้บริการที่ใช้งานได้บนระบบ 16.04 ที่สดใหม่

อัปเดต - กรกฎาคม 2559:การแก้ไขอย่างเป็นทางการสำหรับเรื่องนี้ (เพิ่มการรองรับ 16.04 ไปยังแพ็คเกจ) ได้เสร็จสมบูรณ์ในสาขา 3.3 dev ซึ่งเป็นส่วนหนึ่งของSERVER-23043 - และได้รับการเผยแพร่เป็น backport ในซีรีส์ 3.2 ซึ่งเป็นส่วนหนึ่งของ 3.2 7 . ดังนั้นหากคุณใช้ 3.2.7+ คุณไม่จำเป็นต้องทำสิ่งนี้และการติดตั้งแพ็คเกจ MongoDB อย่างเป็นทางการก็น่าจะใช้ได้

ในกรณีใด ๆ หลังจากทำการเพิ่ม / ลบให้ทำตามคำแนะนำตามปกติสำหรับ 14.04 ซึ่งสรุปไว้ที่นี่:

# install the Ubuntu package (to get the service set up correctly)
sudo apt-get install mongodb
# Now remove it and continue with the MongoDB instructions
sudo apt-get remove mongodb
sudo apt-get autoremove
# import key
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
# add trusty repos
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
# update apt
sudo apt-get update
# install the MongoDB package
sudo apt-get install -y mongodb-org

การติดตั้งสำเร็จและต้องขอบคุณแพคเกจ Ubuntu ที่เรามีทุกอย่างที่จำเป็นสำหรับการบริการ แต่ความพยายามในการเริ่มบริการจะล้มเหลวในขั้นต้น:

$ sudo service mongodb start
Failed to start mongodb.service: Unit mongodb.service is masked.

แก้ไขสิ่งนี้ไม่ยากเกินไป:

$ sudo systemctl unmask mongodb
Removed symlink /etc/systemd/system/mongodb.service.

ตอนนี้เราสามารถเปิดใช้งาน / เริ่มบริการรับสถานะเป็นต้น

$ sudo service mongodb enable
$ sudo service mongodb start
$ sudo service mongodb status
● mongodb.service - LSB: An object/document-oriented database
   Loaded: loaded (/etc/init.d/mongodb; bad; vendor preset: enabled)
   Active: active (running) since Thu 2016-04-14 16:40:35 IST; 7s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 2849 ExecStart=/etc/init.d/mongodb start (code=exited, status=0/SUCCESS)
 Main PID: 1593 (code=exited, status=0/SUCCESS)
    Tasks: 13 (limit: 512)
   Memory: 51.9M
      CPU: 100ms
   CGroup: /system.slice/mongodb.service
           └─2861 /usr/bin/mongod --config /etc/mongodb.conf

ความสำเร็จ - และเราได้ตัวชี้ที่ดีสำหรับไฟล์ปรับแต่งที่ใช้งานอยู่ (ซึ่งอยู่ในkey=valueรูปแบบเก่าดูที่นี่สำหรับตัวอย่างในรูปแบบ YAML ที่แนะนำใหม่กว่า)

หมายเหตุ:จริงๆแล้วจะมีสองไฟล์กำหนดค่า/etc/mongod.confและ/etc/mongodb.confต้องขอบคุณความแตกต่างเล็กน้อยระหว่างสองแพ็คเกจที่เราติดตั้ง จุดบริการที่แอ็คทีฟขณะนี้ชี้ไปที่รูปแบบเก่าโดยค่าเริ่มต้น/etc/mongodb.confคุณสามารถสลับโดยการย้าย / คัดลอกmongod.confไปยังmongodb.confหากคุณต้องการหรือเพียงแค่แก้ไขไฟล์โดยตรง

เมื่อเริ่มต้นเพื่อทดสอบเชื่อมต่อกับฐานข้อมูลด้วยmongoเปลือก:

$ mongo
MongoDB shell version: 3.2.5
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
    http://docs.mongodb.org/
Questions? Try the support group
    http://groups.google.com/group/mongodb-user
Server has startup warnings: 
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] 
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] 
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] 
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] 
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-04-14T16:40:34.962+0100 I CONTROL  [initandlisten] 

หากคุณต้องการกำจัดคำเตือน THP ให้ตรวจสอบคำตอบนี้


1
หลังจากที่บล็อกแรกของรหัสดังกล่าววิ่งผลตอบแทนsudo service mongodb start Failed to start mongodb.service: Unit mongodb.service not found
user1063287

1
ฉันพยายามแก้ไขปัญหาข้างต้นโดยสร้างไฟล์บริการสำหรับ systemd (ตามaskubuntu.com/a/694226/367134 ) นี่คือผลลัพธ์: sudo service mongodb startส่งคืนสิ่งใด ส่งคืนข้อความล้มเหลวด้วยsudo service mongodb status status=2เพื่อแก้ไขปัญหานี้ผมเปลี่ยนเส้นทางในแฟ้มบริการที่สร้างขึ้นใหม่จากการ/etc/mongodb.conf /etc/mongod.confสร้างขึ้นจากคำตอบเดิมของคุณคุณจะได้รับ Mongodb เพื่อเริ่มระบบได้อย่างไร
user1063287

1
การดำเนินการเพิ่มเติมต่อไปนี้เปิดใช้งาน mongodb เพื่อเริ่มต้นการเริ่มต้นระบบสำหรับฉัน: sudo systemctl enable mongodb. ดู: digitalocean.com/community/tutorials/?hl=th
user1063287

1
อ่าค่อนข้างแน่ใจว่าฉันเพิ่งออกจากบรรทัดนั้นเมื่อคัดลอก / วางคำแนะนำของฉันหรือฉันจะล้มเหลวในทำนองเดียวกันขอบคุณสำหรับหัวขึ้น
อดัม C

1
ไม่ได้รับการแก้ไขแน่นอนใน 3.2.8 ดูความคิดเห็นที่ผ่านมา ควรได้รับการแก้ไขใน 3.2.9
Goran Miskovic

-1

หากคุณติดตั้งแล้วลบ mongodb โดย:

sudo apt-get remove mongodb
sudo apt-get autoremove

ลองด้วยคำแนะนำเกี่ยวกับ digitalocean https://www.digitalocean.com/community/tutorials/how-to-install-mongodb-on-ubuntu-16-04


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