Matthew Booth
2011-Feb-01 16:19 UTC
[Libguestfs] [PATCH] Check for, and uninstall, VMware Tools installed from tarball
VMware Tools can be installed by RPM or from a tarball. We were only looking for the RPM. If it was installed by tarball, we would end up leaving it in place. If VMware Tools detects that it is not running on a VMware platform when it starts, it will clumsily try to uninstall itself, leading to misconfiguration. This patch looks for tarball-installed VMware Tools and uninstalls it. Fixes RHBZ#623571 --- lib/Sys/VirtV2V/Converter/RedHat.pm | 18 ++++++++++++++++++ 1 files changed, 18 insertions(+), 0 deletions(-) diff --git a/lib/Sys/VirtV2V/Converter/RedHat.pm b/lib/Sys/VirtV2V/Converter/RedHat.pm index 762ee0e..114d876 100644 --- a/lib/Sys/VirtV2V/Converter/RedHat.pm +++ b/lib/Sys/VirtV2V/Converter/RedHat.pm @@ -756,6 +756,24 @@ sub _unconfigure_vmware _remove_application($name, $g); } } + + # VMwareTools may have been installed from tarball, in which case the above + # won't detect it. Look for the uninstall tool, and run it if it's present. + # + # Note that it's important we do this early in the conversion process, as + # this uninstallation script naively overwrites configuration files with + # versions it cached from prior to installation. + my $vmwaretools = '/usr/bin/vmware-uninstall-tools.pl'; + if ($g->exists($vmwaretools)) { + eval { $g->command([$vmwaretools]) }; + warn user_message(__x('VMware Tools was detected, but uninstallation '. + 'failed. The error message was: {error}', + error => $@)) if $@; + + # Reload augeas to detect changed made by vmware tools uninstallation + eval { $g->aug_load() }; + augeas_error($g, $@) if $@; + } } # Get a list of all foreign hypervisor specific kernel modules which are being -- 1.7.3.5
Richard W.M. Jones
2011-Feb-01 19:52 UTC
[Libguestfs] [PATCH] Check for, and uninstall, VMware Tools installed from tarball
On Tue, Feb 01, 2011 at 04:19:03PM +0000, Matthew Booth wrote:> VMware Tools can be installed by RPM or from a tarball. We were only > looking for the RPM. If it was installed by tarball, we would end up > leaving it in place. If VMware Tools detects that it is not running > on a VMware platform when it starts, it will clumsily try to > uninstall itself, leading to misconfiguration. This patch looks for > tarball-installed VMware Tools and uninstalls it. > > Fixes RHBZ#623571 > --- > lib/Sys/VirtV2V/Converter/RedHat.pm | 18 ++++++++++++++++++ > 1 files changed, 18 insertions(+), 0 deletions(-) > > diff --git a/lib/Sys/VirtV2V/Converter/RedHat.pm b/lib/Sys/VirtV2V/Converter/RedHat.pm > index 762ee0e..114d876 100644 > --- a/lib/Sys/VirtV2V/Converter/RedHat.pm > +++ b/lib/Sys/VirtV2V/Converter/RedHat.pm > @@ -756,6 +756,24 @@ sub _unconfigure_vmware > _remove_application($name, $g); > } > } > + > + # VMwareTools may have been installed from tarball, in which case the above > + # won't detect it. Look for the uninstall tool, and run it if it's present. > + # > + # Note that it's important we do this early in the conversion process, as > + # this uninstallation script naively overwrites configuration files with > + # versions it cached from prior to installation. > + my $vmwaretools = '/usr/bin/vmware-uninstall-tools.pl'; > + if ($g->exists($vmwaretools)) {I might use '$g->is_file' here, although that would fail if it was a symlink.> + eval { $g->command([$vmwaretools]) }; > + warn user_message(__x('VMware Tools was detected, but uninstallation '. > + 'failed. The error message was: {error}', > + error => $@)) if $@; > + > + # Reload augeas to detect changed made by vmware tools uninstallations/changed/changes/> + eval { $g->aug_load() }; > + augeas_error($g, $@) if $@; > + } > }ACK. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones virt-df lists disk usage of guests without needing to install any software inside the virtual machine. Supports Linux and Windows. http://et.redhat.com/~rjones/virt-df/
Possibly Parallel Threads
- [PATCH 1/2] ESX: Look harder for potential transfer failures
- [PATCH] Don't remove foreign kernels during conversion
- [PATCH 1/4] Check that we're not overwriting an existing Libvirt domain
- [PATCH 1/2] Refactor guest and volume creation into Sys::VirtV2V::Target::LibVirt
- [PATCH] Fix subclassing of LibVirtXMLSource