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]

Reply via email to