jan damborsky wrote: > Hi Joe, > > > On 03/18/09 12:34, Joseph J VLcek wrote: >> jan damborsky wrote: >>> 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 >>> >>> >>> ------------------------------------------------------------------------ >>> >>> _______________________________________________ >>> caiman-discuss mailing list >>> caiman-discuss at opensolaris.org >>> http://mail.opensolaris.org/mailman/listinfo/caiman-discuss >> >> Jan, >> >> I have only one "suggestion". It just helps me when symmetry is used >> for naming these types of things. >> >> What do you think about using the name <ai_add_packages> instead of >> <ai_packages> ? >> >> This name would create symmetry with: >> <ai_add_packages> >> <ai_remove_packages> >> >> Just a suggestion. > > This is a good point - I was thinking about this and I agree > with you that this naming makes more sense. > > The issue I could see here is that renaming ai_packages to > ai_add_packages would introduce more incompatibilities. > > Then old AI manifests would no longer work with new AI image > even if it contained list of packages to be installed and > old AI image would not work with new AI manifest. > > I am not sure what the current strategy is as far as compatibility > is concerned. The part of the problem is that we don't have > support for versioning implemented - that would mitigate the problem > in such a way that we could provide user with appropriate > information - in this particular case that provided AI manifest > is not compatible with given AI image. >
I'm a little annoyed here, as I had specifically requested that versioning be added to the manifests quite some time ago, precisely because of issues like this; where did that get lost? I would think we could alias the current element to the "add" or "install" element, though. Nonetheless, at this point I would bite an incompatibility bullet to clean this up before 2009.06. Dave
