Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Path 删除旧java路径-Puppet_Path_Environment Variables_Puppet - Fatal编程技术网

Path 删除旧java路径-Puppet

Path 删除旧java路径-Puppet,path,environment-variables,puppet,Path,Environment Variables,Puppet,我们在puppet java模块方面遇到了问题。它们正在添加正确的路径,但不会删除旧路径: C:\Windows\system32>路径 PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\程序 文件(x86)\IBM\RationalSDLC\common;;C:\程序文件 (x86)\NTP\bin;C:\ProgramFiles

我们在puppet java模块方面遇到了问题。它们正在添加正确的路径,但不会删除旧路径:

C:\Windows\system32>路径 PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\程序 文件(x86)\IBM\RationalSDLC\common;;C:\程序文件 (x86)\NTP\bin;C:\ProgramFiles(x86)\Puppet Labs\Puppet\bin;C:\程序 Files\Java\jdk1.7.0_50\bin;C:\PROGRA~1\apachemaven\bin;C:\程序 Files\Java\jdk1.7.0\u 55\bin

您可以看到,它在末尾添加了正确的路径,但原始版本jdk1.7_50\bin仍然存在。我们如何确保它每次安装新版本时都会删除旧版本

编辑:更重要的是,我们需要让它搜索
JAVA\u HOME
path变量,将其与
path
变量进行比较,删除任何不属于的JAVA目录,然后将
JAVA\u HOME
复制到
path
。希望这是有意义的。

模块似乎没有努力更新默认环境

我相信您观察到的行为是由Java安装程序本身采取的操作造成的

如果您可以找到Java将命令附加到
路径的位置,您可以让Puppet使用模块中的
文件行
类型删除过时的行

在提供处理路径的清单后编辑

如果通过管理路径,则需要向清单中添加资源以删除每个过时条目,例如:

windows_path {
   'java7u50': 
       ensure => absent,
       directory => 'C:\Program Files\Java\jdk1.7.0_50\bin';
}
要简化许多版本的操作,可以创建定义的类型:

define obsolete_java {
    windows_path {
       $name: 
           ensure => absent,
           directory => "C:\Program Files\Java\$name\bin";
    }
}
像这样使用它

obsolete_java { [ 'jdk1.7.0_50', 'jdk1.7.0_42', ... ]: }

什么样的迹象导致了被感知的不当行为?Puppet采取了什么行动,您期望的是什么?windows的标准java清单。下载量最多的那个。它将正确的新java路径添加到path变量中。它还正确地附加到JAVA_HOME。但是,它不会删除java目录的旧Path变量。因此,当安装新版本时,它只会将新目录添加到末尾,而旧目录也会保留。我看到了您编写的清单,其中包含了您提到的模块(但没有;-),很好,我想我现在可以看到您的问题了。抱歉。不是我写的。我在《木偶》第二周。在工作中被投入其中,并被告知要解决:)
#将java添加到路径中。windows_path{'javaPath':确保=>存在,目录=>“C:\\Program Files\\Java\\$file\\bin”}我知道您可以更改此选项以确保=>'缺席'目录=>“C:\\Program Files\\Java\\$file\\bin”
,它将删除一个条目,但它似乎并没有删除所有java路径条目。这就是为什么我在评论中要求你的清单-从你的问题中根本不清楚你在做这样的事情。用一种可能的策略更新了答案。我很想只花几天时间来理解语法。我试图添加您建议的内容,但却被错误所困扰。我现在觉得自己像个十足的白痴。我相信在接下来的几周里,当我学习语法时,这种情况会有所改变,但现在,这是我有史以来的第一次编辑。这是别人的工作,离开公司交给了我。谢谢你的帮助和耐心。错误:无法分析环境产品:无法在windows中嵌套过时的java定义\u java::setup at/etc/puppet/modules/windows\u java/manifests/setup.pp:13