web-dev-qa-db-ja.com

'rxvt-unicode'の取得:urxvt9.22のコンパイル中に機能が不明

私はDebianに取り組んでいます。私はこのコマンドを実行しました:

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

誰かがそれを修正する方法を知っていますか?

2
torvim

ticプログラムは、機能が不明であることを報告しています。 -xオプションを使用して、ticそれらをユーザー定義の機能として扱う。

作成するアドホック修正は、doc/Makefileにあり、次のようになります。

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

それをに変更します

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

コメントで述べられているように、同じ目標を達成する他の方法があります。

ユーザー定義機能は、 ncurses 5. で導入された拡張機能です。これは拡張機能であるため(そして他の実装との互換性は常に問題です)、これを機能させるためのオプションが必要です。

5
Thomas Dickey

パッケージのバグの問題のようですurxvt.git。パッケージ自体が再構築されました。この リンク の指示に従ってください。彼らは同じエラーメッセージを提供しました。

1
user88036

Debianソースパッケージからビルドします。

あなたが抱えている問題の一部は、元のソースから直接ビルドしているためです。ここでは、それは間違ったことです。 Debianソースパッケージを入手します。少なくとも、そのdebian/ディレクトリツリーをコピーします。そしてそれを使用します。

Debianビルドプロセスを使用する必要がある理由

私が最近指摘したように https://unix.stackexchange.com/a/468218/5132 、これにStephen Kittは、これを行う方法について段階的な説明を追加しました。 Debianソースは、Debianの人々がDebianで動作するように、または(この場合のように)単にまったく動作するようにパッケージに入れたすべての修正の1つを取得します。

Debianが元のrxvt-unicodeソースに対して実行するいくつかのパッチ (Debianでも必要であることが間違いなく見つかる他のパッチ)の1つは、rxvt-unicodeに付属するソースからのterminfoエントリのビルドをオフにするだけです。

あなたがしないときに何が起こっているのか

この背後には多くの歴史があり、そのうちのいくつかはncursesdocoとそれがハイパーリンクしているものにあります。しかし、この答えの目的のための簡単な光沢はこれです:

Rxvt-unicodeで提供されるterminfoエントリには問題があり、表示されているのは、その問題の1つに起因するいくつかのビルド時メッセージです。 10年以上前に、terminfoレコードに関連する何かを変更することについては、大騒ぎがありました。MarcLehmannは、「すでに」です。 Debianの人々のような人々がこの長年の行き詰まりのために静かに行ったことは、前述のパッチを使用して、Marc Lehmannのterminfoレコードを完全に削除し、代わりに ncursesに付属するものをパッケージ化して使用する です。

ここで関連する提供されたterminfoの問題は、kDC5などの非標準機能を定義していることです。 terminfoデータベースメカニズムに関する長年の問題の1つは、user_capsマニュアルページに記載されているように、機能名のシステムが固定されていることです。 rxvt-unicodeで提供されるterminfoレコードには、この固定システムの一部ではない追加機能が含まれています。 -xオプションがないと、ticコマンドはそのような機能について文句を言います。

これらの非標準機能が最初に対処している問題は、terminfoのもう1つの長年の問題です。つまり、端末が入力を送信する方法を適切に表現することに関しては、実際には仕事に任されていません。特にここでは、キーボード修飾子の状態情報を含むキーストローク制御シーケンスを標準で表すことはできません(たとえば、 + と区別される )、これらの非標準の拡張機能を発明する必要があります。しかし、その基本モデルは端末や端末エミュレーターが実際にどのように機能するかとは異なるため、それ以上の問題があります。しかし、それはこの答えの範囲を超えています。 (詳細については、詳細を参照してください。)

その他のオペレーティングシステム

他のオペレーティングシステムでもこのエラーが発生します。

FreeBSDの人々は 例えば。 FreeBSDは、Debianと同様に、「ports」ツリーに修正パッチのセットを含んでいます。そして確かに そのようなパッチの1つは、Marc Lehmannのterminfoレコードを削除することです

Gentooも静かに同じことをしました。 rxvt-unicodeのebuildもMarc Lehmannのterminfoレコードを削除します

OpenSUSEは2015年にMarc Lehmannのterminfoレコードを削除しました

Arch Linuxでさえ rxvt-unicodeのterminfoレコードのビルド+インストールプロセスを回避する 、他の人がそうであるように、Archが単にそれを完全に削除しないことを選択したとしても。

したがって、元のソースから直接ではなく、これらのシステムのport/ebuild/PKGBUILDからビルドします。

参考文献

1
JdeBP