Tôi có thể sử dụng 14.04 Gói MongoDB với 16.04 không?


10

Thật không may, gói Ubuntu chính thức cho MongoDB vẫn bị kẹt vào ngày 2.6, điều này rất cổ xưa tại thời điểm này ( lỗi này không được chọn để sinh động, khôn ngoan hoặc xenial).

MongoDB chưa phát hành gói cho 16.04 (Xenial), vậy làm cách nào tôi có thể sử dụng gói 14.04 (Trusty) để cài đặt MongoDB 3.2+ vào ngày 16.04?


Có bạn có thể. Nếu bạn đang nâng cấp, nó sẽ dễ dàng. Nếu bạn mới cài đặt 16.04, chỉ cần thực hiện theo các bước tại đây: askubfox.com/questions/724749/ Đổi
KhoPhi

@Rexford Như bạn sẽ thấy trong câu trả lời bên dưới, không dễ dàng gì trong 16.04 với các gói cũ (dịch vụ sẽ không được cài đặt đúng cách với bản cài đặt mới)
Adam C

Câu trả lời:


14

Đó là một chút hack nhưng có, điều này có thể được thực hiện. Có một bước không cần thiết để thực sự bắt đầu dịch vụ và (thật kỳ lạ) trừ khi bạn muốn thực hiện chuyển đổi công việc bằng tay, bạn cần cài đặt mongodbgói Ubuntu trước, sau đó xóa nó để bạn có dịch vụ có thể sử dụng được. Việc cài đặt thẳng các gói MongoDB sẽ không cung cấp cho bạn dịch vụ hoạt động vào ngày 16.04 mới.

Cập nhật - Tháng 7 năm 2016: Bản sửa lỗi chính thức cho việc này (thêm hỗ trợ cho 16.04 cho các gói) đã được hoàn thành trong nhánh 3,3 dev như một phần của SERVER-23043 - và đã được phát hành dưới dạng backport trong loạt 3.2 như một phần của 3.2. 7 . Do đó, nếu bạn đang sử dụng 3.2.7+, bạn không cần phải làm điều này và cài đặt gói MongoDB chính thức sẽ chỉ hoạt động.

Trong mọi trường hợp, sau khi thực hiện thêm / xóa, hãy làm theo các hướng dẫn thông thường cho 14.04, được tóm tắt tại đây:

# 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

Quá trình cài đặt thành công và nhờ gói Ubuntu, chúng tôi có tất cả các phần cần thiết cho một dịch vụ, nhưng cố gắng khởi động dịch vụ ban đầu sẽ thất bại:

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

Khắc phục điều này không quá khó:

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

Bây giờ chúng tôi có thể kích hoạt / bắt đầu dịch vụ, nhận trạng thái của nó, v.v.

$ 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

Thành công - và chúng tôi nhận được một con trỏ đẹp cho tệp cấu hình hoạt động (ở key=valueđịnh dạng cũ , xem ở đây để biết ví dụ ở định dạng YAML mới hơn được đề xuất).

Lưu ý: Thực sự sẽ có hai tệp cấu hình /etc/mongod.conf/etc/mongodb.confnhờ có sự khác biệt nhỏ giữa hai gói chúng tôi đã cài đặt. Dịch vụ hiện đang hoạt động trỏ đến định dạng cũ theo mặc định /etc/mongodb.conf- bạn có thể chuyển đổi bằng cách di chuyển / sao chép mongod.confsang mongodb.confnếu bạn muốn hoặc chỉ cần chỉnh sửa tệp trực tiếp.

Sau khi bắt đầu, để kiểm tra, kết nối với cơ sở dữ liệu bằng 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] 

Nếu bạn muốn thoát khỏi các cảnh báo THP, hãy xem câu trả lời này .


1
Sau khối mã đầu tiên của bạn ở trên, chạy sudo service mongodb starttrả về Failed to start mongodb.service: Unit mongodb.service not found.
dùng1063287

1
Tôi đã cố gắng giải quyết vấn đề trên bằng cách tạo một tệp dịch vụ cho systemd (theo Askubfox.com/a/694226/367134 ). Đây là kết quả: sudo service mongodb starttrả về không có gì. sudo service mongodb statustrả về một tin nhắn thất bại với status=2. Để khắc phục điều này, tôi đã thay đổi đường dẫn trong tệp dịch vụ mới được tạo từ /etc/mongodb.confsang /etc/mongod.conf. Dựa trên câu trả lời ban đầu của bạn, làm thế nào để bạn có được mongodb để bắt đầu khởi động hệ thống?
dùng1063287

1
Hành động bổ sung sau đây cho phép mongodb khởi động khi khởi động hệ thống đối với tôi : sudo systemctl enable mongodb. Xem: digitalocean.com/community/tutorials/ từ
user1063287

1
À, khá chắc chắn rằng tôi chỉ bỏ dòng đó khi sao chép / dán hướng dẫn của mình, hoặc tôi sẽ thất bại tương tự, cảm ơn vì đã ngẩng cao đầu
Adam C

1
Chắc chắn không cố định trong 3.2.8. Xem bình luận cuối cùng . Nên xử lý trong 3.2.9.
Goran Miskovic

-1

Nếu bạn đã cài đặt nó, hãy loại bỏ mongodb bằng cách:

sudo apt-get remove mongodb
sudo apt-get autoremove

Hãy thử với đề xuất trên digitalocean https://www.digitalocean.com/community/tutorials/how-to-install-mongodb-on-ub Ubuntu-16-04


3
Mặc dù câu trả lời của bạn có thể hợp lệ, nhưng sẽ tốt hơn nếu cung cấp các bước được liệt kê trong liên kết của bạn ở đây. Liên kết và nội dung của chúng có thể thay đổi theo thời gian sẽ khiến câu trả lời của bạn trở nên vô dụng.
Videonauth 17/05/2016
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.