删除旧的Java路径 - Puppet

时间:2014-08-13 19:20:48

标签: 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:\ PROGRAM   文件(x86)\ IBM \ RationalSDLC \ common ;; C:\ Program Files   (x86)\ NTP \ bin; C:\ Program Files(x86)\ Puppet Labs \ Puppet \ bin; C:\ Program   文件\的Java \ jdk1.7.0_50 \ BIN; C:\ PROGRA〜1 \ Apache的行家\ BIN; C:\ PROGRAM   文件\爪哇\ jdk1.7.0_55 \ BIN

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

编辑:更重要的是我们需要做的是让它搜索JAVA_HOME路径变量,将其与Path变量进行比较,删除任何不属于的java目录,然后复制{{1到JAVA_HOME。希望这是有道理的。

1 个答案:

答案 0 :(得分:0)

puppetlabs-java模块似乎没有努力更新默认环境。

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

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

提供处理路径的清单后,

编辑

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

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', ... ]: }