Bisakah saya menggunakan 14,04 Paket MongoDB dengan 16,04?

10

Sayangnya paket resmi Ubuntu untuk MongoDB masih macet pada 2.6, yang merupakan kuno pada saat ini ( bug ini tidak diambil untuk yang jelas, cerdik atau xenial).

MongoDB belum merilis paket untuk 16,04 (Xenial), jadi bagaimana saya bisa menggunakan paket 14,04 (Terpercaya) untuk menginstal MongoDB 3,2+ pada 16,04?

Adam C
sumber
Ya kamu bisa. Jika Anda meningkatkan, itu harus mudah. Jika Anda baru menginstal 16.04, cukup ikuti langkah-langkahnya di sini: askubuntu.com/questions/724749/…
KhoPhi
@Rexford Seperti yang akan Anda lihat dalam jawaban di bawah ini, tidak semudah itu di 16.04 dengan paket lama (layanan tidak akan diinstal dengan benar dengan instalasi baru)
Adam C

Jawaban:

14

Ini sedikit hack tapi ya, ini bisa dilakukan. Ada langkah tidak berdokumen yang diperlukan untuk benar-benar memulai layanan dan (anehnya) kecuali Anda ingin menyelesaikan konversi pekerjaan pemula secara manual, Anda harus menginstal mongodbpaket Ubuntu terlebih dahulu, kemudian menghapusnya sehingga Anda memiliki layanan yang dapat digunakan. Instalasi langsung dari paket - paket MongoDB tidak akan memberi Anda layanan yang berfungsi pada 16,04 yang baru.

Pembaruan - Juli 2016: Perbaikan resmi untuk ini (menambahkan dukungan untuk 16,04 ke paket) telah selesai di cabang 3,3 dev sebagai bagian dari SERVER-23043 - dan telah dirilis sebagai backport dalam seri 3.2 sebagai bagian dari 3.2. 7 . Oleh karena itu, jika Anda menggunakan 3.2.7+ Anda tidak perlu melakukan ini dan instalasi paket MongoDB resmi hanya bisa berfungsi.

Bagaimanapun, setelah melakukan add / remove, ikuti instruksi biasa untuk 14,04, yang dirangkum di sini:

# 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

Instalasi berhasil, dan berkat paket Ubuntu kami memiliki semua bagian yang diperlukan untuk layanan, tetapi upaya untuk memulai layanan pada awalnya akan gagal:

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

Memperbaiki ini tidak terlalu sulit:

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

Sekarang kita dapat mengaktifkan / memulai layanan, mendapatkan statusnya dll.

$ 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

Berhasil - dan kami mendapatkan pointer yang bagus ke file konfigurasi aktif (yang dalam key=valueformat lama , lihat di sini untuk contoh dalam format YAML yang disarankan yang lebih baru).

Catatan: Sebenarnya akan ada dua file konfigurasi /etc/mongod.confdan /etc/mongodb.confberkat sedikit perbedaan antara dua paket yang telah kami instal. Layanan yang sekarang aktif menunjuk ke format lama yang secara default /etc/mongodb.conf- Anda dapat beralih dengan memindahkan / menyalin mongod.confke mongodb.confjika Anda inginkan, atau cukup mengedit file secara langsung.

Setelah dimulai, untuk menguji, sambungkan ke database dengan mongoshell:

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

Jika Anda ingin menghilangkan peringatan THP, periksa jawaban ini .

Adam C
sumber
1
Setelah blok kode pertama Anda di atas, jalankan sudo service mongodb startpengembalian Failed to start mongodb.service: Unit mongodb.service not found.
user1063287
1
Saya mencoba menyelesaikan di atas dengan membuat file layanan untuk systemd (sesuai askubuntu.com/a/694226/367134 ). Ini hasilnya: sudo service mongodb starttidak menghasilkan apa-apa. sudo service mongodb statusmengembalikan pesan yang gagal dengan status=2. Untuk memperbaikinya, saya mengubah jalur di file layanan yang baru dibuat dari /etc/mongodb.confmenjadi /etc/mongod.conf. Membangun jawaban asli Anda, bagaimana Anda mendapatkan mongodb untuk memulai sistem start up?
user1063287
1
Tindakan tambahan berikut diaktifkan mongodb untuk memulai pada sistem startup untuk saya: sudo systemctl enable mongodb. Lihat: digitalocean.com/community/tutorials/…
user1063287
1
Ah, cukup yakin saya baru saja meninggalkan garis itu ketika menyalin / menempel instruksi saya, atau saya akan gagal sama, terima kasih untuk kepala
Adam C
1
Jelas tidak diperbaiki di 3.2.8. Lihat komentar terakhir . Harus ditangani di 3.2.9.
Goran Miskovic
-1

Jika Anda telah menginstalnya, hapus mongodb dengan:

sudo apt-get remove mongodb
sudo apt-get autoremove

Coba dengan rekomendasi di digitalocean https://www.digitalocean.com/community/tutorials/how-to-install-mongodb-on-ubuntu-16-04

grey87
sumber
3
Meskipun jawaban Anda mungkin valid, lebih baik memberikan langkah-langkah yang tercantum dalam tautan Anda di sini. Tautan dan isinya dapat berubah seiring waktu yang akan membuat jawaban Anda tidak berguna.
Videonauth