私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
明らかに私のライセンスファイルをリポジトリに入れることはできません。したがって、オプションは次のようになります。
- コミュニティライセンスファイルを作成してリポジトリに含め、ファイルがまだ存在しない場合にのみライセンスファイルの場所に書き込みます。それがどれほどハッキーなのかよくわかりません。
- 上記と同じ条件でコミュニティライセンスファイルを動的に生成します。これが可能かどうかわかりません。
- 実行中のXサーバーまたはライセンスを必要としないまったく異なるコマンドを実行します。
これ解決策今/opt/idea/bin/inspect.sh
存在することを確認、私の考えでは良い指標ではありません。
使用可能なライセンスファイルがない場合は、コミュニティバージョンのインストールなどの作業をしたくありません。実際にインストールしたいパッケージのインストールを確認したいと思います。
答え1
最初のアイデアはおそらく最高のアイデアでしょう。人形はプロパティfile
組み込みタイプの場合は、次のようにします。
file { "idea-license":
source => "puppet:///.../community-license",
replace => false,
}
ライセンスファイルがまだ存在しない場合は、コミュニティライセンスがインストールされますが、存在する場合は触れません。