|
|
1
1
这应该是你要找的。
这里发生了什么:
这是表单的条件赋值
表达式的第一部分使用dpkg检查包是否已安装,从而抑制输出。如果条件返回false,则计算第二部分。省略了“真”情况。 |
|
|
2
1
这取决于您使用的Linux发行版。通常,包管理器附带某种机制来跳过已安装的包。
对于Ubuntu,这是内置运行的
对于ArchLinux,可以添加运行
独立于平台的机制是检查可执行文件(或该包的任何其他已知文件)是否存在。在Bash中,您可以执行以下操作:
(
如果您想避免为这些基本检查编写自定义Bash脚本,我可以建议您使用专用于实现目标的工具来配置您的框。这里常见的嫌疑人是: 所有这些都得到Vagrant的支持,因此集成它们应该不是问题。您可以找到有关将这些内容集成到现有Vagrant配方中的详细指南 here . PS.对于一个简单的例子,你可以查看我的 Ansible provisioning recipe 对于运行ArchLinux的Banana Pi机器(注意:它并没有真正遵循最佳实践,但这可能是一个很好的起点)。网上有很多例子,也可以看看。 |