我有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 --helpTalend-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)也可能有用。

10-05 21:23
查看更多