在编译 GNU coreutils 时,script
命令(用于终端会话录制)通常是默认包含的。如果你的编译版本缺少该功能,可能是配置选项或环境问题导致。以下是完整的解决方案:
1. 确认 script
是否已启用
(1) 检查当前安装的 coreutils
which script # 查看路径(通常为 /usr/bin/script)
script --version # 检查版本
如果命令存在,则无需重新编译。
(2) 检查源码中的 script
模块
在 coreutils 源码目录中:
ls src/script* # 确认是否存在 script.c 或相关源文件
grep -r "script" src/ # 搜索源码中的定义
2. 从源码编译并确保启用 script
(1) 获取源码
git clone https://git.savannah.gnu.org/git/coreutils.git
cd coreutils
./bootstrap # 生成 configure 脚本
(2) 配置时显式启用所有工具
默认情况下,script
会被自动包含,但可通过以下方式强制检查:
./configure --help | grep script # 查看是否有相关选项(通常没有单独选项)
./configure # 使用默认配置(包含 script)
(3)手动验证 Makefile
检查生成的 Makefile
,确认 script
在构建列表中:
grep "src/script" Makefile # 应看到类似:src_SCRIPT = src/script
(4)编译并安装
make -j$(nproc)
sudo make install # 默认安装到 /usr/local/bin/
3.特殊情况处理
(1) script
被排除的情况
如果发现 configure
阶段排除了 script
(罕见),可能因为:
- 依赖缺失:如缺少
libutempter
(某些系统需要它支持终端记录)。 - 交叉编译限制。
解决方案:
# Ubuntu/Debian:安装依赖库
sudo apt-get install libutempter-dev
#重新配置和编译
./configure --with-libutempter #若需显式指定库路径,添加:LDFLAGS="-L/path/to/lib"
make clean && make
(2)自定义禁用后的恢复
如果之前通过参数禁用了所有额外工具(如 --enable-single-binary
),需重置配置:
./configure --disable-single-binary #允许独立二进制文件(包括 script)
4.验证安装结果
which script #应输出:/usr/local/bin/script (新安装路径)
/usr/local/bin/script -V #验证版本是否更新
#测试功能:录制会话到文件 test.log
script test.log #输入 exit退出后查看内容。
cat test.log #应有终端记录输出。
5.调试提示
- 查看 config.log:
若编译失败,检查日志中的错误:
less config.log | grep -i "error\|warning\|script"
- 手动启用调试符号:
重新编译以获取详细错误信息:
CFLAGS="-g -O0" ./configure && make clean && make
如有其他问题(如特定系统环境报错),请提供更多细节!
内容由零声教学AI助手提供,问题来源于学员提问