Currently, if system is installed using Automated Installer
with default list of packages, slim_install metacluster is
left on the system - this prevents user from removing
any package, since slim_install depends on all of them:

# pkg uninstall SUNWgui-install
Creating Plan /pkg: Cannot remove
'pkg:/SUNWgui-install at 0.5.11 <mailto:SUNWgui-install at 
0.5.11>,5.11-0.109:20090305T193146Z' due to
the following packages that depend on it:
  pkg:/slim_install at 0.1 <mailto:slim_install at 
0.1>,5.11-0.109:20090305T202838Z

As slim_install serves no purpose on installed system, it should be
removed. Please see bug 3398 for details.

For LiveCD case, Distribution Constructor (DC) takes care of removing
slim_install/babel_install once 'proto area' is populated with
packages. Following implementation is used:

[1] DC manifest specifies list of packages to be removed:
...
<!--
     Packages to be removed from the pkg_image area before
     bootroot construction
-->
<post_install_remove_packages>
        <pkg name="slim_install"/>
</post_install_remove_packages>
...


[2] transfer module takes that list and removes packages from 'proto area'

It seems we should follow the same approach for AI in order to
provide user with consistent experience:

[1] AI manifest would be enhanced, so that list of packages to be removed
    can be specified there

[2] transfer module would read the list of packages and remove them from
    installed system right after IPS install phase is finished.

[add 1] proposed implementation
-------------------------------
In current AI manifest, following tags are used to specify list of packages
to be installed:
...
<ai_packages>
    <package_name>
...
    </package_name>
</ai_packages>
...

Based on this and in order to reflect the approach taken in DC,
following tags would be introduced for list of packages to be removed

...
<ai_remove_packages>
    <package_name>
...
    </package_name>
</ai_remove_packages>
...

issues to be addressed:

[a] default behavior
--------------------
I think that user expectation would be that if list is empty
(no package name provided), nothing should be removed. Opposite
approach would cause problems in situations where user installs
customized list of packages in which case nothing is to be removed.

The problem is that it is inconsistent behavior with respect
to the list of packages to be installed - currently, if this
list is empty, following packages are installed by default
(as specified in ai_manifest.defval.xml):

        SUNWcsd
        SUNWcs
        slim_install
        entire

One possibility is to change this behavior (don't use default
list of packages) and if no packages are specified for the installation,
nothing will be installed. It might look like it doesn't make too
much sense to call AI to install nothing, but I think this would
give us more flexibility.

e.g. let's assume that AI engine will support more than just IPS
transfer mechanism (like some method of fast provisioning), then
empty list of packages would just mean that IPS transfer phase
is not involved.

With respect to this, following changes are to be proposed:
* move default list of packages from ai_manifest.defval.xml to
  default AI manifest.

  Another advantage is that it is also less confusing, since user
  knows what will be installed just by taking a look at default
  AI manifest (no need to inspect ai_manifest.defval.xml).

  And this approach would be consistent with the one followed
  by DC.

  Then default AI manifest would be enhanced in following way:

...
<ai_packages>
    <package_name>
        SUNWcsd
        SUNWcs
        slim_install
        entire
    </package_name>
</ai_packages>
<ai_remove_packages>
    <package_name>
        slim_install
    </package_name>
</ai_remove_packages>
...

And ai_manifest.defval.xml might be changed in following way:

    <default nodepath="ai_packages/package_name"
       from="value" type="element" missing_parent="skip">
        SUNWcsd
        SUNWcs
        slim_install
        entire
    </default>

->

    <default nodepath="ai_packages/package_name"
        from="value" type="element" missing_parent="skip">
            do_not_install_any_package
    </default>
    <default nodepath="ai_remove_packages/package_name"
        from="value" type="element" missing_parent="skip">
            do_not_remove_any_package
    </default>



* if list of packages is empty, AI engine will not install (or remove)
  anything. Since at this point there is no other mechanism
  implemented for installing bits on target, AI would just
  inform user and exit with error, since running rest of install
  (ICT) doesn't make sense.

If going this way, following problem with compatibility will occur:
* when new AI image and old default AI manifest were used,
  AI engine would not install anything. I am not sure if this is
  acceptable or if we should mitigate the problem in some way.

Old AI image and new default AI manifest would work in the same
way as old AI image and old default AI manifest.

[b] What to install by default - slim_install/babel_install
-----------------------------------------------------------

Currently, AI installs slim_install by default. Since it seems
that we will be able to switch to one LiveCD media containing
everything, the suggestion was made to accommodate AI behavior
accordingly to reflect this change.

Do we happen to know at this point which metacluster will remain
after this change happens - slim_install/babel_install ?

If babel_install, might it make sense to switch to babel_install
in AI now ?

Please let me know, what you think about this.

Thank you very much,
Jan

-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://mail.opensolaris.org/pipermail/caiman-discuss/attachments/20090318/71d7d0e7/attachment.html>

Reply via email to