เหตุใดฉันจึงได้รับข้อผิดพลาด 'ชื่อชนกันระหว่าง ... ' และฉันจะแก้ไขได้อย่างไร


11

ทุกครั้งที่ฉันพยายามที่จะเปิดตัวvimหรือemacsแม้กระทั่งtop(ฉันคิดว่ามันเป็นจริงคำสั่งใด ๆ ที่ใช้ ncurses) ในเทอร์มินัล unix (บนคอมพิวเตอร์คลัสเตอร์มากกว่า ssh) ฉันจะได้รับข้อผิดพลาด 'ชนชื่อระหว่าง xxx' อย่างต่อเนื่อง

Name collision between dumb dumb
Name collision between unknown unknown
Name collision between lpr lpr
Name collision between glasstty glasstty
Name collision between vanilla vanilla
Name collision between ansi+local1 ansi+local1
Name collision between ansi+local ansi+local
......
Name collision between terminet1200 terminet1200 terminet1200 terminet1200 terminet1200 terminet1200 terminet1200 terminet1200 terminet1200 terminet1200 terminet1200 terminet1200
Name collision between h19-a h19-a h19-a h19-a h19-a h19-a h19-a h19-a h19-a h19-a h19-a h19-a
Name collision between h19-bs h19-bs h19-bs h19-bs h19-bs h19-bs h19-bs h19-bs h19-bs h19-bs h19-bs h19-bs
Name collision between h19-us h19-us h19-us h19-us h19-us h19-us h19-us h19-us h19-us h19-us h19-us h19-us
Name collision between h19 h19 h19 h19 h19 h19 h19 h19 h19 h19 h19 h19
......

จากการวิจัยบางอย่างที่ฉันทำบนเว็บสิ่งนี้ควรเกี่ยวข้องกับ TERMCAP / TERMINFO และฉันคิดว่าสิ่งนี้เริ่มเกิดขึ้นหลังจากฉันใช้หน้าจอ GNU และในความเป็นจริงเมื่อฉันอยู่ในเซสชั่นหน้าจอ GNU เสียงเรียกเข้าและ emacs ทำงานได้ดี (ยกเว้นการแมปปุ่มแปลก ๆ บางอย่างเช่นแป้นลูกศรไม่ทำงาน)

ฉันได้ลองตั้งค่าตัวแปรสภาพแวดล้อม TERMCAP เป็นไฟล์ที่ไม่มีอยู่แล้วเนื่องจากฉันได้อ่านที่ไหนสักแห่งบนอินเทอร์เน็ตและทำให้กลุ่มทำงานได้ (ด้วยการตั้งค่าที่แตกต่างจากที่เคยใช้) แต่ไม่ใช่ emacs ...

คุณรู้ไหมว่าฉันจะทำอย่างไรเพื่อแก้ไขปัญหานี้?


คุณใช้ตัวแปร unix อะไร? ถ้าลีนุกซ์, อะไรคือการกระจาย? (ถ้าคุณไม่รู้ให้โพสต์ผลลัพธ์ของuname -a)
Gilles 'หยุดความชั่วร้าย'

นี่คือผลลัพธ์: Linux [host] 2.6.18-274.3.1.el5 # 1 SMP ศุกร์ 26 สิงหาคม 18:49:02 EDT 2011 x86_64 x86_64 x86_64 GNU / Linux
อัล

2
คุณอาจมีไลบรารี terminfo / termcap ที่ซ้ำกัน ทำสิ่งนี้: เรียกใช้ "strace -o xxx emacs -nw" และออกจาก emacs ทันที จากนั้นเปิดไฟล์ xxx แล้วค้นหาข้อความแสดงข้อผิดพลาด สองบรรทัดด้านบนคุณควรดูว่าไลบรารีคำศัพท์ใดถูกเปิด อาจมีรายการเทอร์มินัลซ้ำซ้อนของคุณ
กัส

ขอบคุณฉันเห็นในการติดตามว่ามันพยายามเปิดห้องสมุดบางอย่างในโฟลเดอร์เอน ธ อร์มไพ ธ การแจกจ่าย lib ซึ่งไม่มีส่วนเกี่ยวข้องกับ emacs ดังนั้นฉันจำได้ว่าฉันได้เพิ่มโฟลเดอร์นั้นใน LD_LIBRARY_PATH ของฉัน (เป็นวิธีเดียวที่ฉันรู้ เรียกใช้โค้ดที่คอมไพล์แล้วโดยใช้ไลบรารีที่แชร์เฉพาะ ... )
อัล

คำตอบ:


4

การแก้ไขปัญหาที่ถูกฉันได้ระบุไว้ในของฉันที่มีโฟลเดอร์ที่ใช้ร่วมกันกับห้องสมุดจำนวนมากซึ่งบางส่วนอาจจะซ้ำกันของคนอื่น ๆ ฉันคิดว่ามันเป็นห้องสมุด~/.bashrcLD_LIBRARY_PATHncurses


คุณไม่ได้เขียนวิธีการหลีกเลี่ยง: คุณเพิ่งใส่ EPD libs ที่ส่วนท้ายของ LD_LIBRARY_PATH หรือไม่?
K. -Michael Aye
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.