อัปเดตเซิร์ฟเวอร์ arch linux ของฉันและตอนนี้ฉันได้รับ tmux: ต้องการสถานที่ตั้ง UTF-8 (LC_CTYPE) แต่มี ANSI_X3.4-1968


29

ฉันเพิ่งอัปเดตเซิร์ฟเวอร์ Arch Linux ของฉันและในระหว่างกระบวนการ tmux ได้รับการอัปเดต ฉันใช้tmuxในขณะที่การอัปเกรดเกิดขึ้นและใช้งานได้ในภายหลัง แต่ทั้งหมดในช่วงเซสชัน SSH เดียวกัน

อย่างไรก็ตามตอนนี้เมื่อใดก็ตามที่ฉันพยายามที่จะออกtmuxคำสั่งใด ๆ ที่ฉันได้รับข้อผิดพลาดนี้:

tmux: need UTF-8 locale (LC_CTYPE) but have ANSI_X3.4-1968

นี่คือผลลัพธ์จากlocale -aบนเซิร์ฟเวอร์:

$ locale -a
C
POSIX

และบนเครื่องของฉัน (Ubuntu 15.10):

$ locale -a
C
C.UTF-8
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
POSIX

เกิดอะไรขึ้นและฉันจะแก้ไขได้อย่างไร

คำตอบ:


32

สิ่งเดียวกันนั้นเกิดขึ้นกับฉัน สร้างในสิ่งที่โทมัสกล่าวข้างต้นก็สามารถที่จะแก้ไขได้โดยการ uncommenting en_US.UTF-8 UTF-8ในของฉัน/etc/locale.genไฟล์ (ก่อนหน้านี้ไม่มีสายที่ได้รับการ uncommented) locale-genแล้วทำงาน


ตัวอย่างเช่นการอัปเกรดอาจเขียนทับlocale.genไฟล์ที่คุณกำหนดเอง
Thomas Dickey

@ThomasDickey Arch Linux ARM น่าจะเป็นเรื่องโง่เพราะ Arch Linux ARM ทำสิ่งที่ค่อนข้างโง่ในภาพเริ่มต้นเช่นการจัดส่งด้วยแพ็คเกจไร้ประโยชน์ที่ไม่ทำงานเพราะขาดการพึ่งพา ฉันรู้ว่าฉันไม่เคยแตะไฟล์นั้นเลย
Hitechcomputergeek

และจากการตัดสินจากชื่อผู้ใช้ของ @ RPiAwesomeness ฉันเดาว่าเซิร์ฟเวอร์ที่สงสัยจะเป็น Raspberry Pi ที่ใช้งาน Arch Linux ARM (btw ฉันเรียกใช้ Ubuntu บนแล็ปท็อปของฉันและ Arch บนเซิร์ฟเวอร์ Pi ของฉันด้วย)
Hitechcomputergeek

@ Hitechcomputergeek แน่นอนว่ามันเป็นเดสก์ท็อป Ubuntu ที่เหมาะสม 15.10 และเซิร์ฟเวอร์คือ Pi 2 ที่มี Arch Linux ARM: D
RPiAwesomeness

1
ฉันมีปัญหาเดียวกันในการอัปเกรดเป็น Debian 9 Stretch เนื่องจากระบบภาษาของฉันคือ en_CA.UTF-8 นั่นคือยกเลิกการแสดงความคิดเห็นใน /etc/locale.gen แต่ en_US.UTF-8 ถูกคอมเม้นต์และไม่มี tmux นั้นโยนข้อผิดพลาดที่แน่นอน ดังนั้นที่แนะนำถ้าสถานที่ของคุณเป็น en_US แล้วคุณจะไม่เห็นปัญหานี้
ศาสตราจารย์ Falken

3

การใช้ลิงค์นี้เพื่อแก้ปัญหาของฉัน:

sudo localectl set-locale LANG=en_CA.UTF-8
# or change to en_US.UTF-8 depends on your locale-gen

มันสร้างไฟล์/etc/locale.confที่แก้ไขปัญหานี้


ฉันต้องทำนอกเหนือจากข้างต้นเพื่อแก้ไขปัญหานี้สำหรับราสเบอร์รี่ที่วิ่งด้วยแขนโค้ง ดังนั้นฉันจึงใช้sudo localectl set-locale LANG=nl_BE.UTF-8ฉันวิ่งเข้าไปในข้อผิดพลาดorg.freedesktop.PolicyKit1 not provided on daemonซึ่งทำให้ฉันเดินผิดเท้าอยู่พักหนึ่ง แต่ข้อผิดพลาดนี้เป็นเพียงเพราะฉันรันคำสั่งโดยไม่ต้องsudo(ฉันมีนิสัยที่ไม่ดีในการออกจากเทอร์มินัลเปิดที่ยกระดับแล้ว)
oneindelijk

2

บางทีการอัปเกรดของคุณอาจแทนที่นามแฝงของโลแคลที่คุณใช้และไม่ได้ให้เส้นทางการอัปเกรดที่มีประโยชน์กับชื่อใหม่ คุณสามารถสร้างข้อมูลตำแหน่งที่ตั้งใหม่บนเซิร์ฟเวอร์ แต่โปรดจำไว้ว่าปัญหาอาจอยู่ในไฟล์ของคุณ/etc/locale.genหรือlocale.conf

อ่านเพิ่มเติม:


2

ฉันมีอันนี้เช่นกัน ทางออกของฉันคือ ...

apt search locales

ฉันได้รับรายการแล้วติดตั้ง ...

apt install locales-all

คำถามที่กล่าวถึง Arch Linux ซึ่งไม่ได้ใช้ฉลาดในการจัดการแพคเกจ
แมตต์

-1

echo "LC_ALL = en_US.UTF-8" >> / etc / environment
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
echo "LANG = en_US.UTF-8"> / etc / locale .conf
locale-gen en_US.UTF-8


เหตุใดจึงแก้ปัญหาได้ และคำตอบของคุณแตกต่างจากคำตอบที่มีอยู่แล้วอย่างไร
nohillside
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.