Dlaczego dostaję błędy „Nazwij kolizję między…” i jak mogę je naprawić?


11

Za każdym razem, gdy próbuję uruchomić vimlub emacsnawet top(myślę, że w rzeczywistości jest to dowolne polecenie, które używa ncurses) w terminalu unix (na komputerze w klastrze przez ssh), otrzymuję ciągły strumień błędów „Kolizja nazw między xxx”, takich jak to:

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
......

Według niektórych badań, które przeprowadziłem w Internecie, powinno to być związane z TERMCAP / TERMINFO i myślę, że zaczęło się to dziać po użyciu ekranu GNU. I faktycznie, kiedy jestem w sesji ekranowej GNU, vim i emacs działają dobrze (oprócz niektórych dziwnych mapowań klawiszy, na przykład klawisze strzałek nie działają)

Próbowałem ustawić zmienną środowiskową TERMCAP na nieistniejący plik, jak czytałem gdzieś w Internecie, i spowodowało to, że vim działał (z innymi ustawieniami niż moje zwykłe), ale nie emacs ...

Czy wiesz, co mogę zrobić, aby rozwiązać ten problem?


Jakiego wariantu unixa używasz? Jeśli Linux, jaka dystrybucja? (Jeśli nie wiesz, opublikuj wynik uname -a.)
Gilles 'SO- przestań być zły'

Oto wynik: Linux [host] 2.6.18-274.3.1.el5 # 1 SMP Pt 26 sierpnia 18:49:02 EDT 2011 x86_64 x86_64 x86_64 GNU / Linux
Al.

2
Prawdopodobnie masz zduplikowane biblioteki terminfo / termcap. Zrób to: uruchom „strace -o xxx emacs -nw” i natychmiast zakończ emacsa. Następnie otwórz plik xxx i wyszukaj komunikat o błędzie. Kilka wierszy powyżej powinieneś zobaczyć, które biblioteki termin * zostały otwarte; prawdopodobnie są to zduplikowane wpisy terminala.
angus

Dzięki, zobaczyłem w śladzie, że próbuje otworzyć niektóre biblioteki w folderze lib Enthought Python Distribution, które nie mają nic wspólnego z emacsem, więc przypomniałem sobie, że dodałem ten folder do mojej LD_LIBRARY_PATH (jest to jedyny sposób, w jaki wiem uruchom skompilowany kod przy użyciu określonych bibliotek współdzielonych ...)
Al.

Odpowiedzi:


4

Rozwiązane: Problem został określony w mojej ~/.bashrcan, LD_LIBRARY_PATHktóra zawierała folder z wieloma bibliotekami współdzielonymi, z których niektóre były prawdopodobnie duplikatami innych. Myślę, że w moim przypadku były to ncursesbiblioteki.


nie piszesz, jak to obejść: czy umieściłeś biblioteki EPD na końcu LD_LIBRARY_PATH?
K.-Michael Aye
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.