[Libguestfs] [PATCH 2/2] customize: Improve the error messages when package manager is unknown or unsupported.
Richard W.M. Jones
rjones at redhat.com
Wed May 4 16:49:29 UTC 2016
On Wed, May 04, 2016 at 04:09:02PM +0200, Pino Toscano wrote:
> On Wednesday 04 May 2016 14:12:30 Richard W.M. Jones wrote:
> > For Windows, we now print:
> >
> > $ virt-customize -a ./test-data/phony-guests/windows.img --install MSSQL
> > [ 0.0] Examining the guest ...
> > [ 14.2] Setting a random seed
> > virt-customize: warning: random seed could not be set for this type of
> > guest
> > [ 14.2] Installing packages: MSSQL
> > virt-customize: error: '--install' failed because inspection could not
> > determine the package manager for this guest OS.
> >
> > If this guest OS is a common one with ordinary package management then this
> > may have been caused by a failure of libguestfs inspection.
> >
> > For OSes such as Windows that lack package management, this is not
> > possible. Try using one of the '--firstboot*' flags instead (described in
> > the manual).
> > ---
> > customize/customize_run.ml | 19 ++++++++++++++-----
> > 1 file changed, 14 insertions(+), 5 deletions(-)
> >
> > diff --git a/customize/customize_run.ml b/customize/customize_run.ml
> > index 83e70a6..c0e1e44 100644
> > --- a/customize/customize_run.ml
> > +++ b/customize/customize_run.ml
> > @@ -94,7 +94,7 @@ exec >>%s 2>&1
> > in
> >
> > (* http://distrowatch.com/dwres.php?resource=package-management *)
> > - let guest_install_command packages =
> > + let rec guest_install_command packages =
> > let quoted_args = String.concat " " (List.map quote packages) in
> > match g#inspect_get_package_management root with
> > | "apk" ->
> > @@ -116,10 +116,11 @@ exec >>%s 2>&1
> > | "urpmi" -> sprintf "urpmi %s" quoted_args
> > | "yum" -> sprintf "yum -y install %s" quoted_args
> > | "zypper" -> sprintf "zypper -n in -l %s" quoted_args
> > +
> > | "unknown" ->
> > - error (f_"--install is not supported for this guest operating system")
> > + error_unknown_package_manager (s_"--install")
> > | pm ->
> > - error (f_"sorry, don't know how to use --install with the '%s' package manager") pm
> > + error_unimplemented_package_manager (s_"--install") pm
> >
> > and guest_update_command () =
> > match g#inspect_get_package_management root with
> > @@ -142,10 +143,18 @@ exec >>%s 2>&1
> > | "urpmi" -> "urpmi --auto-select"
> > | "yum" -> "yum -y update"
> > | "zypper" -> "zypper -n update -l"
> > +
> > | "unknown" ->
> > - error (f_"--update is not supported for this guest operating system")
> > + error_unknown_package_manager (s_"--update")
> > | pm ->
> > - error (f_"sorry, don't know how to use --update with the '%s' package manager") pm
> > + error_unimplemented_package_manager (s_"--update") pm
> > +
> > + (* Windows has package_management == "unknown". *)
> > + and error_unknown_package_manager flag =
> > + error (f_"'%s' failed because inspection could not determine the package manager for this guest OS.\n\nIf this guest OS is a common one with ordinary package management then this may have been caused by a failure of libguestfs inspection.\n\nFor OSes such as Windows that lack package management, this is not possible. Try using one of the '--firstboot*' flags instead (described in the manual).") flag
>
> what about
> "cannot run '%s' because no package management has been detected for
> this guest OS.\n etc"
>
> > +
> > + and error_unimplemented_package_manager flag pm =
> > + error (f_"sorry, '%s' with the '%s' package manager has not been implemented.\n\nIf this guest OS has ordinary package management then you will need to add support to virt-customize.\n\nFor OSes lack package management, this is not possible.\n\nYou can work around this by using one of the '--run*' or '--firstboot*' options instead (described in the manual).") flag pm
>
> I'd shorten this message:
> "sorry, '%s' with the '%s' package manager has not been implemented yet.\n\nYou can work around this by using one of the '--run*' or '--firstboot*' options instead (described in the manual)."
>
> rationale behind that:
> - telling users to add support for that is not exactly useful, and what
> will happen in such cases is that we get reports with that
> - if the OS lacks package management, then the result will be "unknown"
> and thus the other message will be shown
> - this would be shown in virt-builder, other than virt-customize (but
> that's just a minor point)
Thanks - I pushed these with the changes you suggested.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW
More information about the Libguestfs
mailing list