저는 데비안에서 일하고 있습니다. 나는 다음 명령을 실행했습니다.
./configure && make && sudo make install
이 오류가 발생했습니다.
./etc/rxvt-unicode.terminfo", line 57, col 20, terminal 'rxvt-unicode': unknown capability 'kDC5'
./etc/rxvt-unicode.terminfo", line 58, col 19, terminal 'rxvt-unicode': unknown capability 'kDC6'
./etc/rxvt-unicode.terminfo", line 59, col 17, terminal 'rxvt-unicode': unknown capability 'kDN'
./etc/rxvt-unicode.terminfo", line 60, col 18, terminal 'rxvt-unicode': unknown capability 'kDN5'
./etc/rxvt-unicode.terminfo", line 62, col 20, terminal 'rxvt-unicode': unknown capability 'kIC5'
./etc/rxvt-unicode.terminfo", line 63, col 19, terminal 'rxvt-unicode': unknown capability 'kIC6'
./etc/rxvt-unicode.terminfo", line 65, col 21, terminal 'rxvt-unicode': unknown capability 'kEND5'
./etc/rxvt-unicode.terminfo", line 66, col 20, terminal 'rxvt-unicode': unknown capability 'kEND6'
./etc/rxvt-unicode.terminfo", line 68, col 21, terminal 'rxvt-unicode': unknown capability 'kFND5'
./etc/rxvt-unicode.terminfo", line 69, col 20, terminal 'rxvt-unicode': unknown capability 'kFND6'
./etc/rxvt-unicode.terminfo", line 71, col 21, terminal 'rxvt-unicode': unknown capability 'kHOM5'
./etc/rxvt-unicode.terminfo", line 72, col 20, terminal 'rxvt-unicode': unknown capability 'kHOM6'
./etc/rxvt-unicode.terminfo", line 74, col 19, terminal 'rxvt-unicode': unknown capability 'kLFT5'
./etc/rxvt-unicode.terminfo", line 76, col 21, terminal 'rxvt-unicode': unknown capability 'kNXT5'
./etc/rxvt-unicode.terminfo", line 77, col 20, terminal 'rxvt-unicode': unknown capability 'kNXT6'
./etc/rxvt-unicode.terminfo", line 79, col 21, terminal 'rxvt-unicode': unknown capability 'kPRV5'
./etc/rxvt-unicode.terminfo", line 80, col 20, terminal 'rxvt-unicode': unknown capability 'kPRV6'
./etc/rxvt-unicode.terminfo", line 82, col 19, terminal 'rxvt-unicode': unknown capability 'kRIT5'
./etc/rxvt-unicode.terminfo", line 83, col 17, terminal 'rxvt-unicode': unknown capability 'kUP'
./etc/rxvt-unicode.terminfo", line 84, col 18, terminal 'rxvt-unicode': unknown capability 'kUP5'
누구든지 문제를 해결하는 방법을 알고 있나요?
답변1
이것tic
계획 보고서에 따르면능력알려지지 않은. 사용-x
옵션이 말해준다tic
이를 사용자 정의 함수로 생각하세요.
이것애드 혹에서와 같이 고정doc/Makefile
, 이는 다음과 같이 말합니다.
tic $(srcdir)/etc/rxvt-unicode.terminfo
그것을로 바꾸다
tic -x $(srcdir)/etc/rxvt-unicode.terminfo
의견에서 언급했듯이 동일한 목표를 달성하는 다른 방법이 있습니다.
사용자 정의 함수는ncurses 5.0. 이는 확장이므로(그리고 다른 구현과의 호환성은 항상 문제임) 이를 작동시키려면 옵션이 필요합니다.
답변2
데비안 소스 패키지에서 빌드하세요.
당신이 겪고 있는 문제는 부분적으로 원본 소스에서 직접 구축하고 있기 때문입니다. 여기서 그렇게 하는 것은 잘못된 것입니다. 최소한 데비안 소스 패키지를 가져와서 debian/
사용하세요.
데비안 빌드 프로세스를 사용해야 하는 이유
제가 최근에 지적했듯이https://unix.stackexchange.com/a/468218/5132, Stephen Kitt는 이를 수행하는 방법에 대한 단계별 지침을 추가했습니다. 데비안 소스 코드에서 빌드하여 데비안 사람들이 데비안에서 작동하도록 패키지에 넣은 수정 사항 중 하나를 얻거나 (이 예에서와 같이) 일하다.
하나데비안은 원본 rxvt-unicode 소스 코드에 대한 여러 패치를 제공합니다.(데비안에서도 이들 중 다른 것이 필요하다는 것은 의심의 여지가 없습니다)는 패치입니다건물의 terminfo 항목을 끄세요rxvt-unicode에 포함된 소스 코드에서.
그렇지 않으면 어떻게 되나요?
이것 뒤에는 많은 역사가 있으며 그 중 일부는 ncurses doco와 해당 하이퍼링크에서 찾을 수 있습니다. 그러나 이 답변의 목적에 따라 간략한 설명은 다음과 같습니다.
rxvt-unicode에서 제공하는 terminfo 항목에 문제가 있으며 해당 문제 중 하나로 인해 여러 빌드 시간 메시지가 표시됩니다. 변화는 환호를 불러일으켰다아무것10여년 전, 마크 레만(Marc Lehmann)은 그것이 "이미 매우 정확했다"고 주장했습니다. 수년간의 교착상태로 인해 데비안 사람들과 다른 사람들은 조용히 위의 패치를 사용하여 Marc Lehmann의 용어 정보 기록을 완전히 삭제했습니다.ncurses의 자체 패키지를 사용하여 패키징됨대신에.
여기서 제공된 terminfo의 관련 문제는 비표준 함수(예: )를 정의한다는 것입니다 kDC5
. terminfo 데이터베이스 메커니즘의 오랫동안 알려진 문제 중 하나는 user_caps
매뉴얼 페이지에 설명된 대로 고정된 함수 이름 시스템을 가지고 있다는 것입니다. rxvt-unicode에서 제공하는 terminfo 레코드에는 이 고정 시스템의 일부가 아닌 추가 기능이 포함되어 있습니다. 이 -x
옵션이 없으면 tic
명령이 해당 기능에 대해 불평합니다.
이러한 비표준 기능이 해결하는 첫 번째 문제는 terminfo의 또 다른 오랜 문제입니다. 이는 터미널이 입력을 보내는 방법을 적절하게 표현하는 데 있어서 실제로 작업에 달려 있지 않다는 것입니다. 특히 여기서는 키보드 수정자 상태 정보(예: ⇧+ ⌦를 와 구별할 수 있도록 허용 ⌦)를 포함하는 키 입력 제어 시퀀스를 나타내는 표준으로 작동하지 않으므로 이러한 비표준 확장의 발명이 필요합니다. 그러나 문제는 여기서 끝나지 않습니다. 기본 모델이 터미널 및 터미널 에뮬레이터가 실제로 작동하는 방식과 다르기 때문입니다. 그러나 이는 이 답변의 범위를 벗어납니다. (자세한 내용은 추가 읽기에서 읽을 수 있습니다.)
기타 운영 체제
다른 운영 체제에서도 이 오류가 발생합니다.
FreeBSD 사람들은, 예를 들어. Debian과 마찬가지로 FreeBSD에는 "포트" 트리에 수정 패치 세트가 포함되어 있습니다. 정말패치 중 하나는 Marc Lehmann의 terminfo 레코드를 삭제하는 것입니다..
Gentoo는 조용히 같은 일을 했습니다. 이것rxvt-unicode용 ebuild도 Marc Lehmann의 terminfo 레코드를 삭제했습니다..
OpenSUSE는 2015년에 Marc Lehmann의 terminfo 기록을 깨뜨렸습니다..
아치 리눅스도 이 작업을 수행해야 합니다rxvt-unicode의 terminfo 레코드의 빌드 + 설치 프로세스 해결, Arch는 다른 사람들처럼 완전히 포기하지 않기로 결정했지만.
따라서 원본 소스에서 직접 빌드하기보다는 이러한 시스템의 포트/ebuild/PKGBUILD에서 빌드하세요.
추가 읽기
- 디키, 토마스 E. (2016). "ncurses의 rxvt(-unicode)".저주.
- 라파엘 마리스(2007-09-11). sys-libs/ncurses에는 rxvt-unicode terminfo 및 USE="unicode"가 포함되어야 합니다.. 젠투 버그 #192083.
- 디키, 토마스 E. (1999).
user_caps
. 파일 형식 매뉴얼. 저주. 데비안 매뉴얼 페이지. - https://unix.stackexchange.com/a/465308/5132
답변3
이는 패키지의 버그 문제인 것 같습니다 urxvt.git
. 패키지 자체가 재구축되었습니다. 이 가이드의 지침을 따르십시오.협회. 동일한 오류 메시지가 표시됩니다.