나는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,
}
라이선스 파일이 아직 존재하지 않으면 커뮤니티 라이선스가 설치되지만, 존재하는 경우에는 건드리지 않습니다.