我有example.run文件(二进制文件),它将在我的linux环境中安装一个简单的软件。我想用chef自动安装,但问题是在安装过程中,软件要求接受许可证(所以我必须键入yes),我想知道是否有方法用.run文件传递参数,或者chef可以为我键入yes等等。
file Talend-Installer-20150508_1414-V5.6.2-linux64.run
Talend-Installer-20150508_1414-V5.6.2-linux64.run:ELF 64位LSB可执行文件,x86-64,版本1(GNU/Linux),静态链接,剥离
最佳答案
这取决于文件(而且没有理由让每个*.run
安装程序的行为类似)。尝试Talend-Installer-20150508_1414-V5.6.2-linux64-installer.run --help
或Talend-Installer-20150508_1414-V5.6.2-linux64-installer.run -h
并阅读其文档。。。有时可以选择接受许可证。您还可以考虑在管道中使用yes(1):
yes | yourfile.run
但要小心。如果
yourfile.run
礼貌地问:can I remove every file in /home/ ? [yN]
(当然,对于任何脚本或可执行文件,您需要使用
chmod u+rx
启用可执行性和读取,并更改PATH或使用./yourfile.run
或其绝对或相对文件路径等。)您还可以尝试在该可执行文件上使用strings(1),来猜测(通过内部的一些字符串消息)什么是可能的。
参数传递是通过execve(2)完成的,而您的shell在执行
execve
之前负责globbing-所以运行*.run
文件没有什么特别的。我强烈建议花几天时间来学习更多关于Linux的知识。可能先阅读Advanced Linux Programming&Advanced Bash Scripting Guide(当然还有documentation of Chef和您正在安装的Talend产品);如果您在不理解的情况下尝试系统管理,可能会使您的系统陷入丢失数据和必须重新安装所有内容的境地。echo(1)和strace(1)也可能有用。