我正在为自定义 Scientific Linux ISO 编写启动脚本。但是,我在从源代码安装某些程序时遇到了问题。
以下是我尝试的一般语法。我将 .tgz 文件复制到 /tmp/ 目录,然后让它执行命令。当我登录计算机执行此操作时,它工作正常。但是,我认为当 kickstart 脚本尝试运行它时,它不会像我希望的那样停留在初始目录中。由于它只有 1 个命令,因此我的所有 rpm 安装都可以正常工作。还有其他方法可以尝试编译这些吗?
%post --nochroot
cp -f nmap-6.01.tgz $INSTALL_ROOT/tmp/
%post
tar xzf /tmp/nmap-6.01.tgz -C /tmp/
cd /tmp/nmap-6.01 && ./configure && make && make install
rm -f /tmp/nmap-6.01.tgz
rm -rf /tmp/nmap-6.01
提前致谢。
编辑:对于 nmap,我最终获得了 rpm,它工作得很好。但是,我还需要编译其他程序,我需要弄清楚这一点。
编辑2:我将其进一步分解并添加了一些额外的日志,这就是我现在看到的。
配置:错误:安装或配置问题:C 编译器无法创建可执行文件
然后,当我查看实际的 config.log 文件时,我看到了这个错误。
collect2:找不到“ld”
和
当我登录时它工作正常,所以这又与它在 kickstart 中的构建方式有关。
cd /tmp/nmap-6.01 && ./configure >> /tmp/nmap.log 2>> /tmp/nmap.log
cd /tmp/nmap-6.01 && make >> /tmp/nmap.log 2>> /tmp/nmap.log
cd /tmp/nmap-6.01 && make install >> /tmp/nmap.log 2>> /tmp/nmap.log
答案1
是的,我本来想问你为什么不使用发行版的nmap
软件包。
这正确的如果您希望分发纯源代码软件,那么答案是创建自己的 RPM 存储库并将这些软件包作为 RPM 分发。例如,为您需要部署的软件构建自己的 RPM。
但一般来说,对于您的特定设置,请尝试将构建分为多个部分。也许使用一些带有命令完整路径的基本变量。
编辑:
当然...您的安装环境中可能没有所需的所有开发工具...