Không thể thay đổi ngôn ngữ vĩnh viễn trên máy chủ 16.04


9

Tôi đã thiết lập máy chủ Ubuntu 16.04 mới, nhưng khi tôi cố gắng thay đổi vĩnh viễn cài đặt ngôn ngữ, nó sẽ thất bại và trở lại vị trí POSIX.

localemang lại kết quả như sau:

LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

Theo hiểu biết của tôi, điều này có nghĩa là không có ngôn ngữ nào được đặt cả, vì tài liệu nói rằng POSIX là " mã hóa ngược, mã hóa ASCII, giống như C ".

Để đảm bảo các địa điểm de_AT.utf8en_US.utf8có mặt trên hệ thống của tôi, tôi đã chạy locale -a, kết quả:

C
C.UTF-8
POSIX
de_AT.utf8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8

Xin lưu ý sự không nhất quán với C.UTF-8, nhưng de_AT.utf8! Điều khiến tôi lo lắng hơn nữa là POSIX là mục thứ ba, trong khi trên một hệ thống làm việc khác, nó là danh sách cuối cùng.

Để thay đổi ngôn ngữ của tôi en_US.utf8, tôi đã gõ sudo update-locale LANG=en_US.utf8. Các localelệnh vẫn cho thấy miền địa phương POSIX. Sau khi đăng xuất và đăng nhập mới, localevẫn hiển thị miền địa phương POSIX. Sau khi khởi động lại, localevẫn hiển thị miền địa phương POSIX.

Tuy nhiên, khi tôi gõ export LANG=en_US.utf8, nó hoạt động tạm thời, nhưng chỉ cho đến khi đăng xuất. Như vậy, tôi khá chắc chắn rằng các địa phương đã được tạo chính xác.

Tôi không có ý kiến. Tôi đã thử tái tạo tất cả các địa phương, nhưng có vẻ như /etc/default/localechỉ đơn giản là bị bỏ qua.

Để hoàn thành, /etc/default/localechỉ chứa dòngLANG=en_US.utf8

CẬP NHẬT: // Tôi đã thử chạy sudo localectl set-locale LANG=en_US.UTF-8localectlcũng cho tôi thấy rằng nó đã đặt ngôn ngữ, nhưng ngay cả sau khi khởi động lại, localevẫn hiển thị các ký tự POSIX và không phải ASCII vẫn không được hiển thị chính xác.


1
/etc/default/localeđược đọc bởi PAM. Bạn có thể vô hiệu hóa PAM?
Gunnar Hjalmarsson

Bạn đã thử systemdcách : localectl set-locale LANG=C.UTF-8?
EdiD

@GunnarHjalmarsson Không phải là tôi sẽ nhận ra. Làm thế nào tôi có thể kiểm tra?
MechMK1

@EdiD Tôi đã thử, khởi động lại, nhưng không thay đổi
MechMK1

Không chắc. PAM phải được bật trên bản cài đặt mới và nếu bạn không thay đổi bất cứ thứ gì trong /etc/pam.dđó, nó sẽ hoạt động. Nhưng bây giờ là một hack, bạn có thể muốn tạo /etc/profile.d/mylocalesetting.shvà thêm dòng export LANG=en_US.UTF-8.
Gunnar Hjalmarsson

Câu trả lời:


10

Những gì tôi cuối cùng đã làm là sự kết hợp của các kỹ thuật trên

Tôi mới làm xong

dpkg-reconfigure locales

và chọn tiếng Anh, utf8, sau đó:

localedef -i en_US -c -f UTF-8 en_US.UTF-8

Cũng được chỉnh sửa / etc / default / locale để trông giống như:

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

Và sau khi khởi động lại, khi tôi gõ miền địa phương, nó trông như thế này:

LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

Và không còn cảnh báo nào nữa ...


8

Câu trả lời thực sự liên quan đến PAM, như Gunnar Hjalmarsson đã đề cập trong một bình luận. PAM đã bị vô hiệu hóa thông qua sshd_config, mặc dù tôi thực sự không nhớ là mình đã làm như vậy.

Để tóm tắt: Nếu /etc/default/localedường như bị bỏ qua, hãy kiểm tra xem PAM có được bật không.


6

Chạy các lệnh sau:

locale-gen en_US.UTF-8
dpkg-reconfigure locale
dpkg-reconfigure keyboard-configuration
localedef -i en_US -c -f UTF-8 en_US.UTF-8
reboot
locale

Không hoạt động. localevẫn hiển thị POSIX cho mọi thứ
MechMK1

Tôi giả sử bạn đã root để chạy các lệnh đó? Tôi không cố gắng để xúc phạm, chỉ muốn chắc chắn.
Videonauth

Vâng, tất nhiên. Không có thông báo lỗi hoặc bất cứ điều gì tương tự.
MechMK1

1
ý bạn là địa phương?
realtebo

Tôi đang làm điều này và có vẻ như là "dpkg-cấu hình lại địa phương" thì mọi thứ sẽ hoạt động.
Hugo

0

Khi triển khai một số máy ảo 16.04.5 mới, tôi gặp phải vấn đề chính xác này, nhưng xrdpthay vì SSH. Tôi đã giải quyết điều này bằng cách thêm vào như sau /etc/pam.d/common-session:

session required        pam_env.so readenv=1 user_readenv=1 envfile=/etc/default/locale

Nếu bạn nhạy cảm với các ngôn ngữ và văn hóa bổ sung trên các phương thức đăng nhập, bạn có thể đặt ngôn ngữ này vào /etc/pam.d/xrdp-sesman(hoặc một tệp cấu hình PAM khác). Đây có thể là lý do tại sao nó không có ở đó theo mặc định? Đây là cấu hình PAM sau đây theo mặc định trên các bản cài đặt VM mới của chúng tôi:

cron, lightdm *, đăng nhập, polkit-1, sshd, su và sudo.

Hy vọng điều này sẽ giúp ai đó với vấn đề này được cung cấp các phương thức đăng nhập khác ngoài SSH.

Có ai biết thực hành tốt nhất cho cấu hình PAM / sửa đổi chung- * không? Nếu có một cách tốt hơn để thực hiện điều này thì sẽ tốt hơn nếu hạ nó xuống.

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.