Пакет Expect содержит инструменты для автоматизации работы интерактивных приложений, таких как telnet, ftp, passwd, fsck, rlogin и tip, с помощью скриптовых диалогов и макросов. Кроме того Expect полезен для тестирования перечисленных выше приложений, а также для решения сложных задач взаимодействия с другими средствами. Фреймворк DejaGnu написан на языке Expect.
Expect для работы необходим псевдотерминал(PTY). Убедитесь, что PTY работают правильно в среде chroot, выполнив простой тест:
python3 -c 'from pty import spawn; spawn(["echo", "ok"])'
Эта команда должна вывести ok
.
Если вместо этого вывод содержит OSError: out of pty devices
, то среда не
настроена для правильной работы PTY. Вам необходимо выйти из среды
chroot, ещё раз прочитать Раздел 7.3,
«Подготовка виртуальных файловых систем ядра» и убедиться, что
файловая система devpts
(и другие
файловые системы виртуального ядра) смонтирована правильно. Затем
повторно войдите в среду chroot, следуя инструкции Раздел 7.4, «Вход в окружение
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
Значение параметров настройки:
--with-tcl=/usr/lib
Этот параметр необходим для указания configure где находится скрипт tclConfig.sh.
--with-tclinclude=/usr/include
Этот параметр явно указывает Expect, где искать внутренние заголовки Tcl.
Соберите пакет:
make
Чтобы протестировать пакет, выполните:
make test
Установите пакет:
make install ln -svf expect5.45.4/libexpect5.45.4.so /usr/lib