2015-08-05 2 views
0

Можете ли вы сказать мне, возможно ли это удалить Java JDK пакет с Chef с windows_package, или я должен выполнить команду для бесшумной удаления? Гораздо лучше будет первым вариантом.Удаление пакета с шеф-

Я пробовал так:

windows_package node['name']['JDK1.6'] do 
     action   :remove 
end 

и даже дополнительный вариант installer_type :custom, все еще получил эту ошибку:

FATAL: Mixlib::ShellOut::ShellCommandFailed: windows_package[Java(TM) SE Development Kit 6 Update 35] (line 4) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0, 42, 127], but received '1603' 
---- Begin output of MsiExec.exe /I{32A3A4F4-B792-11D6-A78A-00B0D0160350} /qn ---- 
STDOUT: 
STDERR: 
---- End output of MsiExec.exe /I{32A3A4F4-B792-11D6-A78A-00B0D0160350} /qn ---- 
Ran MsiExec.exe /I{32A3A4F4-B792-11D6-A78A-00B0D0160350} /qn returned 1603 

Ну, я из идей. На official Opscode site я нашел эту информацию:

:remove: remove a package. The remove action is completely hit or miss as many application uninstallers do not support a full silent/quiet mode.

Но, насколько я знаю, JDK поддерживает бесшумную деинсталляцию.

Итак - как мне это сделать, чтобы правильно удалить пакеты? Возможно ли это?

Большое спасибо за помощь.


Спецификация:

  • Chef 12.4.1
  • Windows 7
  • Java JDK в версиях: 6u35, 7u79, 8u45

Если вы требуется дополнительная информация не стесняйтесь спрашивать.

ответ

1

Ну, я закончил свою собственную реализацию. Для тех, кому это потребуется, тоже:

# variable 'code' is for JDK version code from registry. 
# Uninstall comand: MsiExec.exe /quiet /X[CODE] 
# Codes are in regkey HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall. Be aware to check key for JDK, not JRE! 

remove_command = "MsiExec.exe /quiet /X#{code}" 

execute "Remove JDK from system" do 
     command   remove_command 
     returns   [0,1605] # 1605 for non-existing product error 
end 

Например, для JDK 1.6.35 (упомянутый в вопросе) код должен быть

code = '{32A3A4F4-B792-11D6-A78A-00B0D0160350}' 

Так что похоже это разные команды, чем используемый Chef:

  • используется Chef

MsiExec.exe /I{32A3A4F4-B792-11D6-A78A-00B0D0160350} /qn

  • Эта команда

MsiExec.exe /quiet /X{32A3A4F4-B792-11D6-A78A-00B0D0160350}

Возможно, кому-то это будет полезно.

0

Похоже, что это не проблема шеф-повара как таковой. По какой-то причине удалите ошибку. Попробуйте googling для «java install error 1603», и вы увидите кучу сообщений, в том числе ту, которая, по-видимому, является ошибкой, которая в настоящее время находится на стадии расследования https://www.java.com/en/download/help/error_1603.xml - хотя похоже, что это может быть установка не удалена.

Попробуйте удалить его вручную и отладить его, а затем, как только вы его поймете, вы можете пошевелировать его.

0

Я сделал что-то похожее на ваш ответ, но для него требуется только имя пакета, а не код из реестра.

execute 'uninstall_jdk8u72' do 
    command "wmic product where name=\"#{node[:java8u72][:package_name]}\" call uninstall" 
end 

Я получил идею от https://github.com/chef-cookbooks/windows/issues/89

 Смежные вопросы

  • Нет связанных вопросов^_^