使用“magic_shell”食谱更新 $PATH

2024-05-12

我创建了两本食谱:java_kevin 和 maven_kevin:

食谱/java_kevin/recipes/default.rb

node.default['user'] = 'vagrant' 
node.default['user_home'] = '/home/' + node['user'] 
node.default['my_dir'] = node['user_home'] + '/my'

node.default['vagrant'] = '/vagrant'

node.default['java_home'] = node['my_dir'] + '/jdk1.7.0_51'

# Install Java 7 RPM
execute "install_oracle_java7" do
    command "rpm -ivh --prefix=" + node['my_dir'] + " jdk-7u51-linux-x64.rpm"
    cwd node['vagrant']
    creates node['java_home']
end

magic_shell_environment 'JAVA_HOME' do 
    value node['java_home']
end 

magic_shell_environment 'PATH' do 
    value "$PATH:" + node['java_home'] + '/bin'
end 

食谱/maven_kmm/recipes/default.rb

node.default['user'] = 'vagrant' 
node.default['user_home'] = '/home/' + node['user'] 
node.default['my_dir'] = node['user_home'] + '/my'

node.default['maven_download_dir'] = node.default['user_home'] + '/apache-maven-3.2.1-bin.tar.gz'

# Download Maven 3.2.1
remote_file node['maven_download_dir'] do
    source "http://www.bizdirusa.com/mirrors/apache/maven/maven-3/3.2.1/binaries/apache-maven-3.2.1-bin.tar.gz"
    checksum "aaef971206104e04e21a3b580d9634fe"
end

execute "unpack_and_uncompress_maven" do
    command "tar -zxvf " + node['maven_download_dir']
    cwd node['user_home']
    creates node['user_home'] + '/apache-maven-3.2.1'
end

execute "move_maven_to_my_dir" do
    command "mv " + node['user_home'] + '/apache-maven-3.2.1' + " " + node['my_dir']
    cwd node['user_home']
    creates node['my_dir'] + '/apache-maven-3.2.1'
end

node.default['maven_home'] = node['my_dir'] + '/apache-maven-3.2.1'

magic_shell_environment 'M2_HOME' do 
    value node['maven_home']
end 

magic_shell_environment 'PATH' do 
    value "$PATH:" + node['maven_home'] + '/bin'
end 

配置完成后,我只看到 Maven 路径已正确添加到$PATH:

[vagrant@vagrant-centos65 ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/my/apache-maven-3.2.1/bin:/home/vagrant/bin

[vagrant@vagrant-centos65 ~]$ which mvn
~/rm/apache-maven-3.2.1/bin/mvn

[vagrant@vagrant-centos65 ~]$ which java
/usr/bin/which: no java in (/usr/local/bin:/bin:/usr/bin:....

Why was JAVA_HOME不属于决赛的一部分$PATH item?


我相信 magic_shell_environment 为每个资源名称创建一个唯一的文件(此处为“PATH” - 检查 /etc/profile.d/PATH.sh),并且每次都会重新创建该文件。这里你的两个食谱都试图创建相同的文件。第一个配方创建的 PATH.sh 文件很可能被第二个配方覆盖。

我不确定如何使用 magic_shell 解决此问题,但我相信这就是您问题“为什么”的答案。

see https://github.com/customink-webops/magic_shell/blob/master/providers/environment.rb https://github.com/customink-webops/magic_shell/blob/master/providers/environment.rb

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用“magic_shell”食谱更新 $PATH 的相关文章

随机推荐

  • 如果文件已在服务器上,请避免使用 git-ftp 上传

    假设我有应用程序的本地副本 我将其推送到 github 然后使用 git ftp 将任何更改上传到我的服务器 我首先会使用 git ftp init u
  • 用于防止滥用的 Servlet 过滤器? (DoS、垃圾邮件等)

    我正在寻找一个 Servlet 过滤器库 它可以帮助我保护我们的 Web 服务免受未经授权的使用和 DDoS 攻击 我们的网络服务有 授权客户 因此理想情况下 过滤器将帮助检测未经授权或行为不当的客户 或检测使用同一帐户的多个人 此外 我们
  • sails js 数据关系

    sails js 是否支持模型 集合之间的关系 如果是这样 有人可以指出文档吗 例如 我有 2 个模型 1 生产 production name string description text 2 Album album name stri
  • SSIS - 将参数传递给 ADO .NET 源查询

    我知道早些时候已经有人问过这个问题 大多数答案都不相关 谷歌了一下 显示解决办法是在 数据流任务 中配置表达式并设置查询 然而 在 ADO NET 源中 当我尝试预览输出时 我不断收到 Must declare the variable 它
  • 按给定日期获取上周一和下周一的日期[重复]

    这个问题在这里已经有答案了 我们如何通过提供的日期获取上一周星期一日期和下周星期一日期 示例 if date 2015 04 08 年月日格式 然后函数返回 上周一日期 2015 03 30 下周一日期 2015 04 13 echo Ne
  • jQuery 在附加元素后立即返回 div 元素的高度 0

    我有一个浮动 div 最初没有内容 我使用 jQuery 将一组元素附加到 div 然后立即调用原始 div 的 height 方法 我添加的元素在样式表中具有定义的最小高度 而浮动 div 则没有 问题是 当我在原始 div 上调用 he
  • 尝试读取转储时“无法加载符号”

    我的一个应用程序有时会在 Win XP 计算机上导致 BSOD 为了了解更多信息 我加载了生成的 dmp 文件 来自 C Windows Minidump 但在执行此操作时在大部分读数中收到此消息 Symbols can not be lo
  • 如何在anaconda python 3.6上安装tensorflow

    我使用 anaconda 包安装了新版本的 python 3 6 但是我无法安装张量流 总是收到这样的错误 tensorflow gpu 1 0 0rc2 cp35 cp35m win amd64 whl 在此平台上不受支持 如何在 ana
  • 无法发出桥接标头的预编译标头

    我从 GitHub 下载了一个项目 然后 pod 了以下文件 其中一些文件是由 OBJ C 编写的 我使用了桥接头 pod SnapKit pod MJRefresh pod Alamofire pod Kingfisher pod MBP
  • 为什么在 C# 中成员初始值设定项中不允许这样做,但在 VB.Net Me 中允许

    我正在将 VB Net 应用程序转换为 C 并注意到在 VB Net 代码中 有一个私有成员变量 它是使用Me像这样 Private m ClassA As New MyCollection Of ClassA Me 当我将其转换为 C 代
  • 使用nginx容器作为反向代理时的原始url

    我有一个 Web 应用程序部署为码头集装箱 我也有一个nginx容器 使用dnsmasq解析器 设置为充当 Web 应用程序前面的反向代理 它的 80 端口映射到主机 我的应用程序使用 SSO 身份验证 当我使用身份提供商登录时 回调 ur
  • 无法在 Mac OS X 上启动应用程序 我收到错误 LSOpenURLsWithRole() 应用程序失败,错误为 -10810

    问题 我正在尝试启动一个应用程序 遗传网络分析仪 http www genostar com category products gna 但它默默地失败了 使用时open gna app产生以下错误消息 LSOpenURLsWithRole
  • PHP 计数器在 while 循环中递增

    我在一个 while 循环中增加计数器时遇到问题 基本上我只想在数据库中获取的两个图像链接之间交替 但我的计数器不会增加 我不确定为什么有人可以提供帮助 while row stmt gt fetch PDO FETCH ASSOC img
  • 面向服务的架构通信标准

    我过去致力于构建使用面向服务的架构构建的数据处理应用程序 我有一系列服务 这些服务全部由主服务管理 该主服务将串行调用所有服务来处理我的数据 我遇到了一些我不喜欢的事情 因为服务必须向主服务提供状态和错误反馈 而我必须从头开始编写所有代码
  • Facebook PHP API 登录时抛出异常

    我尝试使用 Facebook Graph API 登录并获取用户信息 我用来获取用户信息的代码以前可以工作 但今天我尝试使用 Facebook 登录 但 Facebook API 抛出此错误 未定义的偏移量 1 home vendor fa
  • 用 C# 启动 Windows 服务

    我想启动一个刚刚安装的Windows服务 ServiceBase ServicesToRun if bool Parse System Configuration ConfigurationManager AppSettings RunSe
  • 让 Django 提供可下载文件

    我希望网站上的用户能够下载路径被遮挡的文件 因此无法直接下载它们 例如 我希望 URL 是这样的 http example com download f somefile txt 在服务器上 我知道所有可下载的文件都位于该文件夹中 home
  • Native TF 与 Keras TF 性能比较

    我使用本机和后端张量流创建了完全相同的网络 但在使用多个不同参数进行了多个小时的测试后 仍然无法弄清楚为什么 keras 优于本机张量流并产生更好 稍微但更好 的结果 Keras 是否实现了不同的权重初始化方法 或者执行除 tf train
  • 如何使用 Azure CLI 命令获取虚拟机的公共 IP 地址

    我想在 Azure bash 命令行中获取特定虚拟机的公共 IP 地址 到目前为止我已使用此命令 但它返回网络接口信息 az vm list ip addresses g dev rg n dev vm 返回值 virtualMachine
  • 使用“magic_shell”食谱更新 $PATH

    我创建了两本食谱 java kevin 和 maven kevin 食谱 java kevin recipes default rb node default user vagrant node default user home home