Получение «RXVT-Unicode»: неизвестные возможности при компиляции URXVT 9.22

Или используйте команду env , чтобы установить переменные среды.

bash-4.1$ env_foo="xxx=a xxxx=b"
bash-4.1$ env $env_foo perl -E 'say "$_=$ENV{$_}" for grep /^xx/, keys %ENV'
xxx=a
xxxx=b
bash-4.1$ (echo '#!/bin/bash'; history 3 | head -2 | perl -anE 'shift @F; say "@F"') > a_script
bahs-4.1$ 
2
16.09.2018, 12:21
3 ответа

Похоже, это ошибка в пакете urxvt.git. Сам пакет был перестроен. Пожалуйста, следуйте инструкциям по этой ссылке . Они предоставили то же сообщение об ошибке.

1
27.01.2020, 21:52

Программаticсообщает, что возможности неизвестны. Используйте опцию -x, чтобы сообщить tic, чтобы они рассматривались как возможности, определяемые пользователем -.

Исправление ad hoc , которое нужно сделать, находится в doc/Makefile, где говорится что-то вроде

tic $(srcdir)/etc/rxvt-unicode.terminfo

изменить это на

tic -x $(srcdir)/etc/rxvt-unicode.terminfo

Есть и другие способы достижения той же цели, упомянутые в комментариях.

Определенные пользователем -возможности являются расширением, представленным в ncurses 5.0 . Поскольку это расширение (и совместимость с другими реализациями всегда является проблемой ), вам нужна опция, чтобы это работало.

6
27.01.2020, 21:52

Соберите его из исходного пакета Debian.

Проблема, с которой вы столкнулись, частично связана с тем, что вы строите напрямую из исходного кода. Вот это неправильно. Получите исходный пакет Debian; как минимум скопируйте его дерево каталогов debian/; и использовать это.

Почему следует использовать процесс сборки Debian

Как я недавно указывал в https://unix.stackexchange.com/a/468218/5132, к которому Стивен Китт добавил пошаговые -за -пошаговые инструкции о том, как это сделать, сборка из исходного кода Debian получает все исправления, которые есть у разработчиков Debian. помещать в пакеты, чтобы они работали в Debian, или (, как в данном случае, )просто работали вообще.

Один из нескольких патчей, которые Debian содержит для оригинального rxvt -исходного кода unicode(других, которые вы, несомненно, найдете нужными и в Debian )— это патч, который просто отключает создание записи terminfo из исходного кода, который поставляется с rxvt -unicode.

Что происходит, когда вы этого не делаете?

За этим стоит богатая история, часть из которой вы можете найти в документации ncurses и на что там есть гиперссылки. Но краткое пояснение для целей этого ответа таково:

Запись terminfo, поставляемая с rxvt -unicode, является проблематичной, и вы видите несколько сообщений о времени сборки -, являющихся результатом одной из ее проблем. Было целое -ха-ха по поводу изменения чего-либо , относящегося к его записи terminfo, более десяти лет назад, когда Марк Леманн утверждал, что она уже «настолько точна, насколько это возможно». Что люди вроде разработчиков Debian незаметно сделали из-за -многолетнего тупика, так это просто полностью удалили запись terminfo Марка Леманна с вышеупомянутым патчем и пакетом и вместо этого использовали тот, который поставляется с ncurses ..

Проблема с предоставленным terminfo, которая уместна здесь, заключается в том, что он определяет нестандартные -возможности, такие как kDC5. Одна из давно -известных проблем с механизмом базы данных terminfo заключается в том, что он имеет фиксированную систему имен возможностей, как описано на его user_capsсправочной странице. Запись terminfo, поставляемая с rxvt -unicode, содержит дополнительные возможности, которые не являются частью этой фиксированной системы. Без опции -xкоманда ticжалуется на такие возможности.

Проблема, которую в первую очередь решают эти нестандартные -возможности, — это еще одна давняя -проблема с terminfo,а именно, что это не совсем то, что нужно, когда дело доходит до адекватного представления того, как терминалы отправляют ввод. В частности, здесь он не может стандартно представлять управляющие последовательности нажатия клавиш, которые содержат информацию о состоянии модификатора клавиатуры (, разрешающую, скажем, & #x21e7; + и #x2326; следует отличать от и #x2326; ), требуя изобретения этих нестандартных -расширений. Но есть и другие проблемы, поскольку его фундаментальная модель отличается от того, как на самом деле работают терминалы и эмуляторы терминалов. Однако это выходит за рамки этого ответа. (Вы можете прочитать больше в дальнейшем чтении.)

Другие операционные системы

Эта ошибка возникает и в других операционных системах.

Например, у пользователей FreeBSD . FreeBSD, как и Debian, содержит наборы корректирующих патчей в своем дереве «портов». И действительно, один из таких патчей должен удалить запись terminfo Марка Леманна .

Gentoo тихонько сделал то же самое. Сборка для rxvt -unicode также удаляет запись terminfo Марка Леманна.

В 2015 году OpenSUSE сбросил рекорд по терминологии Марка Леманна .

Даже Arch Linux пришлось обойти процесс сборки+установки rxvt -Unicode-записи terminfo , хотя Arch решила не просто удалять ее полностью, как это сделали другие.

Так что собирайте из порта/ebuild/PKGBUILD на этих системах, а не напрямую из исходного кода.

Дополнительная литература

2
27.01.2020, 21:52

Теги

Похожие вопросы