OpenPKG CVS Repository
http://cvs.openpkg.org/
____________________________________________________________________________
Server: cvs.openpkg.org Name: Thomas Lotterer
Root: /e/openpkg/cvs Email: [EMAIL PROTECTED]
Module: openpkg-re Date: 31-Jul-2003 16:46:56
Branch: HEAD Handle: 2003073115465600
Modified files:
openpkg-re upgrade.txt
Log:
The OpenPKG v1.3 way of upgrading a package
Summary:
Revision Changes Path
1.11 +93 -0 openpkg-re/upgrade.txt
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: openpkg-re/upgrade.txt
============================================================================
$ cvs diff -u -r1.10 -r1.11 upgrade.txt
--- openpkg-re/upgrade.txt 31 Jul 2003 14:42:38 -0000 1.10
+++ openpkg-re/upgrade.txt 31 Jul 2003 14:46:56 -0000 1.11
@@ -569,6 +569,99 @@
return "unknown" here. A package is active when it's daemon is up
and running.
+ o The OpenPKG v1.3 way of upgrading a package
+
+ 1st) build the package (--rebuild --define 'feature yes')
+ 2nd) rescue your configuration, unless it is build from an external source
+ 3rd) upgrade the package (-Uvh)
+ 4th) handle and remove all .rpm(save|old|orig) files
+ 5th) start the service (%{l_prefix}/etc/rc service start)
+ 6th) [ erase a package (-e) ]
+
+ The first step is not different from previous releases of OpenPKG.
+
+ The second step might be anything from nothing and restart from
+ scratch, copying, archiving or ignoring it completely because
+ you have a configuration management system which builds the
+ configuration from a source external to OpenPKG.
+
+ The third step upgrades the package and copies the files to the
+ system. This might include modification of configuration files
+ which results in .rpm(save|old|orig) copies/suggestions. This works
+ exactly like previous releases of OpenPKG. Now for the news in v1.3:
+ all CORE and BASE packages have been tuned to restart the service
+ (= daemon that comes within a package) after upgrade (find comment
+ "after upgrade, restart service" in %post section of the spec). A
+ restart will keep stopped services stopped and running services will
+ experience a stop/start combination. We found two categories of
+ services. Regarding the restart issue, a simple service can continue
+ to run during the upgrade and only requires a "rc service restart"
+ after the upgrade (i.e. openssh). This works for any service that
+ only reads it's configuration during startup. The majority of
+ services falls into this category. Some complex ones read their
+ configuration while they are up and running (i.e. postfix) based
+ on new connections, timing, external signal, timestamp monitoring
+ or whatever. Or they require more complex upgrade activity like
+ user data conversion (i.e. postgresql). For the complex ones (find
+ comment "before upgrade, save status and stop service" of the %pre
+ section in the spec) the running state is saved before the upgrade,
+ the service is stopped using "rc service stop" and after the upgrade
+ the state is recovered, if possible, executing a "rc service start".
+
+ The fourth step is already tied closely to the the third one. In
+ OpenPKG v1.3, "rc" checks if it finds any .rpm(save|old|orig) files
+ in or below the package's %{l_prefix}/etc/%{name}/ directory. For
+ %start and %restart actions this situation is considered an error,
+ a message is printed to stderr (and sent to you via mail if it's
+ executed by cron, i.e. log file rotation in %daily scriptlet) and
+ starting or restarting is effectively inhibited. For all other
+ sections, including %status and %env, this situation is considered a
+ warning, a message is printed to stderr (...cron...) but execution
+ will continue. This behaviour is already true for the final %post
+ scriptlet in the third step discussed above. Simple services just
+ won't restart and the old one will continue to run (rc %restart
+ is suppressed) until stopped somehow. Complex services have been
+ shut down in the %pre scriptlet (rc %stop) and might not come up
+ again after the upgrade (rc %start is suppressed). This altogether
+ leads to the point that after an upgrade, the new service might
+ not be startable. You have to move the .rpm(save|old|orig) out of
+ "rc" sight by renaming, moving or removing them somehow. This could
+ be done manually, it could also be done automatically by a 3rd
+ party configuration management. As a sidenote please understand the
+ default configuration of all CORE and BASE packages (except ntp and
+ amd) were altered to force the daemon to listen on 127.0.0.1. This
+ reduces interference with other (system, different OpenPKG instance)
+ similar services. It also ensures that the service is not exposed to
+ the outer world without your explicit configuration, this enhances
+ security (and increases travel expenses if you forget to tweak your
+ sshd_config!). Last but not least, it means that services which do
+ awkward (i.e. apache showing default index page) or deadly (i.e.
+ postfix rejecting incoming mails) things in the default config won't
+ do it without making you fully responsible :-)
+
+ The fifth step is only necessary if the running state should
+ forcibly change after an upgrade or the automatic run state recovery
+ that executed in the %post scriptlet before the configuration
+ management cleaned out things failed. After the blocking files
+ have been removed, further "rc start" or "rc restart" actions will
+ succeed. Note that simple services will have the old service up
+ and running and require a %restart (= %stop %start) while complex
+ services were already stopped and require a %start. Note that
+ %restart will not do anything if the service is not already running.
+ Also note that %start will not do anything if the service is already
+ running. If you're in doubt, execute "rc service restart start"
+ after configuration management took place.
+
+ Just for completeness, the sixth step would be a package erase.
+ All CORE and BASE packages were tuned to shut down the service
+ (find comment "before erase, stop service" in %preun section of
+ the spec), erase log (including statistics and history) and run
+ (pidfiles, UNIX domain socket files) files without notice. If you
+ want to keep them, refrain from erasing or save that data first.
+ User data like databases will not be removed, of course (trusting
+ this statement blindly and omitting backups might result in an
+ interesting experience of life :-)
+
o FIXME
- mention sharutils requirement (SuSE)
- mention solaris requirements (feedback from Ingo)
@@ .
______________________________________________________________________
The OpenPKG Project www.openpkg.org
CVS Repository Commit List [EMAIL PROTECTED]