如何使用虚拟机上的 CLI 验证 IDEA 安装成功?

如何使用虚拟机上的 CLI 验证 IDEA 安装成功?

我正在使用一个用于安装 IntelliJ IDEA 的第三方 Puppet 模块,并且我想自动验证安装是否有效。目前的解决方案由于没有许可证而失败:

$ make test
[...]
/usr/bin/vagrant ssh --command '/opt/idea/bin/inspect.sh "/home/user/dev/root" ~/.IntelliJIdea14/config/inspection/Default.xml /tmp -d "/home/user/dev/root/test/module"'
OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=350m; support was removed in 8.0
Sep 14, 2015 1:40:43 AM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.
Sep 14, 2015 1:40:43 AM java.util.prefs.FileSystemPreferences$6 run
WARNING: Prefs file removed in background /home/vagrant/.java/.userPrefs/prefs.xml
[   1380]  ERROR - nse.impl.GeneralLicenseManager - No valid license found 
java.lang.Throwable
        at com.intellij.openapi.diagnostic.Logger.error(Logger.java:115)
        at com.intellij.ide.a.g.cb.a(cb.java:107)
        at com.intellij.idea.MainImpl$1.start(MainImpl.java:43)
        at com.intellij.idea.StartupUtil.prepareAndStart(StartupUtil.java:117)
        at com.intellij.idea.MainImpl.start(MainImpl.java:38)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at com.intellij.ide.plugins.PluginManager$2.run(PluginManager.java:91)
        at java.lang.Thread.run(Thread.java:745)
[   1389]  ERROR - nse.impl.GeneralLicenseManager - IntelliJ IDEA 14.1.4  Build #IU-141.1532.4 
[   1389]  ERROR - nse.impl.GeneralLicenseManager - JDK: 1.8.0_60 
[   1389]  ERROR - nse.impl.GeneralLicenseManager - VM: OpenJDK 64-Bit Server VM 
[   1390]  ERROR - nse.impl.GeneralLicenseManager - Vendor: Oracle Corporation 
[   1390]  ERROR - nse.impl.GeneralLicenseManager - OS: Linux 
Connection to 127.0.0.1 closed.
Makefile:198: recipe for target 'test-integrated-development-environment' failed
make: *** [test-integrated-development-environment] Error 255

我显然无法将自己的许可证文件放入存储库中。所以选项如下所示:

  1. 创建社区许可证文件,将其包含在存储库中,仅当该文件尚不存在时才将其写入许可证文件位置。我不确定那会有多hacky。
  2. 在与上述相同的条件下,动态生成社区许可证文件。不知道这是否可能。
  3. 运行一些完全不同的命令,不需要正在运行的 X 服务器或许可证。

解决方法现在只是为了检查/opt/idea/bin/inspect.sh是否存在,在我看来这不是一个好的指标。

如果没有可用的许可证文件,我不想执行诸如安装社区版本之类的操作。我想检查我真正要安装的软件包的安装情况。

答案1

第一个可能是最好的主意。木偶有一个属性对于file内置类型;只是做类似的事情

file { "idea-license":
    source => "puppet:///.../community-license",
    replace => false,
}

如果许可证文件尚不存在,这将安装社区许可证,但如果存在则不触及它。

相关内容