Cara memperbaiki pengaturan lokal di memeras Debian

17

Saya kadang-kadang mendapatkan kesalahan lokal dan saya sudah mencoba menjalankan dpkg-reconfigure locales untuk memperbaiki masalah. Inilah hasilnya:

:~$ 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").

Saya mencari / usr / bin / lokal tetapi tidak ada di sistem saya. Apakah saya perlu membuatnya? Apa yang saya letakkan di sana?

Saya juga menemukan pertanyaan terkait yang mengatakan bahwa penyebab masalahnya ada di file sshd_config. File memiliki entri berikut:

AcceptEnv LANG LC_*

Saya terutama khawatir bahwa hal itu dapat menyebabkan masalah bagi VPS saya, jika tidak, itu bukan masalah besar, saya akan dengan senang hati mengabaikan masalahnya. Apa yang harus saya lakukan? Terima kasih!

blogjunkie
sumber
Masalah yang sama ini (LC_CTYPE = UTF-8, yang salah) dapat terjadi ketika Anda login lewat ssh dari Mac ke kotak linux, dan terminal Anda secara otomatis menetapkan variabel lingkungan. Ada kotak centang untuk itu. Hapus centang, dan Anda siap melakukannya. Di iTerm ada di profil-> Terminal Tab.
raarts
Tampaknya ada bug dengan beberapa distribusi berbasis debian (termasuk ubuntu). Menggunakan fr_FR.UTF-8 memberi masalah (dan lokal sudah ada). Melakukan suatu locale-gen frakan membangun semua fr locales (fr_BE, fr_CH dll ...) menyelesaikan masalah. Mungkin cobalocale-gen en
Antony Gibbs

Jawaban:

10

pertama:

sudo apt-get purge locales

kemudian:

sudo aptitude install locales

dan yang terkenal:

sudo dpkg-reconfigure locales

Ini rids sistem lokal, kemudian menginstal ulang lokal dan menurunkan libc6 dari 2,19 menjadi 2,13 yang merupakan masalah. Kemudian konfigurasikan kembali locales.

tkjef
sumber
Saya memiliki masalah yang sama persis. Jadi dengan jawaban ini dan termasuk repositori jessie, saya bisa menginstal localestanpa downgrade libc6.
shgnInc
ini tidak membantu
aexl
8

Jika ini terjadi ketika SSHing ke kotak Anda, tetapi tidak pada konsol, coba konfigurasi ulang klien ssh Anda (pada mesin lokal Anda). Pada Mac OS X misalnya sunting / private / etc / ssh_config dan beri komentar

# SendEnv LANG LC_*

Berkat jabatan bredman di Papan Buletin Rasberry Pi .

Adrian Zaugg
sumber
File ini sekarang: / private / etc / ssh / ssh_config
b4d
7

Saya memiliki masalah ini untuk waktu yang lama dan semua saran yang biasa tentang dpkg-reconfigure locales, local-gen, dll tidak membantu. Jadi saya bermain-main sedikit dengan variabel lingkungan, dan apa yang saya temukan adalah bahwa sistem tersebut merusak LC_CTYPEvariabel lingkungan! UTF-8bukan nilai yang valid untuk itu. Pengaturan untuk en_US.UTF-8memperbaikinya.

Untuk membuat perubahan itu permanen, saya berlari

update-locale LC_CTYPE=en_US.UTF-8

yang menulis /etc/default/locale. Dan kemudian reboot sistem agar berfungsi sepenuhnya.

Hongli Lai
sumber
Sayangnya, ini menghasilkanperl: 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

Saya pernah melihat ini sebelumnya pada pemasangan Debian yang lebih lama, dan meskipun menyebalkan, saya belum pernah melihatnya menyebabkan masalah.

Jika

  /usr/bin/locale 

hilang, coba (sebagai root):

  apt-get install libc-bin

yang seharusnya menginstal libc-bin, menyediakan / usr / bin / locale.

Baris AcceptEnv di sshd_config Anda cukup standar, dan seharusnya tidak menjadi penyebab masalah Anda di sini.

Chad Feller
sumber
libc-bin sudah diinstal, jadi saya memperbaruinya dan mencoba menjalankannya dpkg-reconfigure localeslagi. No joy :(
blogjunkie
Apakah / usr / bin / lokal ada sekarang? Jika demikian, apa output dari: locale -adan apa isinya /etc/default/locale?
Chad Feller
Isi `/ etc / default / locale ': # File dihasilkan oleh update-locale LANG = en_US.UTF-8
blogjunkie
locale -aberi saya: lokal: Tidak dapat mengatur LC_CTYPE ke lokal default: Tidak ada file atau direktori C en_US.utf8 POSIX
blogjunkie
apt mengklaim bahwa libc-bin telah diinstal, tetapi setidaknya satu file hilang (/ usr / bin / locale), dan menginstal ulang libc-bin tampaknya telah memperbaikinya. Bisakah kamu mencoba apt-get install --reinstall locales? Kemudian, untuk ukuran yang baik, cobalah locale-gen, yang akan membuat ulang setiap lokal yang tidak diomortasikan /etc/locale.gen(Anda harus memiliki garis seperti en_US.UTF-8 UTF-8). Setelah ini, lihat apakah locale -aberfungsi.
Chad Feller
2

Melakukan yang berikut, sebagai Manoj, tetapi menambahkannya ke # ~ / .bashrc:

export LC_ALL=en_US.utf8
export LANGUAGE=en_US.utf8
Hauge
sumber
1

Jika Anda mendapatkan kesalahan saat melakukan ssh'ing ke sistem jarak jauh, dan tidak ingin memodifikasi sistem jarak jauh (misalnya dengan mengubah sshd_config), Anda dapat melakukan hal berikut di sistem lokal Anda (dengan asumsi bash)

export LC_ALL=en_US
export LANGUAGE=en_US

lalu ssh user@remote

Manoj Thulasidas
sumber
1

Pada instalasi lokal Debian saya (minimal) benar-benar hilang. Menginstal ( aptitude install locales) dan menjalankannya locale-genberhasil. Jadi teman-teman, lakukan seperti yang disebutkan Chad Feller tetapi periksa apakah paket sudah localesdiinstal terlebih dahulu.

Achim Sperling
sumber
0

Jika Anda menonaktifkan otentikasi PAM untuk ssh in /etc/ssh/sshd_config( UsePAM no) konfigurasi yang bertanggung jawab di /etc/pam.d/logintidak efektif:

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

Hasilnya: /etc/default/localetampaknya tidak berpengaruh.

Jadi, Anda harus mengkonfigurasi klien Anda untuk mengirim vars LANG atau mengekspor env vars di skrip profil seperti ~/.profile, ~/bashrcdll.

Lebih lanjut: http://wiki.debian.org/Locale#Standard

Jan-Philip Loos
sumber
0

Saya menggunakan VPS Jerman dan tidak dapat mengubah lokal karena tidak ada paket bahasa Inggris yang diinstal.

Setelah menginstal saya akhirnya bisa mengubah lokal

aptitude install language-pack-en
valentt
sumber
0

pada sistem Debian ini akan menyelesaikan masalah Anda:

apt-get install locales-all

pada sistem Ubuntu instal paket bahasa tertentu, misalnya:

apt-get install language-pack-en

locale-gen en_US.UTF-8

Geza
sumber
0

Mac terhubung ke instalasi Debian 10 yang baru. Tidak ada jawaban yang di-google-kan di seluruh Stack Exchange membantu. Inilah yang dilakukan (dan juga langsung dan dapat diandalkan):

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

Jalankan ini pada kotak Debian Anda dan itu akan menghentikan terminal mac penghubung dari mengacaukan server lokal ( info lebih lanjut ).

Sebagai bonus, itu bahkan dapat meningkatkan keamanan server.

aexl
sumber