Cách sửa lỗi cài đặt ngôn ngữ trong Debian nén


17

Thỉnh thoảng tôi gặp lỗi cục bộ và tôi đã cố chạy dpkg-cấu hình lại các ngôn ngữ để khắc phục sự cố. Đây là đầu ra:

:~$ sudo dpkg-reconfigure locales
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_CTYPE = "UTF-8",
    LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
/usr/bin/locale: Cannot set LC_CTYPE to default locale: No such file or directory
/usr/bin/locale: Cannot set LC_ALL to default locale: No such file or directory
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_CTYPE = "UTF-8",
    LANG = "C"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_CTYPE = "UTF-8",
    LANG = "C"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

Tôi đã tìm / usr / bin / locale nhưng nó không tồn tại trên hệ thống của tôi. Tôi có cần tạo nó không? Tôi để cái gì vào đó?

Ngoài ra tôi tìm thấy một câu hỏi liên quan nói rằng nguyên nhân của vấn đề của anh ta là trong tệp sshd_config. Các tập tin có mục sau đây:

AcceptEnv LANG LC_*

Tôi chủ yếu lo ngại rằng nó có thể gây ra sự cố cho VPS của tôi, nếu không, nếu không có gì quan trọng thì tôi sẽ vui lòng bỏ qua vấn đề này. Tôi nên làm gì? cảm ơn!


Vấn đề tương tự này (LC_CTYPE = UTF-8, sai) có thể xảy ra khi bạn đăng nhập qua ssh từ máy Mac sang hộp linux và thiết bị đầu cuối của bạn tự động đặt các biến môi trường. Có một hộp kiểm cho điều đó. Bỏ chọn nó, và bạn tốt để đi. Trong iTerm, nó nằm trong hồ sơ-> Terminal Tab.
raarts

Dường như có một lỗi với một số phân phối dựa trên debian (bao gồm cả Ubuntu). Sử dụng fr_FR.UTF-8 đã gây ra sự cố (và ngôn ngữ đã tồn tại). Làm một locale-gen frsẽ xây dựng tất cả các địa phương fr (fr_BE, fr_CH vv ...) giải quyết vấn đề. Có lẽ thửlocale-gen en
Antony Gibbs

Câu trả lời:


10

Đầu tiên:

sudo apt-get purge locales

sau đó:

sudo aptitude install locales

và nổi tiếng:

sudo dpkg-reconfigure locales

Điều này giúp hệ thống các địa phương, sau đó cài đặt lại các địa điểm và hạ cấp libc6 từ 2,19 xuống 2,13, đây là vấn đề. Sau đó cấu hình lại địa phương.


Tôi có cùng một vấn đề chính xác. Vì vậy, bằng câu trả lời này và bao gồm các kho lưu trữ jessie, tôi có thể cài đặt localesmà không cần hạ cấp libc6.
shgnInc

điều này không có ích
aexl

8

Nếu điều này xảy ra khi SSH vào hộp của bạn, nhưng không phải trên bảng điều khiển, hãy thử cấu hình lại máy khách ssh của bạn (trên máy cục bộ của bạn). Trên Mac OS X, ví dụ chỉnh sửa / private / etc / ssh_config và nhận xét

# SendEnv LANG LC_*

Cảm ơn bài viết của bredman trên Bảng tin Rasberry Pi .


Tập tin này bây giờ: / private / etc / ssh / ssh_config
b4d

7

Tôi đã có vấn đề này trong một thời gian dài và tất cả các lời khuyên thông thường về các địa điểm cấu hình lại dpkg, locale-gen, v.v. Vì vậy, tôi đã chơi xung quanh một chút với các biến môi trường, và điều tôi nhận thấy là hệ thống đang hoạt động trên LC_CTYPEbiến môi trường! UTF-8không phải là một giá trị hợp lệ cho nó. Đặt nó để en_US.UTF-8sửa nó.

Để thay đổi vĩnh viễn, tôi đã chạy

update-locale LC_CTYPE=en_US.UTF-8

mà viết cho /etc/default/locale. Và sau đó khởi động lại hệ thống để nó có hiệu lực hoàn toàn.


Thật không may, điều này mang lạiperl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LC_CTYPE = "UTF-8", LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). *** update-locale: Error: invalid locale settings: LC_CTYPE=en_US.UTF-8
aexl

2

Tôi đã thấy điều này trước đây trên các bản cài đặt Debian cũ hơn và trong khi khó chịu, tôi chưa bao giờ thấy nó gây ra sự cố.

Nếu

  /usr/bin/locale 

bị thiếu, hãy thử (với quyền root):

  apt-get install libc-bin

cần cài đặt libc-bin, cung cấp / usr / bin / locale.

Dòng AcceptEnv trong sshd_config của bạn khá chuẩn và không phải là nguyên nhân gây ra sự cố của bạn ở đây.


libc-bin đã được cài đặt, vì vậy tôi đã cập nhật nó và thử chạy dpkg-reconfigure localeslại. Không có niềm vui :(
blogjunkie

Hiện / usr / bin / locale có tồn tại không? Nếu vậy, đầu ra của: locale -avà trong đó là /etc/default/localegì?
Chad Feller

Nội dung của `/ etc / default / locale ': # Tệp được tạo bởi update-locale LANG = en_US.UTF-8
blogjunkie

locale -acho tôi: locale: Không thể đặt LC_CTYPE thành ngôn ngữ mặc định: Không có tệp hoặc thư mục như vậy C en_US.utf8 POSIX
blogjunkie

apt đã tuyên bố rằng libc-bin đã được cài đặt, nhưng ít nhất một tệp bị thiếu (/ usr / bin / locale) và cài đặt lại libc-bin dường như đã sửa nó. Bạn có thể thử apt-get install --reinstall localeskhông Sau đó, để có biện pháp tốt, hãy thử locale-gen, nó sẽ tạo lại bất kỳ vị trí nào không bị thiếu /etc/locale.gen(bạn nên có một dòng như en_US.UTF-8 UTF-8). Sau này, xem nếu locale -alàm việc.
Chad Feller

2

Đã làm như sau, như Manoj, nhưng đã thêm nó vào # ~ / .bashrc:

export LC_ALL=en_US.utf8
export LANGUAGE=en_US.utf8

1

Nếu bạn gặp lỗi trong khi ssh'ing đến một hệ thống từ xa và không muốn sửa đổi hệ thống từ xa (ví dụ: bằng cách thay đổi sshd_config), bạn có thể thực hiện các thao tác sau trên hệ thống cục bộ của mình (giả sử bash)

export LC_ALL=en_US
export LANGUAGE=en_US

và sau đó ssh user@remote


1

Trên cài đặt Debian mới (tối thiểu), các ngôn ngữ đã bị thiếu hoàn toàn. Cài đặt nó ( aptitude install locales) và chạy locale-genđã thực hiện các mẹo mặc dù. Vì vậy, các bạn, hãy làm như Chad Feller đã đề cập nhưng kiểm tra xem đã localescài đặt gói đầu tiên chưa.


0

Nếu bạn đã tắt xác thực PAM cho ssh in /etc/ssh/sshd_config( UsePAM no), cấu hình chịu trách nhiệm /etc/pam.d/loginsẽ không hiệu quả:

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

Kết quả: /etc/default/localedường như không có tác dụng.

Vì vậy, bạn phải cấu hình máy khách của mình để gửi các vars LANG hoặc xuất các vars env trong các tập lệnh hồ sơ như ~/.profile, ~/bashrcv.v.

Thêm: http://wiki.debian.org/Locale#St Chuẩn


0

Tôi đã sử dụng VPS tiếng Đức và không thể thay đổi ngôn ngữ vì không cài đặt gói ngôn ngữ tiếng Anh.

Sau khi cài đặt, cuối cùng tôi cũng có thể thay đổi ngôn ngữ

aptitude install language-pack-en

0

trên hệ thống Debian, điều này sẽ giải quyết vấn đề của bạn:

apt-get install locales-all

trên hệ thống Ubuntu cài đặt gói ngôn ngữ cụ thể, ví dụ:

apt-get install language-pack-en

locale-gen en_US.UTF-8


0

Mac kết nối với bản cài đặt Debian 10 mới. Không có câu trả lời nào được đưa ra trên Stack Exchange. Đây là những gì đã làm (và cũng đơn giản và đáng tin cậy):

sed -i "s/^AcceptEnv/#AcceptEnv/g" /etc/ssh/sshd_config

Chạy cái này trên hộp Debian của bạn và nó sẽ ngăn thiết bị đầu cuối mac kết nối làm rối các vị trí máy chủ ( thông tin thêm ).

Là một phần thưởng, điều đó thậm chí có thể cải thiện bảo mật của máy chủ.

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.