[linux-users: 108863] Re: GNU screenのmakeについて

Takashi SHIRAI shirai @ unixusers.net
2012年 1月 3日 (火) 22:09:54 JST


 しらいです。

In Message-Id <4F02CAF7.5030306 @ aliadne.net>
        dezawa <dezawa @ aliadne.net>さんwrites:
> みつから無いのに configure が通ってしまうのは、configure の出来が
> いまいち?

 screen の configure は Linux は SVR4 として認識してしまい
ます。<sys/stropts.h> は SVR4 用のヘッダで、昔の Linux は互
換性のために用意してましたが、最近は存在しないようですね。

 screen の可搬性ってイマイチなんですよ。SRPM を確認すると判
る通り、Linux では多くの patch を強いられます。なので source
から build したいのなら SRPM 使う方が賢明です。
 SRPM の URL を、一応各 Linux 別に挙げておきますけど、展開
すると中身は一緒のようですね。因みに SRPM からの build 法に
ついては rpmbuild(8) 参照ということで宜し?
http://ftp1.scientificlinux.org/linux/scientific/6x/SRPMS/vendor/screen-4.0.3-16.el6.src.rpm
http://vault.centos.org/6.2/os/Source/SPackages/screen-4.0.3-16.el6.src.rpm

 これらの SRPM では <sys/stropts.h> を読まないようにする変
更を施してますので、どうしても SRPM が使えない場合は、これと
同様の変更を行なうのが正解だと思います。
 それがどうしても気持ち悪いというならば、以降の詳解を参考に
して下さい。


 SVR4 での PTY 作法としては、/dev/ptmx の操作用に三種の関数
ptsname(3), grantpt(3), unlockpt(3) を用いるのが特色です。こ
の特色は Linux にも共通しています。
 screen の configure は、これらの関数を持っている環境であれ
ば SVR4 方式の PTY 作法を使うことにしています。このため、こ
の特色のみを理由に Linux は SVR4 扱いになります。

 SVR4 のもう一つの特色として I_PUSH という ioctl コマンドが
あります。これは stream に module を追加することで、各種の機
能追加を行ないます。
 screen では ptem と ldterm という module を使います。前者
は疑似端末 driver と回線制御の結合を emulate するもので、疑
似端末の制御に不可欠な module です。
 後者は端末 driver に回線制御を提供するもので、疑似端末に限
らず端末制御には普遍的に必要となる module です。これがないと、
TERMIOS 的な制御が出来ません。

 で、<sys/stropts.h> は I_PUSH 用のヘッダです。PTY 制御の作
法と I_PUSH とは独立した特色なので、PTY 作法として SVR4 方式
を使うからと言って I_PUSH を使うとは限りません。
 実際、Linux では I_PUSH を使いません。少なくとも PTY 制御
に関しては、そんなことしなくても kernel や driver の方で宜し
くやってくれる筈です。
 なので、これらを一緒くたにして SVR4 扱いしている screen の
方がおかしいんです。


 という訳で、screen を Linux で build する場合には、SVR4 の
二つの特色のうち一方を無効化するために、<sys/stropts.h> をコ
メントアウトするという方策が正解です。

 まぁ screen の立場から言うなら、SVR4 から /dev/ptmx パクっ
て来るんだったら I_PUSH も実装しておけとは思いますね。Linux
はキメラの程度が尋常じゃありません。
 この辺の自分本位さは Microsoft と共通するところを感じます
よね。Linux という閉じた世界しか見てないから、Linux 以外も扱
う multi platform な世界からの視点に欠けるんだと思います。
 最近のソフトは大概 autoconf 使ってるのに、それでも SRPM で
patch が沢山必要になってるこの現状って、何かおかしいと思わな
いでしょうか。

                                               しらい たかし


linux-users メーリングリストの案内