【问题标题】:How to pass parameters to a .run file in linux如何在linux中将参数传递给.run文件
【发布时间】:2015-07-17 03:05:08
【问题描述】:

我有 example.run 文件(二进制文件),它将在我的 linux 环境中安装一个简单的软件。我想用厨师自动安装,但问题是在安装过程中软件要求接受许可证(所以我必须输入yes)我想看看有没有办法通过.run文件传递参数或厨师可以为我输入“是”等。

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 文件是什么? AMD/ATI Catalyst 的安装程序?还是NVIDIA驱动?
  • 这是一个二进制文件。
  • 运行 file /full/path/of/yourfile.run 并编辑您的问题以显示结果。
  • 我刚刚做了并发布了结果
  • 我宁愿向 Talend 提出这样的问题...

标签: linux automation chef-infra chef-recipe chef-solo


【解决方案1】:

这取决于文件(没有理由每个*.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 负责globbing - 在执行execve 之前- 所以运行*.run 文件没有什么特别的。

我强烈建议您花几天时间了解有关 Linux 的更多信息。也许先阅读Advanced Linux ProgrammingAdvanced Bash Scripting Guide(当然还有documentation of Chef 和您正在安装的Talend 产品);如果您在不了解的情况下对系统管理员进行实验,您可能会弄乱您的系统,导致丢失数据并不得不重新安装所有内容。 echo(1)strace(1) 都可能有用。

【讨论】:

  • 感谢您的回复,但不幸的是这不起作用。 .run 是一个二进制文件,所以我需要先通过 chmod +x 命令使其可执行,然后运行 ​​./myfile.run 来执行它!
  • 是的,但这与您的问题无关。对于任何脚本或可执行文件,您需要使其可执行并将其添加到您的路径中。
  • 非常感谢您的回答,我一定会查看这些文档 :) 不幸的是,Talend-Installer-20150508_1414-V5.6.2-linux64-installer.run --help-h 没有工作,这意味着 Talend-Installer-20150508_1414 -V5.6.2-linux64-installer.run:找不到命令
  • 你需要了解PATH是什么。但实际上,您缺乏能够继续的最低限度的 Linux 知识和专有技术。要求你的老板支付你一些学习费用。您绝对需要了解键入内容时发生的情况。盲目猜测是错误的!
  • 好的。谢谢您的帮助。我还在大学,这是我的第一次实习 :) 但我会不顾一切地尝试提高我的 linux 知识。再次感谢您的所有努力。
猜你喜欢
  • 2011-01-13
  • 2023-01-24
  • 2013-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-15
相关资源
最近更新 更多