Expect パッケージには telnet, ftp, passwd, fsck, rlogin, tip といった対話処理ツールを、スクリプト化されたダイアログを通じて自動化するツールを提供します。 Expect はこういったアプリケーションをテストする場合にも利用できます。 また本パッケージを利用しないと相当に困難となるようなタスクを、いとも簡単に処理できるようになります。 DejaGnu フレームワークはこの Expect を用いて記述されています。
Expect は PTY が動作していることを必要とします。 chroot 環境内において PTY が適切に動作しているかどうかを、以下の単純なテストにより確認します。 test:
python3 -c 'from pty import spawn; spawn(["echo", "ok"])'
上のコマンドの出力は ok
となるべきものです。 そうならずに
OSError: out of pty devices
となったら、その環境は PTY 操作を適切に行うような設定が行われていないということです。 その場合は chroot
から抜け出て、再度 「仮想カーネルファイルシステムの準備」
を読み返して、devpts
ファイルシステム
(および他の仮想カーネルファイルシステム)を適切にマウントしてください。 「Chroot
環境への移行」 に従って chroot 環境に再度入ってください。 このメッセージは、先に進む前に解消しておくことが必要です。
そうでないと Expect を必要とするテストスイート (たとえば Bash, Binutils, GCC, GDBM そして
Expect 自身のテストスイート) が大失敗し、些末な不備ならいくらでも発生してしまいます。
パッケージが gcc-14.1 以降に対応するための変更を加えます。
patch -Np1 -i ../expect-5.45.4-gcc14-1.patch
Expect をコンパイルするための準備をします。
./configure --prefix=/usr \ --with-tcl=/usr/lib \ --enable-shared \ --disable-rpath \ --mandir=/usr/share/man \ --with-tclinclude=/usr/include
configure オプションの意味
--with-tcl=/usr/lib
本パラメーターは configure に対して、tclConfig.sh スクリプトが存在するディレクトリを指示するために必要となります。
--with-tclinclude=/usr/include
Tcl の内部ヘッダーファイルを探し出す場所を指定します。
パッケージをビルドします。
make
ビルド結果をテストする場合は、以下を実行します。
make test
パッケージをインストールします。
make install ln -svf expect5.45.4/libexpect5.45.4.so /usr/lib