lỗi cài đặt mongo trong máy ảo


40

Tôi cố gắng cài đặt mongo bằng tài liệu mongo: Cài đặt MongoDB trên Ubuntu không có lỗi nào được đề cập trong quá trình cài đặt. Nhưng khi tôi chạy mongolệnh sau, lỗi đã được hiển thị trong terminal.

Không khởi tạo toàn cầu: BadValue Không hợp lệ hoặc không có ngôn ngữ người dùng được đặt. Vui lòng đảm bảo các biến môi trường LANG và / hoặc LC_ * được đặt chính xác

Câu trả lời:


89

Có vẻ như các localecài đặt của bạn bị hỏng hoặc không tồn tại trên VM đó hoặc ít nhất là phiên đó trên VM đó. Một trong những phụ thuộc ( tăng ) của MongoDB sẽ thất bại khi ngôn ngữ không được đặt chính xác (xem SERVER-9032 ). Để tham khảo, trước khi thay đổi trong SERVER-9032, sự cố này vẫn xảy ra nhưng trông như thế này .

Đôi khi đăng xuất và đăng nhập lại có thể khắc phục nó (chỉ bị hỏng cho phiên hiện tại) hoặc bạn có thể thử chạy sudo locale-genđể đảm bảo việc tạo thành công.

Trong khi đó, như một cách giải quyết để chạy mongo(hoặc mongodv.v.), chỉ cần đặt LC_ALLbiến của bạn theo cách thủ công trước khi bắt đầu chương trình:

export LC_ALL=C
mongo 

Chúng ta có nên cấu hình miền địa phương khi tạo VM mới không?
Alex

1
Phụ thuộc vào cách bạn cài đặt hệ điều hành - hầu hết các luồng thiết lập / giao diện người dùng sẽ chăm sóc việc này cho bạn bằng cách hỏi bạn đang ở đâu và sử dụng ngôn ngữ nào - nếu bạn đi học cũ, bạn sẽ phải tự làm việc này, nhưng Tôi khá chắc chắn rằng tôi đã không thấy một màn hình lựa chọn địa phương trong nhiều năm. Về cơ bản, không phải là không có lý khi hy vọng điều này sẽ được thực hiện cho bạn và bạn chỉ nên nghe về nó khi nó bị vặn vẹo theo một cách nào đó.
Adam C

Cảm ơn, đó là một CentOS Vm vì vậy tôi nghĩ rằng tôi cần một nhiệm vụ Ansible cho điều đó!
Alex

15

Tôi cũng đã thử cài đặt MongoDB trên Ubuntu 12.04 và gặp lỗi tương tự trên máy ảo (XEN). Đối với tôi, modifiying /etc/default/localeđã làm điều đó. Tôi đã làm cho nó hoạt động với các cài đặt này:

LANG=en_US.UTF-8
LANGUAGE=en_US
LC_ALL=en_US.UTF-8

Hoặc, một cấu hình làm việc khác sẽ là (nhớ các trích dẫn và: en):

LANG="en_US.UTF-8"
LANGUAGE="en_US:en"
LC_ALL="en_US.UTF-8"

Cách giải quyết của Adam Cexport cũng giúp ích và có lẽ là câu trả lời phức tạp hơn.


4

Mặc dù các câu trả lời khác được cung cấp ở đây giải quyết vấn đề một cách chính xác, câu hỏi Stackoverflow sau đây đã đưa tôi đến vấn đề thực sự là gì khi cài đặt MongoDB trong máy ảo Vagrant và gặp lỗi trên:

Vấn đề này xuất hiện bởi vì máy chủ đặt ngôn ngữ cho khách thông qua ssh.

Do đó, câu trả lời đề xuất ghi đè lên vị trí máy chủ trong Vagrantfile sẽ giải quyết nó vĩnh viễn chỉ bằng một dòng:

Vagrant.configure(2) do |config|

    ENV['LC_ALL']="en_US.UTF-8"

    # ...

end

Cũng lưu ý các ý kiến ​​về việc nó không sửa đổi giá trị LC_ALL thực tế trên máy chủ.


1

Dựa trên https://askubfox.com/a/227513/59618 này, bạn có thể chỉ cần:

$ sudo locale-gen "en_US.UTF-8"
Generating locales...
  en_US.UTF-8... done
Generation complete.

$ sudo dpkg-reconfigure locales
Generating locales...
  en_US.UTF-8... up-to-date
Generation complete.

không làm việc cho tôi
Iman Mohamadi
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.