r871 - in zope-common/tags: . 0.5.31 0.5.31/debian 0.5.31/debian/doc 0.5.31/debian/po

lunar at alioth.debian.org lunar at alioth.debian.org
Mon May 14 11:49:21 UTC 2007


Author: lunar
Date: 2007-05-14 11:49:18 +0000 (Mon, 14 May 2007)
New Revision: 871

Added:
   zope-common/tags/0.5.31/
   zope-common/tags/0.5.31/debian/
   zope-common/tags/0.5.31/debian/README.Debian
   zope-common/tags/0.5.31/debian/apt.conf
   zope-common/tags/0.5.31/debian/bash_completion
   zope-common/tags/0.5.31/debian/changelog
   zope-common/tags/0.5.31/debian/compat
   zope-common/tags/0.5.31/debian/config
   zope-common/tags/0.5.31/debian/control
   zope-common/tags/0.5.31/debian/copyright
   zope-common/tags/0.5.31/debian/dirs
   zope-common/tags/0.5.31/debian/doc/
   zope-common/tags/0.5.31/debian/doc/ZPL-2.0
   zope-common/tags/0.5.31/debian/doc/zope-policy.sgml
   zope-common/tags/0.5.31/debian/po/
   zope-common/tags/0.5.31/debian/po/POTFILES.in
   zope-common/tags/0.5.31/debian/po/cs.po
   zope-common/tags/0.5.31/debian/po/da.po
   zope-common/tags/0.5.31/debian/po/de.po
   zope-common/tags/0.5.31/debian/po/fr.po
   zope-common/tags/0.5.31/debian/po/it.po
   zope-common/tags/0.5.31/debian/po/ja.po
   zope-common/tags/0.5.31/debian/po/nl.po
   zope-common/tags/0.5.31/debian/po/pt.po
   zope-common/tags/0.5.31/debian/po/pt_BR.po
   zope-common/tags/0.5.31/debian/po/sv.po
   zope-common/tags/0.5.31/debian/po/templates.pot
   zope-common/tags/0.5.31/debian/po/vi.po
   zope-common/tags/0.5.31/debian/postinst
   zope-common/tags/0.5.31/debian/postrm
   zope-common/tags/0.5.31/debian/rules
   zope-common/tags/0.5.31/debian/templates
   zope-common/tags/0.5.31/dzhandle
   zope-common/tags/0.5.31/dzhandle.sgml
Log:
Add zope-common=0.5.31 to subversion as doko didn't bother to do it.


Added: zope-common/tags/0.5.31/debian/README.Debian
===================================================================
--- zope-common/tags/0.5.31/debian/README.Debian	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/README.Debian	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,183 @@
+zope-common for Ubuntu/Debian
+-----------------------------
+
+The document describes how to handle zope installations, managing zope
+instances and packaging of zope versions and products on Debian
+systems.
+
+zope versions in Debian
+-----------------------
+
+The packaging of zope versions and products allows parallel installations 
+and running of different zope versions.
+
+Hints for a Zope user
+---------------------
+
+Installing a Zope package doesn't start you a Zope process, it just
+sits on your disk. To actually do something you have to create a Zope
+instance and start this instance. You can do this by hand, but the
+packaging provides you with some support to setup preconfiugred Zope
+instances like a sandbox instances (play around, test), or
+preconfigured instances like plone-site or cps-site.
+
+Each Zope version is installed in
+
+	/usr/lib/zope<version>
+
+Instances are created in
+
+	/var/lib/zope<version>/<instance name>
+
+If you want to add them somewhere else, add a symlink in the above
+directory to the instance home, so the packaging tools can find them.
+
+Zope products and extensions are installed in
+
+	/usr/{lib,share}/zope/{Extensions,Products}
+
+These won't show up in Zope instances by default. Make them visible
+to the instances by the packaging tools (the dzhandle binary) or
+use your own tools and scripts.
+
+You don't have to use the packaging tools. Just create the instances
+manually and the packaging won't touch them (If it's touched anyway,
+please report a bug).
+
+
+Handling of Zope Products
+-------------------------
+
+Products are typically packaged as zope-<product> (where <product> is
+all lowercase). Installing a product makes the product available on
+your system, but not in an Zope instance, except the instance is
+configured to have all products installed by default.
+
+To add the MyProduct product to the Zope 2.9 instance `myinstance',
+you have to run the following command:
+
+    # dzhandle -z 2.9 add-product myinstance MyProduct
+
+
+Handling of Zope Instances
+--------------------------
+
+You (or a package) can create a zope instance using:
+
+  dzhandle -z 2.9 make-instance <instance> --addon-mode [manual|all]
+
+The script uses the `mkzopeinstance.py' script to create the instance
+and creates a file /etc/zope2.9/<instance>/debian_policy, which has
+information about how the instance should be handled.
+
+Addon-Mode describes, if all addons should be installed in the Products
+directory of the instance, or if you want to handle these yourself
+either copying products to the location by hand or using the dzhandle tool.
+
+Addon-Technique describes how products and extensions, which are installed
+as .deb packages, are shown to the instance.
+
+- 'linked' makes everything visible to the instance, by using a symlink
+  to the packaged addon. Doesn't handle different python versions well.
+
+- 'tree-linked' copies the directory tree of the addon and symlinks every
+  file. Works better when you do have different zope versions requiring
+  different python versions (that's what the zope2.9-sandbox package uses).
+
+- 'copied' copies the product to the instance, but doesn't update the copy
+  on package upgrades.
+
+Restart-Policy describes how instances are restarted during configuration.
+
+An instance, which should be restarted on system start, has to be mentioned
+in /etc/default/zope<version>.
+
+
+Product Installation in Instances
+---------------------------------
+
+A product is automatically installed in an instance, if the Addon-Mode
+of the instance is set to 'all', and the instance doesn't have the addon
+exclude in it's instance policy file (Excluded-Addons).
+
+The installation will fail, if there's already a product in an
+instance in Addon-Mode 'all' and the product isn't in the list of
+excluded addons.
+
+
+Product Upgrades in Instances
+-----------------------------
+
+The installation of a packaged product in an instance is upgraded,
+if the Addon-Technique for the instance is 'linked' or 'tree-linked'.
+Manually installed products and 'copied' products are not updated.
+
+
+Product Removals in Instances
+-----------------------------
+
+When a packaged product is removed, it is tried to remove all
+product installations in instances, if the Addon-Technique of
+the instance is 'linked' or 'tree-linked'. The removal will fail,
+if the instance is in Addon-Mode 'manual'.
+
+Manually installed products and 'copied' products are not removed from
+the instances.
+
+
+Local third-party zope products
+-------------------------------
+
+The system administrator can install third-party custom products in
+/usr/local/share/zope/Products, and they will be read before the
+system-installed ones.
+
+To enable dzhandle usage for a manually installed product, the system
+administrator has to create a .dzproduct file inside the product with
+a content like:
+
+  Name: ProductName
+  Package: local
+  Version: 0.1
+
+At this point, dzhandle list-products will include the custom product.
+
+
+Using dzhandle with non-root users
+----------------------------------
+
+Starting from zope-common 0.5.26 it is possible to use dzhandle as non-root
+users to create and manage zope and zeo instances; these personal instances
+won't be started at system start-up by the init script.
+
+The default paths for personal zope and zeo instances are:
+
+  $HOME/zope/instance
+  $HOME/zope/zeo
+
+These paths can be overridden creating a file ~/.dzhandle.conf within the
+home directory of the user with the following syntax:
+
+  # this is a comment
+  instances: /home/user1/zope/instances
+  zeoinstances: /home/user1/zope/zeo
+  products: /home/user1/zope/products
+
+dzhandle detects when it is used with a non-root user and reads the
+configuration file in the home directory (or uses the default). This
+is an example usage of this feature:
+
+  $ whoami
+  user1
+  $ dzhandle -z2.9 make-instance testing -m manual -u admin:pwd
+  $ dzhandle -z2.9 add-product testing CMFPlone
+  $ dzhandle -z2.9 zopectl testing start
+  $ dzhandle -z2.9 zopectl testing stop
+  $ dzhandle -z2.9 purge-instance testing
+  
+  this instance will be created in:
+      /home/user1/zope-instances/zope2.9/testing
+
+Users can enable dzhandle usage for custom products putting them under
+~/zope/products (or where specified by the configuration file) and following
+the instructions from the "Local third-party zope products" paragraph.

Added: zope-common/tags/0.5.31/debian/apt.conf
===================================================================
--- zope-common/tags/0.5.31/debian/apt.conf	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/apt.conf	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,7 @@
+/*
+ * APT configuration file for Zope Debian packages.
+ */
+
+DPkg {
+	Post-Invoke {"which dzhandle >/dev/null && dzhandle restart-pending-instances || true";};
+}

Added: zope-common/tags/0.5.31/debian/bash_completion
===================================================================
--- zope-common/tags/0.5.31/debian/bash_completion	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/bash_completion	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,90 @@
+#-*- mode: shell-script;-*-
+
+# Debian GNU/Linux dzhandle(1) completion
+# Copyright 2006 Fabio Tranchitella <kobold at debian.org>
+
+have dzhandle &&
+_dzhandle()
+{
+    local cur prev options paroptions i delayed_options ZVER
+    
+    COMPREPLY=()
+    cur=${COMP_WORDS[COMP_CWORD]}
+
+    options='-h --help -v --verbose -f --force -z --zope-versions -u --user -c --config-file'
+    actions=$(
+	{
+	    dzhandle | grep -e '^actions:' -A 100 | grep -e '^  ' | awk '{print $1;}'
+	} | sort -u)
+
+    ZVER=`echo $COMP_LINE| sed -e 's/.* -z *\([^ ]\+\) .*/-z\1/g' | grep -e '^-'`
+
+    paroptions=""
+    i=${COMP_CWORD}
+    realprev=${COMP_WORDS[COMP_CWORD-1]}
+    while [ "$i" -gt 0 ]; do 
+      i=$(($i-1))
+      prev=${COMP_WORDS[i]}
+      if [ $(echo "$actions" | sed -e 's/ /\n/g' | grep -e "^$prev$" | wc -l) -eq 1 ]; then
+        [ "$prev" != "zopectl" ] && [ "$prev" != "zeoctl" ] && \
+        paroptions=`dzhandle $prev --help | grep -e '^  -' | sed -e 's/,//g' | \
+            sed -e 's/ /\n/g' | egrep '^-' | cut -d"=" -f1 | sort | uniq`
+        break;
+      fi
+    done
+
+    if [ -z "$paroptions" ]; then
+        paroptions="$options $actions"
+    fi
+
+    if [ "$prev" == "make-instance" ] ; then
+        case $realprev in
+	    --addon-mode|-m)
+	        delayed_options='all manual'
+	        COMPREPLY=( $( compgen -W "$delayed_options" | grep ^$cur ) )
+	        ;;
+	    --restart|-r)
+	        delayed_options='configuring end manually'
+	        COMPREPLY=( $( compgen -W "$delayed_options" | grep ^$cur ) )
+	        ;;
+	    --addon-install-technique|-a)
+	        delayed_options='linked tree-linked copied'
+	        COMPREPLY=( $( compgen -W "$delayed_options" | grep ^$cur ) )
+	        ;;
+	    *)
+	        COMPREPLY=( $(
+		        compgen -W "$paroptions" | grep "^$cur"
+		    ) )
+	        ;;
+        esac
+    elif [ "$prev" == "purge-instance" ] || [ "$prev" == "remove-instance" ] || [ "$prev" == "show-instance" ] || \
+         [ "$prev" == "zopectl" ] ; then
+            [ "$prev" == "$realprev" ] && \
+	        COMPREPLY=( $(
+		        compgen -W "`dzhandle $ZVER list-instances | awk '{print $1}' | sort -u`" | grep "^$cur"
+		    ) )
+    elif [ "$prev" == "purge-zeoinstance" ] || [ "$prev" == "show-zeoinstance" ] || [ "$prev" == "zeoctl" ] ; then
+            [ "$prev" == "$realprev" ] && \
+	        COMPREPLY=( $(
+		        compgen -W "`dzhandle $ZVER list-zeoinstances | awk '{print $1}' | sort -u`" | grep "^$cur"
+		    ) )
+    elif [ "$prev" == "add-product" ] || [ "$prev" == "remove-product" ] ; then
+            if [ "$prev" == "$realprev" ] ; then
+	            COMPREPLY=( $(
+		            compgen -W "`dzhandle $ZVER list-instances | awk '{print $1}' | sort -u`" | grep "^$cur"
+		        ) )
+            else
+	            COMPREPLY=( $(
+		            compgen -W "`dzhandle $ZVER list-products| grep -e '^product' | awk '{print $2;}' | sort -u`" | grep "^$cur"
+		        ) )
+            fi
+    else
+	        COMPREPLY=( $(
+		        compgen -W "$paroptions" | grep "^$cur"
+		    ) )
+    fi
+
+    return 0
+
+}
+[ "$have" ] && complete -F _dzhandle -o filenames dzhandle

Added: zope-common/tags/0.5.31/debian/changelog
===================================================================
--- zope-common/tags/0.5.31/debian/changelog	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/changelog	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,316 @@
+zope-common (0.5.31) unstable; urgency=low
+
+  * debian/control: Depend on the unversioned python package.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 16 Jan 2007 12:09:10 +0100
+
+zope-common (0.5.30) unstable; urgency=low
+
+  * dzhandle: do not break on purged instances while checking if they are
+    running.
+
+ -- Fabio Tranchitella <kobold at debian.org>  Fri, 12 Jan 2007 10:28:42 +0100
+
+zope-common (0.5.29) unstable; urgency=high
+
+  * dzhandle: fixed a bug which causes broken upgrade for global zope3
+    products.
+
+ -- Fabio Tranchitella <kobold at debian.org>  Mon,  8 Jan 2007 09:21:04 +0100
+
+zope-common (0.5.28) unstable; urgency=medium
+
+  [ Jérémy Bobbio ]
+  * Add Portugese translation of debconf templates.
+    Thanks to Rui Branco. (Closes: #401067)
+
+  [ Fabio Tranchitella ]
+  * dzhandle.sgml: fixed a typo in the man page (the option is called
+    manually instead of manual). (Closes: #402344)
+  * debian/po/vi.po: updated.
+
+ -- Fabio Tranchitella <kobold at debian.org>  Mon, 18 Dec 2006 17:35:23 +0100
+
+zope-common (0.5.27) unstable; urgency=medium
+
+  [ Fabio Tranchitella ]
+  * dzhandle: added again the declaration of DZError. (Closes: #399733)
+
+  [ Jérémy Bobbio ]
+  * Update french debconf templates translation. (Closes: #398676)
+  * Update japanese debconf templates translation. (Closes: #399075)
+  * Add XS-Vcs-Svn field to debian/control.
+
+ -- Fabio Tranchitella <kobold at debian.org>  Tue, 21 Nov 2006 20:20:23 +0100
+
+zope-common (0.5.26) unstable; urgency=medium
+
+  * debian/README.Debian: updated to use zope2.9 instead of zope2.10
+    in the examples, because that's the version we'll ship in etch.
+  * debian/templates: fixed two typos. (Closes: #385882)
+  * debian/control: lsb-release and po-debconf should be in Build-Depends.
+    (Closes: #392653)
+  * debian/po/cs.po: updated. (Closes: #396759)
+  * debian/po/de.po: updated. (Closes: #397215)
+  * dzhandle: restart only running instances on upgrades.
+    (Closes: #388253, #378364)
+  * dzhandle: use atechnique from the instance if not specified on the
+    command-line. (Closes: #382773)
+  * dzhandle: implemented basic non-root usage for personal instances.
+    (Closes: #359256)
+  * debian/rules: mv dzhandle from /usr/sbin to /usr/bin. (Closes: #379169)
+
+ -- Fabio Tranchitella <kobold at debian.org>  Mon,  6 Nov 2006 08:49:48 +0100
+
+zope-common (0.5.25) unstable; urgency=low
+
+  * Add support for Zope 2.10 to dzhandle.
+  * Update README.Debian to use zope2.10 instead of obsolete zope2.7 and
+    zope2.8 in examples.
+  * added nl and vi debconf translations. (closes: #390537, #324293)
+
+ -- Jonas Meurer <mejo at debian.org>  Wed,  1 Nov 2006 23:22:21 +0100
+
+zope-common (0.5.24) unstable; urgency=low
+
+  * dzhandle: fixed a bug in find_related_addons, which caused wrong
+    dependency analisys.
+  * debian/po/da.po: updated Danish debconf translation.
+    Thanks to Claus Hindsgaul. (Closes: #366838)
+
+ -- Fabio Tranchitella <kobold at debian.org>  Thu,  8 Jun 2006 13:10:21 +0200
+
+zope-common (0.5.23) unstable; urgency=low
+
+  * dzhandle: fixed a bug in locate_addons method, zver variable is False by
+    default. (Closes: #363128)
+
+ -- Fabio Tranchitella <kobold at debian.org>  Tue, 18 Apr 2006 09:55:19 +0200
+
+zope-common (0.5.22) unstable; urgency=low
+
+  * Added bash autocompletion for dzhandle.
+  * dzhandle: fixed a bug in locate_addons method.
+  * dzhandle: do not abort postinst if a product is already installed in
+    an instance. (Closes: #362083)
+
+ -- Fabio Tranchitella <kobold at debian.org>  Thu, 13 Apr 2006 08:34:50 +0200
+
+zope-common (0.5.21) unstable; urgency=low
+
+  * Applied a patch from nchauvat at nerim.net for increased usability.
+  * dzhandle: fixed directories for zope2.9 instances.
+  * dzhandle: added support for zeo instances (list-zeoinstances,
+    make-zeoinstance, purge-zeoinstance, zeoctl).
+
+ -- Fabio Tranchitella <kobold at debian.org>  Wed, 22 Mar 2006 13:01:36 +0000
+
+zope-common (0.5.20) unstable; urgency=low
+
+  * debian/README.Debian: explain to users how to add products to their
+    instances. (Closes: #352582)
+  * dzhandle: while acting as postinst for products, check the Zope version
+    compatibility before trying to add it to 'mode=all' instances.
+    (Closes: #343520)
+  * dzhandle: while acting as prerm for products, do not worry if the
+    *-configure.zcml file/link doesn't exist. This never happens but
+    when users are affected by bug #343520. (Closes: #352725)
+  * dzhandle: do not create the instance directory if the passwords
+    for the administrator do not match. (Closes: #345824)
+
+ -- Fabio Tranchitella <kobold at debian.org>  Thu, 23 Feb 2006 15:45:09 +0000
+
+zope-common (0.5.19) unstable; urgency=low
+
+  * debian/dirs: added /var/lib/zope. (Closes: #351467)
+  * dzhandle: replaced instance.path with instance.name in several places.
+    There is no path attribute, and I don't know why that code is there.
+    (Closes: #347939)
+
+ -- Fabio Tranchitella <kobold at debian.org>  Tue,  7 Feb 2006 16:30:26 +0000
+
+zope-common (0.5.18) unstable; urgency=low
+
+  * dzhandle: add support for Zope 3.2.
+  * debian/po/de.po: updated. (Closes: #346291)
+
+ -- Fabio Tranchitella <kobold at debian.org>  Wed, 18 Jan 2006 16:03:28 +0000
+
+zope-common (0.5.17) unstable; urgency=low
+
+  * dzhandle: add support for Zope 2.9.
+
+ -- Fabio Tranchitella <kobold at debian.org>  Sun, 15 Jan 2006 20:21:16 +0000
+
+zope-common (0.5.16) unstable; urgency=low
+
+  * dzhandle: fixed a small but for add-on which are being upgraded and
+    had been manually installed within an instance.
+
+ -- Fabio Tranchitella <kobold at debian.org>  Thu, 24 Nov 2005 13:23:07 +0000
+
+zope-common (0.5.15) unstable; urgency=low
+
+  * debian/control: set maintainer as "Debian/Ubuntu Zope Team"
+  * dzhandle: while adding products in instances, go ahead if some of the
+    dependencies are already installed.
+
+ -- Fabio Tranchitella <kobold at debian.org>  Fri, 18 Nov 2005 10:33:18 +0000
+
+zope-common (0.5.14) unstable; urgency=low
+
+  * dzhandle:
+    - before trying to add zope 2.x products to a zope3 instance,
+      check that a .dzconfigure file exists within the product directory.
+      (Closes: #337155)
+    - implemented 'dzhandle help' (Closes: #338091)
+    - use defaults if debian_policy doesn't exist. (Closes: #339483)
+    - modified locate_addons to check the supported zope_versions.
+  * debian/control: run debconf-updatepo on the clean target.
+    (Closes: #338165)
+  * debian/po/fr.po: updated. (Closes: #339714)
+  * debian/po/sv.po: updated. (Closes: #334990)
+
+ -- Fabio Tranchitella <kobold at debian.org>  Fri, 18 Nov 2005 10:09:21 +0000
+
+zope-common (0.5.13) unstable; urgency=low
+
+  * debian/po/sv.po: updated. (Closes: #334411)
+  * debian/README.Debian: fixed a typo (make-instance instead of
+    create-instance. (Ubuntu bug: #3321)
+
+ -- Fabio Tranchitella <kobold at debian.org>  Thu, 20 Oct 2005 14:23:34 +0000
+
+zope-common (0.5.12) unstable; urgency=low
+
+  * debian/po/fr.po: updated, thanks to Michel Grentzinger. (Closes: #331239)
+  * debian/po/cz.po: added, thanks to Miroslav Kure. (Closes: #331462)
+  * debian/po/sv.po: added, thanks to Daniel Nylander. (Closes: #332427)
+
+ -- Fabio Tranchitella <kobold at debian.org>  Sat, 15 Oct 2005 16:04:11 +0200
+
+zope-common (0.5.11) unstable; urgency=low
+
+  * debian/po/it.po: updated.
+  * debian/templates: ambiguous question in po-debconf templates, fixed as
+    suggested by Miroslav Kure. (Closes: #32829)
+
+ -- Fabio Tranchitella <kobold at debian.org>  Fri, 30 Sep 2005 14:56:21 +0200
+
+zope-common (0.5.10) unstable; urgency=low
+
+  * Upload to unstable.
+
+ -- Fabio Tranchitella <kobold at debian.org>  Wed,  7 Sep 2005 16:06:40 +0000
+
+zope-common (0.5.9) experimental; urgency=low
+
+  * debian/control: build-depends on lsb-release, and use it in debian/rules
+    to guess the distribution (Debian or Ubuntu).
+
+ -- Fabio Tranchitella <kobold at debian.org>  Mon, 29 Aug 2005 08:32:42 +0000
+
+zope-common (0.5.8) experimental; urgency=low
+
+  * Added dzhandle mapage.
+  * dzhandle (prerm-product): changed "denied to removal for mode manual"
+    error into warning.
+
+ -- Fabio Tranchitella <kobold at debian.org>  Sat, 20 Aug 2005 09:49:10 +0000
+
+zope-common (0.5.7) experimental; urgency=low
+
+  * debian/templates: added a question about HTTP port for instances.
+  * dzhandle (make-instance): support for --service-port argument.
+
+ -- Fabio Tranchitella <kobold at debian.org>  Thu, 18 Aug 2005 21:00:46 +0000
+
+zope-common (0.5.6) experimental; urgency=low
+
+  * dzhandle: handle Zope3 products installation and .zcml file link
+  * debian/po: added substitution variable for zope version.
+
+ -- Fabio Tranchitella <kobold at debian.org>  Wed, 17 Aug 2005 12:16:30 +0000
+
+zope-common (0.5.5) experimental; urgency=low
+
+  * dzhandle: fixed bug in "find_addon" method (dependencies problems, 
+    look first for directory name, then for product name).
+
+ -- Fabio Tranchitella <kobold at debian.org>  Sun, 14 Aug 2005 21:25:24 +0000
+
+zope-common (0.5.4) experimental; urgency=low
+
+  * dzhandle: look for zope3 instances in /var/lib/zope3.
+  * dzhandle (zopectl): enable custom users for Zope3 instances.
+  * dzhandle (zopectl): chdir to the instance home before running zopectl.
+
+ -- Fabio Tranchitella <kobold at debian.org>  Sat, 13 Aug 2005 15:50:26 +0000
+
+zope-common (0.5.3) experimental; urgency=low
+
+  [dzhandle]
+    * remove-instance and purge-instance implemented
+    * check dependencies while adding a product to an instance
+    * use ZopeVersions field to handle version-specific products
+
+ -- Fabio Tranchitella <kobold at debian.org>  Wed, 10 Aug 2005 18:16:24 +0000
+
+zope-common (0.5.2) experimental; urgency=low
+
+  * debian/apt.conf: don't try to run dzhandle if it doesn't exists 
+    (for example on package removal/purge) and return true, so apt 
+    won't complain.
+  * dzhandle: modified the help screen, "-Z" option doesn't exist,
+    it should be "-z"
+
+ -- Fabio Tranchitella <kobold at debian.org>  Thu, 14 Jul 2005 08:23:17 +0000
+
+zope-common (0.5.1) experimental; urgency=low
+
+  * First release for Debian. (Closes: #299023)
+  * debian/templates: added standard templates for admin user and password.
+  * debian/po/*: updated, thanks to all the translators.
+  * debian/postrm: do not remove zope user on package purge.
+  * debian/postinst: load debconf confmodule.
+  * debian/README.Debian: cosmetic changes (mainly s/Ubuntu/Debian/)
+  * debian/doc/zope-policy.sgml: cosmetic changes (mainly s/Ubuntu/Debian/).
+  * debian/apt.conf: removed that long (long) copyright notice.
+
+ -- Fabio Tranchitella <kobold at debian.org>  Mon, 27 Jun 2005 15:22:43 +0000
+
+zope-common (0.5) hoary; urgency=low
+
+  * Don't require /etc/dzhandle.conf.
+
+ -- Matthias Klose <doko at ubuntu.com>  Mon, 28 Feb 2005 10:31:22 +0100
+
+zope-common (0.4) hoary; urgency=low
+
+  * Add dzhandle option --lazy to ignore already installed products on
+    addition to an instance and non-existing products on removal from
+    on instance.
+
+ -- Matthias Klose <doko at ubuntu.com>  Sat, 26 Feb 2005 00:12:53 +0100
+
+zope-common (0.3) hoary; urgency=low
+
+  * Create /var/lib/zope/dzhandle on installation.
+  * Fix brown paper bug, when upgrading products in a manually managed
+    instance.
+  * Add logging.
+
+ -- Matthias Klose <doko at ubuntu.com>  Fri, 25 Feb 2005 17:03:35 +0100
+
+zope-common (0.2) hoary; urgency=low
+
+  * Fix add-product logic.
+
+ -- Matthias Klose <doko at ubuntu.com>  Wed, 23 Feb 2005 11:54:22 +0100
+
+zope-common (0.1) hoary; urgency=low
+
+  * Initial Release.
+
+ -- Matthias Klose <doko at ubuntu.com>  Sun, 13 Feb 2005 23:31:07 +0100
+

Added: zope-common/tags/0.5.31/debian/compat
===================================================================
--- zope-common/tags/0.5.31/debian/compat	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/compat	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1 @@
+5

Added: zope-common/tags/0.5.31/debian/config
===================================================================
--- zope-common/tags/0.5.31/debian/config	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/config	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,32 @@
+#!/bin/sh -e
+# -----------------------------------------------------------------------------
+# First coded by Luca - De Whiskey's - De Vitis <luca at debian.org>
+# -----------------------------------------------------------------------------
+# $Id: zope.config,v 1.5 2003/10/25 07:57:19 luca Exp $
+#
+#   Copyright (C) 2003 Luca - De Whiskey's - De Vitis <luca at debian.org>
+#
+#   This program is free software; you can redistribute it and/or modify
+#   it under the terms of the GNU General Public License as published by
+#   the Free Software Foundation; either version 2 of the License, or
+#   (at your option) any later version.
+#
+#   This program is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program; if not, write to the Free Software
+#   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+. /usr/share/debconf/confmodule
+
+db_version 2.0
+
+db_input "medium" "shared/zope/restart" || true
+db_go
+
+db_stop
+
+exit 0

Added: zope-common/tags/0.5.31/debian/control
===================================================================
--- zope-common/tags/0.5.31/debian/control	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/control	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,15 @@
+Source: zope-common
+Section: web
+Priority: optional
+Maintainer: Debian/Ubuntu Zope Team <pkg-zope-developers at lists.alioth.debian.org>
+Uploaders: Fabio Tranchitella <kobold at debian.org>, Andrea Mennucci <mennucc1 at debian.org>, martin f. krafft <madduck at debian.org>, Matthias Klose <doko at debian.org>, Jonas Meurer <mejo at debian.org>
+Build-Depends: debhelper (>= 5.0.0), po-debconf, lsb-release
+Build-Depends-Indep: docbook-to-man
+Standards-Version: 3.7.2
+XS-Vcs-Svn: svn://svn.debian.org/pkg-zope/zope-common/trunk
+
+Package: zope-common
+Architecture: all
+Depends: adduser, python (>= 2.4), ${misc:Depends}
+Description: common settings and scripts for zope installations
+ The package contains common settings and scripts for zope installations.

Added: zope-common/tags/0.5.31/debian/copyright
===================================================================
--- zope-common/tags/0.5.31/debian/copyright	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/copyright	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,18 @@
+This package has been put togheter by Matthias Klose <doko at debian.org>
+on Sun, 13 Feb 2005 23:31:07 +0100.
+
+Copyright: Debian Zope team <pkg-zope-developers at lists.alioth.debian.org>
+
+Upstream Authors: Matthias Klose <doko at debian.org>
+                  martin f. krafft <madduck at debian.org>
+                  Fabio Tranchitella <kobold at debian.org>
+
+License:
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License version 2 as
+  published by the Free Software Foundation.
+
+  On Debian GNU/Linux systems, the complete text of the GNU General
+  Public License can be found in `/usr/share/common-licenses/GPL'.
+

Added: zope-common/tags/0.5.31/debian/dirs
===================================================================
--- zope-common/tags/0.5.31/debian/dirs	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/dirs	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,4 @@
+/var/lib/zope
+/etc/apt/apt.conf.d
+/etc/bash_completion.d
+/usr/bin

Added: zope-common/tags/0.5.31/debian/doc/ZPL-2.0
===================================================================
--- zope-common/tags/0.5.31/debian/doc/ZPL-2.0	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/doc/ZPL-2.0	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,59 @@
+Zope Public License (ZPL) Version 2.0
+-----------------------------------------------
+
+This software is Copyright (c) Zope Corporation (tm) and
+Contributors. All rights reserved.
+
+This license has been certified as open source. It has also
+been designated as GPL compatible by the Free Software
+Foundation (FSF).
+
+Redistribution and use in source and binary forms, with or
+without modification, are permitted provided that the
+following conditions are met:
+
+1. Redistributions in source code must retain the above
+   copyright notice, this list of conditions, and the following
+   disclaimer.
+
+2. Redistributions in binary form must reproduce the above
+   copyright notice, this list of conditions, and the following
+   disclaimer in the documentation and/or other materials
+   provided with the distribution.
+
+3. The name Zope Corporation (tm) must not be used to
+   endorse or promote products derived from this software
+   without prior written permission from Zope Corporation.
+
+4. The right to distribute this software or to use it for
+   any purpose does not give you the right to use Servicemarks
+   (sm) or Trademarks (tm) of Zope Corporation. Use of them is
+   covered in a separate agreement (see
+   http://www.zope.com/Marks).
+
+5. If any files are modified, you must cause the modified
+   files to carry prominent notices stating that you changed
+   the files and the date of any change.
+
+Disclaimer
+
+  THIS SOFTWARE IS PROVIDED BY ZOPE CORPORATION ``AS IS''
+  AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+  NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+  AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
+  NO EVENT SHALL ZOPE CORPORATION OR ITS CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+
+This software consists of contributions made by Zope
+Corporation and many individuals on behalf of Zope
+Corporation.  Specific attributions are listed in the
+accompanying credits file.

Added: zope-common/tags/0.5.31/debian/doc/zope-policy.sgml
===================================================================
--- zope-common/tags/0.5.31/debian/doc/zope-policy.sgml	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/doc/zope-policy.sgml	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,416 @@
+<!DOCTYPE debiandoc SYSTEM>
+
+<debiandoc><book>
+    <titlepag>
+      <title>Debian Zope Policy</title>
+      <author>
+	<name>Matthias Klose</name>
+	<email>doko at ubuntu.com</email>
+      </author>
+      <author>
+	<name>Luca - De Whiskey's - De Vitis</name>
+	<email>luca at debian.org</email>
+      </author>
+      <version>version 0.2</version>
+      <abstract>
+            This document aims to provide a set of rules for the packaging of
+            <em>Zope application server</em> and its components within the Debian
+            distribution. It's dervived from the Debian Zope Policy version 0.1.2,
+            written by Luca - De Whiskey's - De Vitis (luca at debian.org).
+        </abstract>
+      <copyright>
+	<copyrightsummary>
+                Copyright &copy; 2003 Software in the Public Interest
+            </copyrightsummary>
+	<p>
+                This manual is free software; you can redistribute it and/or
+                modify it under the terms of the GNU General Public License
+                as published by the Free Software Foundation; either version
+                2 of the License, or (at your option) any later version.
+            </p>
+	<p>
+                This is distributed in the hope that it will be useful, but
+                WITHOUT ANY WARRANTY; without even the implied warranty of
+                MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
+                the GNU General Public License for more details.
+            </p>
+	<p>
+                A copy of the GNU General Public License is available as
+                <file>/usr/share/common-licences/GPL</file> in the Debian GNU/Linux
+                distribution or on the World Wide Web at
+                <url id="http://www.gnu.org/copyleft/gpl.html" name="The GNU Public Licence">.
+            </p>
+	<p>
+                You can also obtain it by writing to the
+                Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+                Boston, MA 02111-1307, USA.
+            </p>
+      </copyright>
+    </titlepag>
+    <toc detail="sect1">
+    <chapt id="naming_conventions">
+      <heading>Nameing convention</heading>
+      <p>
+            In the following sections, will use these convention:
+            <taglist>
+	  <tag><em>Zope</em></tag>
+	  <item>
+	    <p>
+                        Will refer to the Zope application server as described
+                        by <httpsite>http://www.zope.org</httpsite>.
+                    </p>
+	  </item>
+                <tag><em>Zope Package</em></tag>
+                <item>
+                    <p>
+                        Will refer to any software that extends the
+                        capabilities of <em>Zope</em>, like <em>ZEO</em>
+                        or <em>ZODB</em>.
+                    </p>
+                </item>
+                <tag><em>Zope Product</em></tag>
+                <item>
+                    <p>
+                        Will refer to any software that extends the range
+                        of available objects for <em>Zope</em>, like
+                        <em>ParsedXML</em>.
+                    </p>
+                </item>
+                <tag><package>zope</package></tag>
+                <item>
+                    <p>
+                        Will refer to the Debian package for <em>Zope</em>.
+                    </p>
+                </item>
+                <tag><package>zope-<var>foo</var></package></tag>
+                <item>
+                    <p>
+                        Will refer to the Debian package for a generic
+                        <tt>foo</tt> <em>Zope Package</em> or <em>Zope
+                        Product</em>.
+                    </p>
+                </item>
+                <tag><em>ZPL</em></tag>
+                <item>
+                    <p>
+                        Will refer to <strong>Zope Public License</strong>:
+                        occasionally it may be followed by a version number
+                        <var>V</var> (i.e. <em>ZPL-<var>V</var></em>).
+                    </p>
+                </item>
+                <tag><em>FHS</em></tag>
+                <item>
+                    <p>
+                        Will refer to <strong>Filesystem Hierarchy
+                        Standard</strong> as documented in the
+                        <url id="file:///usr/share/doc/debian-policy/fhs" name="Debian Policy">
+                    </p>
+                </item>
+            </taglist>
+        </p>
+    </chapt>
+    <chapt id="packages_names">
+        <heading>Package names</heading>
+        <sect id="main_package">
+            <heading>Main package</heading>
+            <p>
+                <package>zope</package> package shall provide a complete,
+                stand-alone distribution of <em>Zope</em>, suitable for
+                <em>deployment</em> of <em>Zope</em> components and
+                applications. <package>zope</package> will also include any
+                <em>ZPL-<var>V</var></em> to be of use for reference by related
+                components or applications
+                <footnote>
+                    <p>
+                        Since we may not ask for the inclusion of any
+                        <em>ZPL-<var>V</var></em> under
+                        <prgn>common-licenses</prgn>, we may use
+                        <file>/usr/share/doc/zope</file> instead.
+                    </p>
+                </footnote>.
+            </p>
+        </sect>
+        <sect id="main_dev_package">
+            <heading>Main development package</heading>
+            <p>
+                The package named <package>zope-dev</package> will provide the
+                complete set of development files originally included in
+                <em>Zope</em> and useful tools to help building Debian package
+                for <em>Zope</em> components.
+            </p>
+        </sect>
+        <sect id="products_and_packages">
+            <heading><em>Zope Packages</em> and <em>Zope Products</em></heading>
+            <p>
+                Every Debian source package that intends to provide either
+                a <em>Zope Package</em> or <em>Zope Product</em> named
+                <tt>foo</tt>, should build the
+                <package>zope-<var>foo</var></package> Debian package.
+            </p>
+        </sect>
+        <sect id="other_packages">
+            <heading>Other Debian packages</heading>
+            <p>
+                Debian packages for softwares simply related to <em>Zope</em>
+                may use different name convention (i.e.
+                <url id="http://packages.debian.org/zopeedit" name="zopeedit">).
+            </p>
+        </sect>
+    </chapt>
+    <chapt id="zope-foo">
+        <heading><package>zope-<var>foo</var></package> package</heading>
+        <sect id="zope-foo_paths">
+            <heading>Paths</heading>
+            <p>
+                Any <package>zope-<var>foo</var></package> package should use the
+                following paths or file guidelines:
+                <taglist>
+                    <tag><file>/usr/lib/zope</file></tag>
+                    <item>
+                        <p>
+                            This is the home for <em>Zope</em> software. Any
+                            <em>Zope Package</em> or <em>Zope Product</em>,
+                            must be installed under an appropriate
+                            subdirectory in order to work.
+                        </p>
+                    </item>
+                    <tag><file>/usr/lib/zope/import</file></tag>
+                    <item>
+                        <p>
+                            Import files (i.e. those files that usually have
+                            <file>.zexp</file> extension) must installed under
+                            this directory. Administrators may provide
+                            symbolic links to desired files on a per-instance
+                            base.
+                        </p>
+                    </item>
+                    <tag><file>/usr/lib/zope/Extensions</file></tag>
+                    <item>
+                        <p>
+                            Python extensin scripts must be installed under
+                            this directory. Administrators may provide
+                            symbolic links to desired files on a per-instance
+                            base.
+                        </p>
+                    </item>
+                    <tag><file>tests</file> directory</tag>
+                    <item>
+                        <p>
+                            Debian package
+                            <package>zope-<var>foo</var></package> may not
+                            provide any <file>tests</file> directory
+                            <footnote>
+                                <p>
+                                    See <url id="file:///usr/share/doc/zope/UNITTEST.txt.gz" name="UNITTEST.txt.gz">.
+                                </p>
+                            </footnote>
+                            <footnote>
+                                <p>
+                                    There are many ways we can handle this:
+                                    <list>
+                                        <item><p>
+                                            We may simply include
+                                            <file>tests/</file> directory in
+                                            <package>zope-<var>foo</var></package>
+                                            package.
+                                        </p></item>
+                                        <item><p>
+                                            We may build a
+                                            <package>zope-<var>foo</var>-tests</package>
+                                            that provides the
+                                            <file>tests/</file> directory only.
+                                        </p></item>
+                                        <item><p>
+                                            We may build a
+                                            <package>zope-<var>foo</var>-debug</package>
+                                            that <tt>Provides</tt>,
+                                            <tt>Conflicts</tt> and
+                                            <tt>Replace</tt>
+                                            <package>zope-<var>foo</var></package>
+                                        </p></item>
+                                    </list>
+                                </p>
+                            </footnote>.
+                        </p>
+                    </item>
+                </taglist>
+            </p>
+        </sect>
+        <sect id="zope-foo_copyright">
+            <heading>Notable files</heading>
+            <p>
+                <taglist>
+                    <tag><file>/usr/share/doc/zope-<var>foo</var>/copyright</file></tag>
+                    <item>
+                        <p>
+                            Debian package
+                            <package>zope-<var>foo</var></package> may not
+                            include any <em>ZPL-<var>V</var></em>; it may
+                            simply refer to the license provided by the
+                            <package>zope</package> package in the
+                            <file>/usr/share/doc/zope/ZPL-<var>V</var></file>
+                            file
+                            <footnote>
+                                <p>
+                                    This would surely decrease the disk space used by the
+                                    installation of several Debian packages of Zope
+                                    Components. 
+                                </p>
+                            </footnote>.
+                            The <file>copyright</file> file in source Debian
+                            package may look like the following
+                            <footnote>
+                                <p>
+                                    I would replace this with an example file
+                                    as soon as possible.
+                                </p>
+                            </footnote>:
+                            <example>
+This is the Debian package of Zope <var>foo</var> component.
+
+This package was put together by <var>Debian Developer</var> <var>&lt;account at debian.org&gt;</var>,
+from sources obtained from:
+
+  <var>protocol</var>://<var>site</var>/<var>path</var>
+
+Author: <var>Upstream Author(s)</var> <var>&lt;mail at upstream.address&gt;</var>
+
+Copyright:
+
+This software is distributed under the term of the Zope Public License version <var>V</var>.
+Please, refer to /usr/share/doc/zope/ZPL-<var>V</var>
+                            </example>
+                        </p>
+                    </item>
+                </taglist>
+            </p>
+        </sect>
+        <sect id="configuring_zope-foo">
+            <heading>Configuration and pre-configuration</heading>
+            <p>
+                As you should know, <em>Zope</em> need to be restarted to let each new
+                component to be used, but <package>zope-<var>foo</var></package>
+                should not ask any question to administrators about this
+                issue
+                <footnote>
+                    <p>
+                        For reference, read the reports on Bug
+                        <url id="http://bugs.debian.org/134516" name="#134516"> and
+                        <url id="http://bugs.debian.org/167033" name="#167033">, or the
+                        <url id="http://lists.debian.org/debian-python/2002/debian-python-200211/msg00019.html" name="[zope] New features of the zope package 2.5.1-2.5">
+                        thread.
+                    </p>
+                </footnote>.
+                During the Debian package pre-configuration/configuration phase,
+                <package>zope</package> package will prompt the
+                <tt>shared/zope/restart</tt> shared Debconf question
+                <footnote>
+                    <p>
+                        See <url id="file:///usr/share/doc/zope-dev/examples/templates" name="Zope tempalte file">,
+                        and <manref name="debconf-devel" section="7">.
+                    </p>
+                </footnote>:
+                while configuring, <package>zope-<var>foo</var></package>
+                should use the answer to <tt>shared/zope/restart</tt> to
+                decide how to configure the package. Possible reply are
+                <footnote>
+                    <p>
+                        See <url id="file:///usr/share/doc/zope-dev/examples/postinst" name="Zope postinst file">,
+                    </p>
+                </footnote>:
+                <taglist>
+                    <tag>configuring</tag>
+                    <item>
+                        <p>
+                            <em>Zope</em> should be restarted in the
+                            configuration phase of the package installation.
+                        </p>
+                    </item>
+                    <tag>end</tag>
+                    <item>
+                        <p>
+                            <em>Zope</em> should not be restarted in the
+                            configuration phase. The <prgn>postinst</prgn>
+                            maintainer script should instead touch the
+                            <file>/var/run/zope/restart</file> file: this will
+                            trigger a test in
+                            <file>/etc/apt/apt.conf.d/90zope</file> that will
+                            restart <em>Zope</em> at the end of the whole
+                            installation or upgrade process.
+                        </p>
+                    </item>
+                    <tag>manually</tag>
+                    <item>
+                        <p>
+                            <em>Zope</em> should not be restarted in any case:
+                            the system administrator will handle it.
+                        </p>
+                    </item>
+                </taglist>
+            </p>
+        </sect>
+    </chapt>
+    <chapt id="multiple_instance_guideline">
+        <heading>Multiple Instances Guidelines</heading>
+        <p>
+            <em>Zope</em> package must comply to the following rules once installed:
+            <taglist>
+                <tag><tt>ZOPE_HOME</tt> and <tt>SOFTWARE_HOME</tt> path</tag>
+                <item>
+                    <p>
+                        Python is an interpreted language and either
+                        source or byte-compiled file are architecture
+                        independent, so they should be placed under
+                        <file>/usr/share</file> as for <em>FHS</em>. Since
+                        that's not possible<footnote>
+                        see Bug
+                        <url id="http://bugs.debian.org/134762" name="#134762"> and
+                        Python's forum <url id="http://python.org/sf/588756" name="588756">
+                        </footnote><tt>ZOPE_HOME</tt> and
+                        <tt>SOFTWARE_HOME</tt> must default to
+                        <file>/usr/lib/zope/lib/python</file><footnote>
+                        <tt>ZOPE_HOME</tt> and <tt>SOFTWARE_HOME</tt> are
+                        going to migrate to Python's site-packages path.
+                        </footnote>.
+                    </p>
+                </item>
+                <tag><tt>INSTANCE_HOME</tt> path</tag>
+                <item>
+                    <p>
+                        <em>Zope</em> support the concurrent running of
+                        independent instances. Each instance uses a set of
+                        files that may be atered multiple times during its
+                        life time, so <tt>INSTANCE_HOME</tt> path should be
+                        relative to <file>/var/lib/zope</file>. Suggested
+                        value is
+                        <file>/var/lib/zope/instance/<var>instance-name</var></file>.
+                    </p>
+                </item>
+                <tag><tt>CLIENT_HOME</tt> path</tag>
+                <item>
+                    <p>
+                        <tt>CLIENT_HOME</tt> must be directory relative to
+                        <tt>INSTANCE_HOME</tt>. Suggested path is
+                        <file>INSTANCE_HOME/var</file>.
+                    </p>
+                </item>
+                <tag>Log files</tag>
+                <item>
+                    <p>
+                        Any log file should be placed under
+                        <file>/var/log/zope/<var>instance-name</var></file>
+                        directory.
+                    </p>
+                </item>
+                <tag>Pid files</tag>
+                <item>
+                    <p>
+                        Any pid file should be placed under
+                        <file>/var/run/zope/<var>instance-name</var></file>
+                        directory.
+                    </p>
+                </item>
+            </taglist>
+        </p>
+    </chapt>
+</book></debiandoc>

Added: zope-common/tags/0.5.31/debian/po/POTFILES.in
===================================================================
--- zope-common/tags/0.5.31/debian/po/POTFILES.in	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/po/POTFILES.in	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1 @@
+[type: gettext/rfc822deb] templates

Added: zope-common/tags/0.5.31/debian/po/cs.po
===================================================================
--- zope-common/tags/0.5.31/debian/po/cs.po	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/po/cs.po	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,255 @@
+#
+#    Translators, if you are not familiar with the PO format, gettext
+#    documentation is worth reading, especially sections dedicated to
+#    this format, e.g. by running:
+#         info -n '(gettext)PO Files'
+#         info -n '(gettext)Header Entry'
+#
+#    Some information specific to po-debconf are available at
+#            /usr/share/doc/po-debconf/README-trans
+#         or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+#    Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: zope-common\n"
+"Report-Msgid-Bugs-To: pkg-zope-developers at lists.alioth.debian.org\n"
+"POT-Creation-Date: 2006-11-02 15:47+0100\n"
+"PO-Revision-Date: 2006-11-02 21:36+0100\n"
+"Last-Translator: Miroslav Kure <kurem at debian.cz>\n"
+"Language-Team: Czech <debian-l10n-czech at lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#: ../templates:1001
+msgid "configuring, end, manually"
+msgstr "během konfigurace, na konci, ručně"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid "Automatic restart of Zope instances:"
+msgstr "Automatický restart instancí Zope:"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+"Zope has an extensible, modular structure that allows you to easily add "
+"extra components (products) or features. Each product or feature can usually "
+"be found in packages whose name starts with a 'zope-' prefix. Unfortunately, "
+"each Zope instance needs to be restarted to use any new add-on. Here you can "
+"choose the default behaviour of Zope instances in any installed Zope version "
+"when Zope needs to be restarted. Each instance, however, is allowed to "
+"overwrite this setting:"
+msgstr ""
+"Zope má modulární, rozšiřitelnou strukturu, díky které můžete jednoduše "
+"přidávat další komponenty (produkty) nebo vlastnosti. Tyto produkty většinou "
+"naleznete v balíčcích, jejichž název začíná na 'zope-'. Bohužel, aby mohlo "
+"Zope využívat nový produkt, musí se restartovat. Nyní si můžete vybrat, jak "
+"se mají instalované instance Zope chovat v případech, kdy je potřeba je "
+"restartovat. Každá instance má možnost toto chování přepsat svým nastavením:"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+" * configuring: restart instances after each product configuration.\n"
+" * end:         restart instances only once at the end of the whole\n"
+"                installation/upgrading process.\n"
+" * manually:    no restart, it is your responsibility to restart\n"
+"                Zope instances."
+msgstr ""
+" * během konfigurace: instance se restartují při konfiguraci\n"
+"                      každého produktu.\n"
+" * na konci:          instance se restartují pouze na konci celého\n"
+"                      instalačního/aktualizačního procesu.\n"
+" * ručně:             bez restartu; restartování instancí Zope je\n"
+"                      vaše zodpovědnost."
+
+#. Type: select
+#. Choices
+#: ../templates:2001
+msgid "abort, remove and continue"
+msgstr "přerušit, odstranit a pokračovat"
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid "Found an old/incomplete zope instance '${instance}':"
+msgstr "Nalezena starší/nekompletní instance zope '${instance}':"
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid ""
+"Found an old/incomplete ${instance} instance in /var/lib/zope${zver}/"
+"instance/${instance}. No data file Data.fs was found for the instance, "
+"meaning that the installation was not completed for some reason, or the "
+"installation was incompletely removed. Aborting the installation will allow "
+"you to inspect the state of the instance, continuing will remove /var/lib/"
+"zope${zver}/instance/${instance} and reinstall the ${instance}. Existing "
+"logfiles in /var/log/zope${zver}/${instance} and configuration files in /etc/"
+"zope${zver}/${instance} are preserved."
+msgstr ""
+"Ve /var/lib/zope${zver} byla nalezena starší/nekompletní instance "
+"${instance}. Pro tuto instanci nebyl nalezen datový soubor Data.fs, což "
+"znamená, že instalace nebyla z nějakého důvodu dokončena, nebo nebyla úplně "
+"odstraněna. Přerušení instalace vám umožní prozkoumat stav instance, "
+"pokračování smaže /var/lib/zope${zver}/instance/${instance} a poté "
+"přeinstaluje ${instance}. Stávající logovací soubory ve /var/log/zope${zver}/"
+"${instance} a konfigurační soubory v /etc/zope${zver}/${instance} budou "
+"zachovány."
+
+#. Type: boolean
+#. Description
+#: ../templates:3001
+msgid "Keep data for ${instance} on package purge?"
+msgstr "Ponechat data ${instance} při vyčištění balíku?"
+
+#. Type: boolean
+#. Description
+#: ../templates:3001
+msgid ""
+"Purging the data files of a zope instance on package purge results in loss "
+"of all data of the zope instance. The data files for this instance are "
+"stored in /var/lib/zope${zver}/instance/${instance}."
+msgstr ""
+"Smazání datových souborů instance Zope při vyčištění balíku ze systému "
+"znamená, že ztratíte všechna data dané instance Zope. Datové soubory této "
+"instance jsou uloženy ve /var/lib/zope${zver}/instance/${instance}."
+
+#. Type: string
+#. Description
+#: ../templates:4001
+msgid "Admin user for zope instance '${instance}':"
+msgstr "Administrátor pro Zope instanci '${instance}':"
+
+#. Type: string
+#. Description
+#: ../templates:4001
+msgid ""
+"Please enter an admin user for the zope instance '${instance}'. A valid user "
+"name starts with a letter, followed by letters and digits."
+msgstr ""
+"Zadejte prosím jméno administrátora pro zope instanci '${instance}'. Platné "
+"uživatelské jméno začíná písmenem, za kterým mohou následovat písmena a "
+"číslice."
+
+#. Type: string
+#. Description
+#. Type: password
+#. Description
+#. Type: password
+#. Description
+#: ../templates:4001 ../templates:5001 ../templates:6001
+msgid ""
+"NOTE: Once the instance has been created, the parameter entered here isn't "
+"relevant anymore.  To change the admin user (and password) later on, call:"
+msgstr ""
+"POZNÁMKA: Po vytvoření instance již zde zadaný parametr nebude potřeba. Pro "
+"pozdější změnu administrátora (a hesla) můžete spustit příkaz:"
+
+#. Type: string
+#. Description
+#. Type: password
+#. Description
+#. Type: password
+#. Description
+#: ../templates:4001 ../templates:5001 ../templates:6001
+msgid ""
+"/var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser <user> "
+"<password>"
+msgstr ""
+"/var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser <uživatel> "
+"<heslo>"
+
+#. Type: password
+#. Description
+#: ../templates:5001
+msgid "Password for the admin user:"
+msgstr "Heslo pro administrátora:"
+
+#. Type: password
+#. Description
+#: ../templates:5001
+msgid ""
+"Please enter a password for the admin user. The password must not be empty. "
+"The password is deleted from the configuration database, once the instance "
+"is sucessfully created and cannot be recoverd."
+msgstr ""
+"Zadejte prosím heslo pro administrátora. Heslo nesmí být prázdné. Po úspěšné "
+"instalaci bude heslo z konfigurační databáze odstraněno a nebude možno jej "
+"obnovit."
+
+#. Type: password
+#. Description
+#: ../templates:6001
+msgid "Same password:"
+msgstr "Stejné heslo:"
+
+#. Type: password
+#. Description
+#: ../templates:6001
+msgid "Please enter again the password for the admin user."
+msgstr "Ještě jednou prosím zadejte heslo pro administrátora."
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid "HTTP port for this instance:"
+msgstr "HTTP port této instance:"
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid "Please enter the HTTP port for the instance ${instance}."
+msgstr "Zadejte prosím HTTP port pro instanci ${instance}."
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid ""
+"Other services (e.g. FTP, WebDAV, debug) will be disabled by default. You "
+"can enable them editing /etc/zope${zver}/${instance}/zope.conf."
+msgstr ""
+"Ostatní služby (jako FTP, WebDAV, debug) budou implicitně zakázány. Povolit "
+"je můžete úpravou souboru /etc/zope${zver}/${instance}/zope.conf."
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid "Automatically generated user and password for your instance"
+msgstr "Automaticky vygenerovaný uživatel a heslo ve vaší instanci"
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid ""
+"You haven't provided a user and a password for your instance, so these  "
+"values have been automatically generated."
+msgstr ""
+"Pro vaši instanci jste nezadali uživatele ani heslo, tudíž byly tyto hodnoty "
+"vygenerovány automaticky."
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid "Use these values to log into the Zope${zver} instance ${instance}:"
+msgstr ""
+"Pro přihlášení do instance ${instance} Zope${zver} použijte následující "
+"údaje:"
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid ""
+" * User     : ${user}\n"
+" * Password : ${password}"
+msgstr ""
+" * Uživatel : ${user}\n"
+" * Heslo    : ${password}"

Added: zope-common/tags/0.5.31/debian/po/da.po
===================================================================
--- zope-common/tags/0.5.31/debian/po/da.po	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/po/da.po	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,258 @@
+# translation of zope_2.6.4-1_templates.po to Danish
+#
+# Claus Hindsgaul <claus_h at image.dk>, 2004, 2005.
+# Claus Hindsgaul <claus.hindsgaul at gmail.com>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: zope_2.6.4-1_templates\n"
+"Report-Msgid-Bugs-To: pkg-zope-developers at lists.alioth.debian.org\n"
+"POT-Creation-Date: 2006-11-02 15:47+0100\n"
+"PO-Revision-Date: 2006-05-11 16:29+0200\n"
+"Last-Translator: Claus Hindsgaul <claus.hindsgaul at gmail.com>\n"
+"Language-Team: Danish <dansk at klid.dk>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.2\n"
+"Plural-Forms:  nplurals=2; plural=(n != 1);\n"
+
+#. Type: select
+#. Choices
+#: ../templates:1001
+msgid "configuring, end, manually"
+msgstr "opsætning, slut, manuelt"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid "Automatic restart of Zope instances:"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+"Zope has an extensible, modular structure that allows you to easily add "
+"extra components (products) or features. Each product or feature can usually "
+"be found in packages whose name starts with a 'zope-' prefix. Unfortunately, "
+"each Zope instance needs to be restarted to use any new add-on. Here you can "
+"choose the default behaviour of Zope instances in any installed Zope version "
+"when Zope needs to be restarted. Each instance, however, is allowed to "
+"overwrite this setting:"
+msgstr ""
+"Zope har en modulær struktur, der kan udvides og giver dig let adgang til at "
+"tilføje ekstra moduler (produkter) eller funktioner. Hvert produkt eller "
+"funktion findes normalt i pakker, hvis navn starter med 'zope-'. Desværre "
+"skal alle Zope-forekomster genstartes for at bruge nye tilføjelser. Her kan "
+"du vælge en standardmåde at genstarte forekomster af Zope-versioner på, når "
+"Zope skal genstartes. Hver forekomst kan dog omgå denne indstilling:"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+" * configuring: restart instances after each product configuration.\n"
+" * end:         restart instances only once at the end of the whole\n"
+"                installation/upgrading process.\n"
+" * manually:    no restart, it is your responsibility to restart\n"
+"                Zope instances."
+msgstr ""
+" * opsætning: genstart alle forekomster efter hver produkt-opsætning.\n"
+" * slut:      genstart kun en enkelt gang efter hele installations- \n"
+"              eller opgraderingsprocessen.\n"
+" * manuelt:   ingen genstart. Det er dit ansvar at genstarte "
+"Zope-               forekomster."
+
+#. Type: select
+#. Choices
+#: ../templates:2001
+msgid "abort, remove and continue"
+msgstr "afbryd, fjern og fortsæt"
+
+#. Type: select
+#. Description
+#: ../templates:2002
+#, fuzzy
+msgid "Found an old/incomplete zope instance '${instance}':"
+msgstr "Fandt gamle/ukomplette zope-forekomst '${instance}'"
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid ""
+"Found an old/incomplete ${instance} instance in /var/lib/zope${zver}/"
+"instance/${instance}. No data file Data.fs was found for the instance, "
+"meaning that the installation was not completed for some reason, or the "
+"installation was incompletely removed. Aborting the installation will allow "
+"you to inspect the state of the instance, continuing will remove /var/lib/"
+"zope${zver}/instance/${instance} and reinstall the ${instance}. Existing "
+"logfiles in /var/log/zope${zver}/${instance} and configuration files in /etc/"
+"zope${zver}/${instance} are preserved."
+msgstr ""
+"Fandt en gammel/ukomplet ${instance}-forekomst i /var/lib/zope${zver}/"
+"instance/${instance}. Datafilen Data.fs blev ikke fundet for denne "
+"forekomst, hvilket betyder at installationen af en eller anden grund ikke er "
+"blevet afsluttet, eller at installationen ikke er blevet fjernet helt. Hvis "
+"du afbryder installationen, kan du undersøge forekomstens tilstand, hvis du "
+"fortsætter, fjernes og geninstalleres /var/lib/zope${zver}/instance/"
+"${instance}. De eksisterende logfiler i /var/log/zope${zver}/${instance} og "
+"opsætningsfiler i /etc/zope${zver}/${instance} bevares."
+
+#. Type: boolean
+#. Description
+#: ../templates:3001
+#, fuzzy
+msgid "Keep data for ${instance} on package purge?"
+msgstr "Behold data for ${instance} når pakken udrenses?"
+
+#. Type: boolean
+#. Description
+#: ../templates:3001
+#, fuzzy
+msgid ""
+"Purging the data files of a zope instance on package purge results in loss "
+"of all data of the zope instance. The data files for this instance are "
+"stored in /var/lib/zope${zver}/instance/${instance}."
+msgstr ""
+"Hvis du fjerne en zope-forekomsts datafiler, når debianpakken udrenses, "
+"mister du alle forekomstens data. Skal datafilerne i /var/lib/zope${zver}/"
+"instance/${instance} bevares, når debianpakken fjernes og udrenses?"
+
+#. Type: string
+#. Description
+#: ../templates:4001
+#, fuzzy
+msgid "Admin user for zope instance '${instance}':"
+msgstr "Angiv administartor-bruger for zope-forekomsten '${instance}':"
+
+#. Type: string
+#. Description
+#: ../templates:4001
+msgid ""
+"Please enter an admin user for the zope instance '${instance}'. A valid user "
+"name starts with a letter, followed by letters and digits."
+msgstr ""
+"Angiv adminstratorbruger for zope-forekomsten '${instance}'. Gyldige "
+"brugernavne starter med et bogstav efterfulgt af bogstaver og tal."
+
+#. Type: string
+#. Description
+#. Type: password
+#. Description
+#. Type: password
+#. Description
+#: ../templates:4001 ../templates:5001 ../templates:6001
+msgid ""
+"NOTE: Once the instance has been created, the parameter entered here isn't "
+"relevant anymore.  To change the admin user (and password) later on, call:"
+msgstr ""
+"BEMÆRK: Når en forekomst er oprettet, er de parametre, der angives her, ikke "
+"længere relevante. For at ændre administratorbruger (og adgangskode) senere, "
+"skal du udføre:"
+
+#. Type: string
+#. Description
+#. Type: password
+#. Description
+#. Type: password
+#. Description
+#: ../templates:4001 ../templates:5001 ../templates:6001
+msgid ""
+"/var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser <user> "
+"<password>"
+msgstr ""
+"/var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser <bruger> "
+"<adgangskode>"
+
+#. Type: password
+#. Description
+#: ../templates:5001
+#, fuzzy
+msgid "Password for the admin user:"
+msgstr "Angiv administratorbrugerens adgangskode:"
+
+#. Type: password
+#. Description
+#: ../templates:5001
+msgid ""
+"Please enter a password for the admin user. The password must not be empty. "
+"The password is deleted from the configuration database, once the instance "
+"is sucessfully created and cannot be recoverd."
+msgstr ""
+"Angiv en adgangskode for administratorbrugeren. Adgangskoden må ikke være "
+"tom. Adgangskoden vil uigenkaldeligt blive slettet fra opsætningsdatabasen, "
+"så snart forekomsten er oprettet."
+
+#. Type: password
+#. Description
+#: ../templates:6001
+msgid "Same password:"
+msgstr ""
+
+#. Type: password
+#. Description
+#: ../templates:6001
+msgid "Please enter again the password for the admin user."
+msgstr "Angiv administratorbrugerens adgangskode igen."
+
+#. Type: string
+#. Description
+#: ../templates:7001
+#, fuzzy
+msgid "HTTP port for this instance:"
+msgstr "Angiv HTTP-port for denne instans:"
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid "Please enter the HTTP port for the instance ${instance}."
+msgstr "Angiv HTTP-porten for instansen ${instance}."
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid ""
+"Other services (e.g. FTP, WebDAV, debug) will be disabled by default. You "
+"can enable them editing /etc/zope${zver}/${instance}/zope.conf."
+msgstr ""
+"Andre services (f.eks. FTP, WebDAV, debug) bliver som udgangspunkt slået "
+"fra. Du kan aktivere dem ved at redigere /etc/zope${zver}/${instance}/zope."
+"conf."
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid "Automatically generated user and password for your instance"
+msgstr "Automatisk genereret bruger og adgangskode for din instans"
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid ""
+"You haven't provided a user and a password for your instance, so these  "
+"values have been automatically generated."
+msgstr ""
+"Du har ikke angivet en bruger og en adgangskode for din instans, så disse "
+"værdier er blevet genereret automatisk."
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid "Use these values to log into the Zope${zver} instance ${instance}:"
+msgstr "Benyt disse værdier til at logge på Zope${zver}-instansen ${instance}:"
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid ""
+" * User     : ${user}\n"
+" * Password : ${password}"
+msgstr ""
+" * Bruger      : ${user}\n"
+" * Adgangskode : ${password}"
+
+#~ msgid "When will Zope instances be restarted?"
+#~ msgstr "Hvornår skal Zope-forekomster genstartes?"
+
+#~ msgid "Enter again the same password:"
+#~ msgstr "Angiv samme adgangskode igen:"

Added: zope-common/tags/0.5.31/debian/po/de.po
===================================================================
--- zope-common/tags/0.5.31/debian/po/de.po	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/po/de.po	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,269 @@
+# translation of zope-common_0.5.26_de.po to German
+#
+#    Translators, if you are not familiar with the PO format, gettext
+#    documentation is worth reading, especially sections dedicated to
+#    this format, e.g. by running:
+#         info -n '(gettext)PO Files'
+#         info -n '(gettext)Header Entry'
+#    Some information specific to po-debconf are available at
+#            /usr/share/doc/po-debconf/README-trans
+#         or http://www.debian.org/intl/l10n/po-debconf/README-trans#
+#    Developers do not need to manually edit POT or PO files.
+#
+# Erik Schanze <eriks at debian.org>, 2004-2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: zope-common_0.5.26_de\n"
+"Report-Msgid-Bugs-To: pkg-zope-developers at lists.alioth.debian.org\n"
+"POT-Creation-Date: 2006-11-02 15:47+0100\n"
+"PO-Revision-Date: 2006-11-04 21:46+0100\n"
+"Last-Translator: Erik Schanze <eriks at debian.org>\n"
+"Language-Team: German <debian-l10n-german at lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms:  nplurals=2; plural=(n != 1);\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Type: select
+#. Choices
+#: ../templates:1001
+msgid "configuring, end, manually"
+msgstr "beim Einrichten, am Ende, manuell"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid "Automatic restart of Zope instances:"
+msgstr "Automatischer Neustart von Zope-Instanzen:"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+"Zope has an extensible, modular structure that allows you to easily add "
+"extra components (products) or features. Each product or feature can usually "
+"be found in packages whose name starts with a 'zope-' prefix. Unfortunately, "
+"each Zope instance needs to be restarted to use any new add-on. Here you can "
+"choose the default behaviour of Zope instances in any installed Zope version "
+"when Zope needs to be restarted. Each instance, however, is allowed to "
+"overwrite this setting:"
+msgstr ""
+"Zope hat einen erweiterbaren, modularen Aufbau, der es Ihnen "
+"ermöglicht, auf einfache Weise zusätzliche Teile (Produkte) "
+"oder Funktionen hinzuzufügen. Jedes Produkt oder jede Funktion "
+"befindet sich normalerweise in Paketen, deren Name mit »zope-« "
+"beginnt. Leider muss jede Zope-Instanz neu gestartet werden, "
+"um die neuen Erweiterungen benutzen zu können. Hier können Sie "
+"vorgeben, wie sich Zope-Instanzen von jeder installierten "
+"Zope-Version verhalten sollen, wenn Zope neu gestartet werden muss. "
+"Trotzdem kann jede Instanz diese Einstellung ignorieren:"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+" * configuring: restart instances after each product configuration.\n"
+" * end:         restart instances only once at the end of the whole\n"
+"                installation/upgrading process.\n"
+" * manually:    no restart, it is your responsibility to restart\n"
+"                Zope instances."
+msgstr ""
+" * beim Einrichten: Neustart der Instanzen nach jeder Einrichtung\n"
+"                    eines Produkts\n"
+" * am Ende:         Neustart der Instanzen nur einmal am Ende der\n"
+"                    gesamten Installation bzw. Aktualisierung\n"
+" * manuell:         Kein Neustart. Sie müssen die Zope-Instanzen\n"
+"                    selbst neu starten."
+
+#. Type: select
+#. Choices
+#: ../templates:2001
+msgid "abort, remove and continue"
+msgstr "Abbruch, löschen und weiter"
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid "Found an old/incomplete zope instance '${instance}':"
+msgstr "Alte bzw. unvollständige Zope-Instanz »${instance}« gefunden:"
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid ""
+"Found an old/incomplete ${instance} instance in /var/lib/zope${zver}/"
+"instance/${instance}. No data file Data.fs was found for the instance, "
+"meaning that the installation was not completed for some reason, or the "
+"installation was incompletely removed. Aborting the installation will allow "
+"you to inspect the state of the instance, continuing will remove /var/lib/"
+"zope${zver}/instance/${instance} and reinstall the ${instance}. Existing "
+"logfiles in /var/log/zope${zver}/${instance} and configuration files in /etc/"
+"zope${zver}/${instance} are preserved."
+msgstr ""
+"Die alte bzw. unvollständige Instanz ${instance} wurde im "
+"Verzeichnis /var/lib/zope${zver}/instance/${instance} gefunden. "
+"Für diese Instanz wurde keine Datei Data.fs gefunden, d. h. die "
+"Installation wurde aus einem bestimmten Grund nicht beendet oder "
+"unvollständig gelöscht. »Abbruch« der Installation gibt Ihnen "
+"Gelegenheit, die Instanz zu untersuchen, wählen Sie »löschen und "
+"weiter« aus, wird /var/lib/zope${zver}/instance/${instance} "
+"gelöscht und ${instance} neu installiert. Vorhandene "
+"Protokolldateien in /var/log/zope${zver}/${instance} und "
+"Konfigurationsdateien in /etc/zope${zver}/${instance} bleiben "
+"erhalten."
+
+#. Type: boolean
+#. Description
+#: ../templates:3001
+msgid "Keep data for ${instance} on package purge?"
+msgstr "Daten von ${instance} beim restlosen Löschen (purge) des Pakets behalten?"
+
+#. Type: boolean
+#. Description
+#: ../templates:3001
+msgid ""
+"Purging the data files of a zope instance on package purge results in loss "
+"of all data of the zope instance. The data files for this instance are "
+"stored in /var/lib/zope${zver}/instance/${instance}."
+msgstr ""
+"Werden die Daten-Dateien einer Zope-Instanz beim restlosen Entfernen des "
+"Pakets gelöscht, bedeutet das den Verlust aller Daten dieser Zope-Instanz. "
+"Die Daten-Dateien dieser Instanz liegen im "
+"Verzeichnis /var/lib/zope${zver}/instance/${instance}."
+
+#. Type: string
+#. Description
+#: ../templates:4001
+msgid "Admin user for zope instance '${instance}':"
+msgstr "Admin-Benutzer der Zope-Instanz »${instance}«:"
+
+#. Type: string
+#. Description
+#: ../templates:4001
+msgid ""
+"Please enter an admin user for the zope instance '${instance}'. A valid user "
+"name starts with a letter, followed by letters and digits."
+msgstr ""
+"Bitte geben Sie den Admin-Benutzer der Zope-Instanz »${instance}« "
+"ein. Ein gültiger Benutzername beginnt mit einem Buchstaben, gefolgt "
+"von Buchstaben und Zahlen."
+
+#. Type: string
+#. Description
+#. Type: password
+#. Description
+#. Type: password
+#. Description
+#: ../templates:4001 ../templates:5001 ../templates:6001
+msgid ""
+"NOTE: Once the instance has been created, the parameter entered here isn't "
+"relevant anymore.  To change the admin user (and password) later on, call:"
+msgstr ""
+"ACHTUNG: Wenn die Instanz einmal erstellt ist, werden die hier "
+"eingegebenen Parameter nicht mehr benötigt. Um den Admin-Benutzer "
+"(und das Passwort) später zu ändern, rufen Sie folgendes Kommando "
+"auf:"
+
+#. Type: string
+#. Description
+#. Type: password
+#. Description
+#. Type: password
+#. Description
+#: ../templates:4001 ../templates:5001 ../templates:6001
+msgid ""
+"/var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser <user> "
+"<password>"
+msgstr ""
+"/var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser <Benutzer> "
+"<Passwort>"
+
+#. Type: password
+#. Description
+#: ../templates:5001
+msgid "Password for the admin user:"
+msgstr "Passwort für Admin-Benutzer:"
+
+#. Type: password
+#. Description
+#: ../templates:5001
+msgid ""
+"Please enter a password for the admin user. The password must not be empty. "
+"The password is deleted from the configuration database, once the instance "
+"is sucessfully created and cannot be recoverd."
+msgstr ""
+"Bitte geben Sie ein Passwort für den Admin-Benutzer ein. Das "
+"Passwort darf nicht leer sein. Das Passwort wird nach erfolgreichem "
+"Erstellen der Instanz aus der Konfigurationsdatenbank gelöscht und "
+"kann nicht wieder hergestellt werden."
+
+#. Type: password
+#. Description
+#: ../templates:6001
+msgid "Same password:"
+msgstr "Passwort-Wiederholung:"
+
+#. Type: password
+#. Description
+#: ../templates:6001
+msgid "Please enter again the password for the admin user."
+msgstr "Bitte geben Sie das Passwort für den Admin-Benutzer noch einmal ein."
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid "HTTP port for this instance:"
+msgstr "HTTP-Port dieser Instanz:"
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid "Please enter the HTTP port for the instance ${instance}."
+msgstr "Bitte den HTTP-Port für die Instanz ${instance} eingeben."
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid ""
+"Other services (e.g. FTP, WebDAV, debug) will be disabled by default. You "
+"can enable them editing /etc/zope${zver}/${instance}/zope.conf."
+msgstr ""
+"Andere Dienste (z. B. FTP, WebDAV, debug) werden standardmäßig "
+"deaktiviert. Sie können sie in der "
+"Datei /etc/zope${zver}/${instance}/zope.conf aktivieren."
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid "Automatically generated user and password for your instance"
+msgstr "Automatisch erstellter Benutzer und Passwort für Ihre Instanz"
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid ""
+"You haven't provided a user and a password for your instance, so these  "
+"values have been automatically generated."
+msgstr ""
+"Sie haben keinen Benutzernamen und Passwort für Ihre Instanz "
+"eingegeben, deshalb wurden diese Werte automatisch erstellt."
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid "Use these values to log into the Zope${zver} instance ${instance}:"
+msgstr ""
+"Benutzen Sie diese Angaben zum Anmelden an der Zope${zver}-Instanz "
+"${instance}:"
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid ""
+" * User     : ${user}\n"
+" * Password : ${password}"
+msgstr ""
+" * Benutzername: ${user}\n"
+" * Passwort    : ${password}"
+

Added: zope-common/tags/0.5.31/debian/po/fr.po
===================================================================
--- zope-common/tags/0.5.31/debian/po/fr.po	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/po/fr.po	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,268 @@
+# translation of fr.po to French
+#
+#    Translators, if you are not familiar with the PO format, gettext
+#    documentation is worth reading, especially sections dedicated to
+#    this format, e.g. by running:
+#         info -n '(gettext)PO Files'
+#         info -n '(gettext)Header Entry'
+#    Some information specific to po-debconf are available at
+#            /usr/share/doc/po-debconf/README-trans
+#         or http://www.debian.org/intl/l10n/po-debconf/README-trans#
+#    Developers do not need to manually edit POT or PO files.
+# Christian Perrier <bubulle at debian.org>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: zope-common_0.5.25\n"
+"Report-Msgid-Bugs-To: pkg-zope-developers at lists.alioth.debian.org\n"
+"POT-Creation-Date: 2006-11-02 15:47+0100\n"
+"PO-Revision-Date: 2006-11-05 10:47+0100\n"
+"Last-Translator: Michel Grentzinger <mic.grentz at online.fr>\n"
+"Language-Team: French <debian-l10n-french at lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-15\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#: ../templates:1001
+msgid "configuring, end, manually"
+msgstr "Lors de la configuration, À la fin, Manuellement"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid "Automatic restart of Zope instances:"
+msgstr "Méthode de redémarrage des instances Zope :"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+"Zope has an extensible, modular structure that allows you to easily add "
+"extra components (products) or features. Each product or feature can usually "
+"be found in packages whose name starts with a 'zope-' prefix. Unfortunately, "
+"each Zope instance needs to be restarted to use any new add-on. Here you can "
+"choose the default behaviour of Zope instances in any installed Zope version "
+"when Zope needs to be restarted. Each instance, however, is allowed to "
+"overwrite this setting:"
+msgstr ""
+"Zope comporte une structure extensible qui vous permet d'ajouter facilement "
+"des parties (produits) ou des fonctionnalités supplémentaires. Chacune "
+"d'elles peut généralement être trouvée dans des paquets dont le nom commence "
+"par le préfixe « zope- ». Cependant, Zope a besoin d'être redémarré afin "
+"d'utiliser ces nouvelles extensions. Vous pouvez choisir ici le comportement "
+"par défaut des instances Zope lorsque celles-ci nécessitent son redémarrage. "
+"Chaque instance peut avoir sa propre configuration."
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+" * configuring: restart instances after each product configuration.\n"
+" * end:         restart instances only once at the end of the whole\n"
+"                installation/upgrading process.\n"
+" * manually:    no restart, it is your responsibility to restart\n"
+"                Zope instances."
+msgstr ""
+" - Lors de la configuration : redémarrer les instances après chaque\n"
+"                              configuration ;\n"
+" - À la fin                 : redémarrer les instances uniquement\n"
+"                              lorsque le processus d'installation ou\n"
+"                              de mise à niveau sera terminé ;\n"
+" - Manuellement             : ne pas redémarrer. Vous devrez redémarrer\n"
+"                              Zope vous-même."
+
+#. Type: select
+#. Choices
+#: ../templates:2001
+msgid "abort, remove and continue"
+msgstr "Abandonner, Supprimer et continuer"
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid "Found an old/incomplete zope instance '${instance}':"
+msgstr "Instance Zope « ${instance} » ancienne ou incomplète"
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid ""
+"Found an old/incomplete ${instance} instance in /var/lib/zope${zver}/"
+"instance/${instance}. No data file Data.fs was found for the instance, "
+"meaning that the installation was not completed for some reason, or the "
+"installation was incompletely removed. Aborting the installation will allow "
+"you to inspect the state of the instance, continuing will remove /var/lib/"
+"zope${zver}/instance/${instance} and reinstall the ${instance}. Existing "
+"logfiles in /var/log/zope${zver}/${instance} and configuration files in /etc/"
+"zope${zver}/${instance} are preserved."
+msgstr ""
+"Une instance ancienne ou incomplète (« ${instance} ») a été trouvée dans /"
+"var/lib/zope${zver}/instance/${instance}. Aucun fichier de données Data.fs "
+"n'a été trouvé, ce qui signifie que l'installation n'a pas été achevée ou "
+"que sa suppression n'a pas été terminée. L'abandon de l'installation vous "
+"permettra d'examiner l'état de cette instance ; poursuivre le processus "
+"supprimera /var/lib/zope${zver}/instance/{instance} et réinstallera "
+"${instance}. Les journaux situés dans /var/log/zope${zver}/${instance} ainsi "
+"que les fichiers de configuration de /etc/zope${zver}/${instance} seront "
+"préservés."
+
+#. Type: boolean
+#. Description
+#: ../templates:3001
+msgid "Keep data for ${instance} on package purge?"
+msgstr ""
+"Faut-il conserver les données de l'instance « ${instance} » lors de la purge "
+"du paquet ?"
+
+#. Type: boolean
+#. Description
+#: ../templates:3001
+msgid ""
+"Purging the data files of a zope instance on package purge results in loss "
+"of all data of the zope instance. The data files for this instance are "
+"stored in /var/lib/zope${zver}/instance/${instance}."
+msgstr ""
+"La suppression définitive des fichiers de données d'une instance Zope "
+"conduira à la perte de toutes les données de cette instance. Les fichiers de "
+"données de cette instance sont stockés dans /var/lib/zope${zver}/instance/"
+"${instance}."
+
+#. Type: string
+#. Description
+#: ../templates:4001
+msgid "Admin user for zope instance '${instance}':"
+msgstr "Administrateur de l'instance « ${instance} » :"
+
+#. Type: string
+#. Description
+#: ../templates:4001
+msgid ""
+"Please enter an admin user for the zope instance '${instance}'. A valid user "
+"name starts with a letter, followed by letters and digits."
+msgstr ""
+"Veuillez indiquer l'identifiant de l'utilisateur qui administrera l'instance "
+"Zope « ${instance} ». Il doit commencer par une lettre, suivie par d'autres "
+"lettres ou chiffres."
+
+#. Type: string
+#. Description
+#. Type: password
+#. Description
+#. Type: password
+#. Description
+#: ../templates:4001 ../templates:5001 ../templates:6001
+msgid ""
+"NOTE: Once the instance has been created, the parameter entered here isn't "
+"relevant anymore.  To change the admin user (and password) later on, call:"
+msgstr ""
+"Remarque : une fois que l'instance est créée, les paramètres saisis ne sont "
+"pas activés. Pour modifier par la suite l'administrateur et son mot de "
+"passe, veuillez utiliser la commande suivante :"
+
+#. Type: string
+#. Description
+#. Type: password
+#. Description
+#. Type: password
+#. Description
+#: ../templates:4001 ../templates:5001 ../templates:6001
+msgid ""
+"/var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser <user> "
+"<password>"
+msgstr ""
+"/var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser <utilisateur> "
+"<motdepasse>"
+
+#. Type: password
+#. Description
+#: ../templates:5001
+msgid "Password for the admin user:"
+msgstr "Mot de passe de l'administrateur :"
+
+#. Type: password
+#. Description
+#: ../templates:5001
+msgid ""
+"Please enter a password for the admin user. The password must not be empty. "
+"The password is deleted from the configuration database, once the instance "
+"is sucessfully created and cannot be recoverd."
+msgstr ""
+"Veuillez choisir un mot de passe pour l'administrateur. Le mot de passe ne "
+"doit pas être vide. Il n'est pas conservé dans la base de données de "
+"configuration après la création de l'instance."
+
+#. Type: password
+#. Description
+#: ../templates:6001
+msgid "Same password:"
+msgstr "Mot de passe de l'administrateur :"
+
+#. Type: password
+#. Description
+#: ../templates:6001
+msgid "Please enter again the password for the admin user."
+msgstr "Veuillez confirmer le mot de passe de l'administrateur."
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid "HTTP port for this instance:"
+msgstr "Port HTTP pour cette instance :"
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid "Please enter the HTTP port for the instance ${instance}."
+msgstr "Veuillez indiquer le port HTTP pour l'instance « ${instance} »."
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid ""
+"Other services (e.g. FTP, WebDAV, debug) will be disabled by default. You "
+"can enable them editing /etc/zope${zver}/${instance}/zope.conf."
+msgstr ""
+"Les autres services (p. ex. FTP, WebDAV, debug) sont désactivés par défaut. "
+"Vous pouvez les activer en modifiant /etc/zope${zver}/${instance}/zope.conf."
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid "Automatically generated user and password for your instance"
+msgstr "Utilisateur et mot de passe créés automatiquement pour cette instance"
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid ""
+"You haven't provided a user and a password for your instance, so these  "
+"values have been automatically generated."
+msgstr ""
+"Vous n'avez pas indiqué d'utilisateur ni de mot de passe pour cette "
+"instance, ces valeurs ont donc été automatiquement créées."
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid "Use these values to log into the Zope${zver} instance ${instance}:"
+msgstr ""
+"Utilisez ces valeurs pour vous connecter à l'instance « ${instance} » de Zope"
+"${zver} :"
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid ""
+" * User     : ${user}\n"
+" * Password : ${password}"
+msgstr ""
+" - Utilisateur : ${user}\n"
+" - Mot de passe : ${password}"
+
+#~ msgid "When will Zope instances be restarted?"
+#~ msgstr "Méthode de redémarrage des instances Zope :"
+
+#~ msgid "Enter again the same password:"
+#~ msgstr "Confirmation du mot de passe :"

Added: zope-common/tags/0.5.31/debian/po/it.po
===================================================================
--- zope-common/tags/0.5.31/debian/po/it.po	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/po/it.po	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,266 @@
+#
+#    Translators, if you are not familiar with the PO format, gettext
+#    documentation is worth reading, especially sections dedicated to
+#    this format, e.g. by running:
+#         info -n '(gettext)PO Files'
+#         info -n '(gettext)Header Entry'
+#
+#    Some information specific to po-debconf are available at
+#            /usr/share/doc/po-debconf/README-trans
+#         or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+#    Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: zope-common\n"
+"Report-Msgid-Bugs-To: pkg-zope-developers at lists.alioth.debian.org\n"
+"POT-Creation-Date: 2006-11-02 15:47+0100\n"
+"PO-Revision-Date: 2005-03-09 HO:MI+ZONE\n"
+"Last-Translator: Fabio Tranchitella <kobold at kobold.it>\n"
+"Language-Team: Italian <debian-l10n-italian at lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#: ../templates:1001
+msgid "configuring, end, manually"
+msgstr "configurazione, alla fine, manualmente"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid "Automatic restart of Zope instances:"
+msgstr "Riavvio automatico di instanze Zope:"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+"Zope has an extensible, modular structure that allows you to easily add "
+"extra components (products) or features. Each product or feature can usually "
+"be found in packages whose name starts with a 'zope-' prefix. Unfortunately, "
+"each Zope instance needs to be restarted to use any new add-on. Here you can "
+"choose the default behaviour of Zope instances in any installed Zope version "
+"when Zope needs to be restarted. Each instance, however, is allowed to "
+"overwrite this setting:"
+msgstr ""
+"Zope ha una struttura estendibile e modulare che consente facilmente "
+"l'aggiunta di componenti aggiuntivi (prodotti) o funzionalità. Ogni prodotto "
+"o funzionalità è contenuto di solito in pacchetti il cui nome inizia con il "
+"prefisso 'zope-'. Sfortunatamente, ogni istanza di Zope ha bisogno di essere "
+"riavviata prima di poter utilizzare il nuovo componente. Qui è possibile "
+"scegliere il comportamento predefinito delle istanze di tutte le versioni di "
+"Zope installate quando Zope necessita di essere riavviato. Ogni istanza, "
+"comunque, può sovrascrivere questa impostazione:"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+" * configuring: restart instances after each product configuration.\n"
+" * end:         restart instances only once at the end of the whole\n"
+"                installation/upgrading process.\n"
+" * manually:    no restart, it is your responsibility to restart\n"
+"                Zope instances."
+msgstr ""
+" * configurazione: riavvia le istanze dopo la configurazione di ogni\n"
+"                   prodotto.\n"
+" * alla fine:      riavvia le istanze una sola volta al termine del\n"
+"                   processo di installazione o aggiornamento.\n"
+" * manualmente:    nessun riavvio, è responsabilità dell'amministratore\n"
+"                   riavviare le istanze Zope."
+
+#. Type: select
+#. Choices
+#: ../templates:2001
+msgid "abort, remove and continue"
+msgstr "annulla, rimuovi e continua"
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid "Found an old/incomplete zope instance '${instance}':"
+msgstr "Trovata una istanza zope '${instance}' vecchia o incompleta:"
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid ""
+"Found an old/incomplete ${instance} instance in /var/lib/zope${zver}/"
+"instance/${instance}. No data file Data.fs was found for the instance, "
+"meaning that the installation was not completed for some reason, or the "
+"installation was incompletely removed. Aborting the installation will allow "
+"you to inspect the state of the instance, continuing will remove /var/lib/"
+"zope${zver}/instance/${instance} and reinstall the ${instance}. Existing "
+"logfiles in /var/log/zope${zver}/${instance} and configuration files in /etc/"
+"zope${zver}/${instance} are preserved."
+msgstr ""
+"E' stata rilevata una istanza zope ${instance} vecchia o incompleta in /var/"
+"lib/zope${zver}/instance/${instance}. Nessun file Data.fs è stato trovato "
+"per l'istanza, quindi l'installazione non è stata completata per qualche "
+"ragione oppure l'istanza non è stata rimossa completamente. Annullare "
+"l'installazione consentirà di ispezionare lo stato dell'istanza, mentre "
+"continuando la directory /var/lib/zope${zver}/instance/${instance} verrà "
+"rimossa e verrà utilizzata per l'installazione della nuova istanza "
+"${instance}. Gli eventuali file di log in /var/log/zope${zver}/${instance} e "
+"file di configurazione in /etc/zope${zver}/${instance} verranno preservati."
+
+#. Type: boolean
+#. Description
+#: ../templates:3001
+msgid "Keep data for ${instance} on package purge?"
+msgstr ""
+"Salvataggio dei dati per l'istanza ${instance} dopo la rimozione del pacchetto:"
+
+#. Type: boolean
+#. Description
+#: ../templates:3001
+msgid ""
+"Purging the data files of a zope instance on package purge results in loss "
+"of all data of the zope instance. The data files for this instance are "
+"stored in /var/lib/zope${zver}/instance/${instance}."
+msgstr ""
+"La rimozione dei file di dati di un'istanza zope durante la rimozione del "
+"pacchetto (purge) causerà la perdita di tutti i dati dell'istanza zope. "
+"I file di dati per l'istanza sono memorizzati in "
+"/var/lib/zope/${zver}/${instance}."
+
+#. Type: string
+#. Description
+#: ../templates:4001
+msgid "Admin user for zope instance '${instance}':"
+msgstr "Nome dell'utente amministratore zope:"
+
+#. Type: string
+#. Description
+#: ../templates:4001
+msgid ""
+"Please enter an admin user for the zope instance '${instance}'. A valid user "
+"name starts with a letter, followed by letters and digits."
+msgstr ""
+"Inserire il nome utente per l'amministratore dell'istanza zope "
+"'${instance}'. Un nome utente valido inizia con una lettera seguito da altre "
+"lettere e numeri."
+
+#. Type: string
+#. Description
+#. Type: password
+#. Description
+#. Type: password
+#. Description
+#: ../templates:4001 ../templates:5001 ../templates:6001
+msgid ""
+"NOTE: Once the instance has been created, the parameter entered here isn't "
+"relevant anymore.  To change the admin user (and password) later on, call:"
+msgstr ""
+"NOTA: Dopo che l'istanza verrà creata, il parametro inserito qui non sarà "
+"più utilizzato. Per cambiare l'utente amministratore (e la password) "
+"successivamente, eseguire:"
+
+#. Type: string
+#. Description
+#. Type: password
+#. Description
+#. Type: password
+#. Description
+#: ../templates:4001 ../templates:5001 ../templates:6001
+msgid ""
+"/var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser <user> "
+"<password>"
+msgstr ""
+"/var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser <user> "
+"<password>"
+
+#. Type: password
+#. Description
+#: ../templates:5001
+msgid "Password for the admin user:"
+msgstr "Password per l'utente amministratore:"
+
+#. Type: password
+#. Description
+#: ../templates:5001
+msgid ""
+"Please enter a password for the admin user. The password must not be empty. "
+"The password is deleted from the configuration database, once the instance "
+"is sucessfully created and cannot be recoverd."
+msgstr ""
+"Inserire la password per l'amministratore. La password non puo' essere "
+"vuota. La password sarà cancellata dal database delle configurazioni dopo la "
+"creazione dell'istanza e non potrà essere recuperata."
+
+#. Type: password
+#. Description
+#: ../templates:6001
+msgid "Same password:"
+msgstr "Stessa password:"
+
+#. Type: password
+#. Description
+#: ../templates:6001
+msgid "Please enter again the password for the admin user."
+msgstr "Inserire di nuovo la password per l'utente amministratore."
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid "HTTP port for this instance:"
+msgstr "Porta HTTP per questa istanza:"
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid "Please enter the HTTP port for the instance ${instance}."
+msgstr "Specificare la porta HTTP per l'istanza ${instance}."
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid ""
+"Other services (e.g. FTP, WebDAV, debug) will be disabled by default. You "
+"can enable them editing /etc/zope${zver}/${instance}/zope.conf."
+msgstr ""
+"Altri servizi (es. FTP, WebDAV, debug) verranno disattivati. Sarà possibile "
+"abilitarli modificando /etc/zope${zver}/${instance}/zope.conf."
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid "Automatically generated user and password for your instance"
+msgstr "Password ed utente di amministrazione predefiniti per l'istanza"
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid ""
+"You haven't provided a user and a password for your instance, so these  "
+"values have been automatically generated."
+msgstr ""
+"Non sono stati forniti utente e password per l'istanza, quindi queste "
+"informazioni sono state generate automaticamente."
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid "Use these values to log into the Zope${zver} instance ${instance}:"
+msgstr ""
+"Utilizzare questi valori per accedere all'istanza Zope${zver} ${instance}:"
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid ""
+" * User     : ${user}\n"
+" * Password : ${password}"
+msgstr ""
+" * Utente   : ${user}\n"
+" * Password : ${password}"
+
+#~ msgid "When will Zope instances be restarted?"
+#~ msgstr "Quando verranno riavviate le istanze di Zope?"
+
+#~ msgid "Enter again the same password:"
+#~ msgstr "Inserire di nuovo la stessa password:"

Added: zope-common/tags/0.5.31/debian/po/ja.po
===================================================================
--- zope-common/tags/0.5.31/debian/po/ja.po	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/po/ja.po	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,262 @@
+#
+#    Translators, if you are not familiar with the PO format, gettext
+#    documentation is worth reading, especially sections dedicated to
+#    this format, e.g. by running:
+#         info -n '(gettext)PO Files'
+#         info -n '(gettext)Header Entry'
+#
+#    Some information specific to po-debconf are available at
+#            /usr/share/doc/po-debconf/README-trans
+#         or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+#    Developers do not need to manually edit POT or PO files.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: zope-common 0.5.26\n"
+"Report-Msgid-Bugs-To: pkg-zope-developers at lists.alioth.debian.org\n"
+"POT-Creation-Date: 2006-11-02 15:47+0100\n"
+"PO-Revision-Date: 2006-11-04 00:08+0900\n"
+"Last-Translator: Hideki Yamane (Debian-JP) <henrich at debian.or.jp>\n"
+"Language-Team: Japanese <debian-japanese at lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#: ../templates:1001
+msgid "configuring, end, manually"
+msgstr "設定中, 最後に, 手動で"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid "Automatic restart of Zope instances:"
+msgstr "Zope インスタンスを自動的に再起動する:"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+"Zope has an extensible, modular structure that allows you to easily add "
+"extra components (products) or features. Each product or feature can usually "
+"be found in packages whose name starts with a 'zope-' prefix. Unfortunately, "
+"each Zope instance needs to be restarted to use any new add-on. Here you can "
+"choose the default behaviour of Zope instances in any installed Zope version "
+"when Zope needs to be restarted. Each instance, however, is allowed to "
+"overwrite this setting:"
+msgstr ""
+"Zope はコンポーネント (製品) や機能を簡単に追加できる拡張可能なオブジェクト指"
+"向構造となっています。それぞれの製品や機能は、普通は `zope-' で始まる名前の"
+"パッケージになっています。あいにく、新しく追加したアドオンを使うには Zope の"
+"再起動が必要です。ここではインストールされたどの Zope のバージョンであって"
+"も、Zope が再起動が必要な際の Zope インスタンスのデフォルトの動作を選択できま"
+"す。しかし、それぞれのインスタンスではこの設定を上書き可能になっています:"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+" * configuring: restart instances after each product configuration.\n"
+" * end:         restart instances only once at the end of the whole\n"
+"                installation/upgrading process.\n"
+" * manually:    no restart, it is your responsibility to restart\n"
+"                Zope instances."
+msgstr ""
+" * 設定中: それぞれの製品の設定中に Zope を再起動します。\n"
+" * 最後に: 全てのインストール・アップグレード作業が終わった際に Zope \n"
+"   を1回だけ再起動します。\n"
+" * 手動で: Zope を手動で再起動する必要があります。"
+
+#. Type: select
+#. Choices
+#: ../templates:2001
+msgid "abort, remove and continue"
+msgstr "終了する, 削除して続ける"
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid "Found an old/incomplete zope instance '${instance}':"
+msgstr ""
+"古い・あるいは不完全な zope インスタンス '${instance}' が見つかりました:"
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid ""
+"Found an old/incomplete ${instance} instance in /var/lib/zope${zver}/"
+"instance/${instance}. No data file Data.fs was found for the instance, "
+"meaning that the installation was not completed for some reason, or the "
+"installation was incompletely removed. Aborting the installation will allow "
+"you to inspect the state of the instance, continuing will remove /var/lib/"
+"zope${zver}/instance/${instance} and reinstall the ${instance}. Existing "
+"logfiles in /var/log/zope${zver}/${instance} and configuration files in /etc/"
+"zope${zver}/${instance} are preserved."
+msgstr ""
+"古い・あるいは不完全なインスタンス '${instance}' が /var/lib/zope${zver}/"
+"instance/${instance} に見つかりました。このインスタンス用のデータファイル "
+"Data.fs が無いのは、何らかの理由でインストールが不完全であったか、インストー"
+"ルされたファイルの削除が不完全であったかを意味しています。インストールを終了"
+"すると、インスタンスの状態を確認できます。続行すると、/var/lib/zope${zver}/"
+"instance/${instance} を削除して ${instance} を再インストールします。/var/log/"
+"zope${zver}/${instance} にあるログファイルと /etc/zope${zver}/${instance} の"
+"設定ファイルは保存されます。"
+
+#. Type: boolean
+#. Description
+#: ../templates:3001
+msgid "Keep data for ${instance} on package purge?"
+msgstr "パッケージを purge する際に ${instance} のデータを保存しますか?"
+
+#. Type: boolean
+#. Description
+#: ../templates:3001
+msgid ""
+"Purging the data files of a zope instance on package purge results in loss "
+"of all data of the zope instance. The data files for this instance are "
+"stored in /var/lib/zope${zver}/instance/${instance}."
+msgstr ""
+"パッケージを purge する際、zope インスタンスのデータファイルも purge すると"
+"zope インスタンスの全てのデータを失います。このインスタンスのデータファイル"
+"は /var/lib/zope${zver}/instance/${instance} に保存されています。"
+
+#. Type: string
+#. Description
+#: ../templates:4001
+msgid "Admin user for zope instance '${instance}':"
+msgstr "zope インスタンス '${instance}' の管理者ユーザ:"
+
+#. Type: string
+#. Description
+#: ../templates:4001
+msgid ""
+"Please enter an admin user for the zope instance '${instance}'. A valid user "
+"name starts with a letter, followed by letters and digits."
+msgstr ""
+"zope インスタンス '${instance}' の管理者ユーザを入力してください。適切なユー"
+"ザ名は文字で始まり、文字列と数字が続きます。"
+
+#. Type: string
+#. Description
+#. Type: password
+#. Description
+#. Type: password
+#. Description
+#: ../templates:4001 ../templates:5001 ../templates:6001
+msgid ""
+"NOTE: Once the instance has been created, the parameter entered here isn't "
+"relevant anymore.  To change the admin user (and password) later on, call:"
+msgstr ""
+"注意: 一旦インスタンスが作成されると、ここで入力したパラメータは関係がなくな"
+"ります。後ほど管理者ユーザ (及びパスワード) を変更するには、以下のように入力"
+"してください:"
+
+#. Type: string
+#. Description
+#. Type: password
+#. Description
+#. Type: password
+#. Description
+#: ../templates:4001 ../templates:5001 ../templates:6001
+msgid ""
+"/var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser <user> "
+"<password>"
+msgstr ""
+"/var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser <user> "
+"<password>"
+
+#. Type: password
+#. Description
+#: ../templates:5001
+msgid "Password for the admin user:"
+msgstr "管理者ユーザのパスワード:"
+
+#. Type: password
+#. Description
+#: ../templates:5001
+msgid ""
+"Please enter a password for the admin user. The password must not be empty. "
+"The password is deleted from the configuration database, once the instance "
+"is sucessfully created and cannot be recoverd."
+msgstr ""
+"管理者ユーザのパスワードを入力してください。パスワードは空ではいけません。パ"
+"スワードは一旦インスタンスが無事に作成されると設定データベースから削除され、"
+"元には戻せません。"
+
+#. Type: password
+#. Description
+#: ../templates:6001
+msgid "Same password:"
+msgstr "同じパスワードを入力:"
+
+#. Type: password
+#. Description
+#: ../templates:6001
+msgid "Please enter again the password for the admin user."
+msgstr "管理者ユーザのパスワードをもう一度入力してください。"
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid "HTTP port for this instance:"
+msgstr "このインスタンスを使う HTTP のポート番号:"
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid "Please enter the HTTP port for the instance ${instance}."
+msgstr ""
+"インスタンス ${instance} で利用する HTTP ポート番号を入力してください。"
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid ""
+"Other services (e.g. FTP, WebDAV, debug) will be disabled by default. You "
+"can enable them editing /etc/zope${zver}/${instance}/zope.conf."
+msgstr ""
+"デフォルトでは他のサービス (例: FTP、WebDAV、debug) は無効にされます。有効に"
+"するには /etc/zope${zver}/${instance}/zope.conf を編集してください。"
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid "Automatically generated user and password for your instance"
+msgstr "インスタンスに対して自動的にユーザとパスワードを生成する"
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid ""
+"You haven't provided a user and a password for your instance, so these  "
+"values have been automatically generated."
+msgstr ""
+"インスタンスに対してユーザ名・パスワードを入力しなかったので、これらが自動的に"
+"生成されます。"
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid "Use these values to log into the Zope${zver} instance ${instance}:"
+msgstr ""
+"Zope${zver} インスタンス ${instance} へのログインにここでの値を使用してくださ"
+"い:"
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid ""
+" * User     : ${user}\n"
+" * Password : ${password}"
+msgstr ""
+" * ユーザ   : ${user}\n"
+" * パスワード : ${password}"
+
+#~ msgid "When will Zope instances be restarted?"
+#~ msgstr "いつ Zope のインスタンスを再起動しますか?"
+
+#~ msgid "Enter again the same password:"
+#~ msgstr "同じパスワードをもう一度入力してください:"

Added: zope-common/tags/0.5.31/debian/po/nl.po
===================================================================
--- zope-common/tags/0.5.31/debian/po/nl.po	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/po/nl.po	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,276 @@
+# translation of zope-common_0.5.24_nl.po to Dutch
+# This file is distributed under the same license as the zope-common package.
+#
+#    Translators, if you are not familiar with the PO format, gettext
+#    documentation is worth reading, especially sections dedicated to
+#    this format, e.g. by running:
+#         info -n '(gettext)PO Files'
+#         info -n '(gettext)Header Entry'
+#    Some information specific to po-debconf are available at
+#            /usr/share/doc/po-debconf/README-trans
+#         or http://www.debian.org/intl/l10n/po-debconf/README-trans#
+#    Developers do not need to manually edit POT or PO files.
+#
+# Kurt De Bree <kdebree at telenet.be>, 2006.
+# This is an unofficial translation
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: zope-common_0.5.24_nl\n"
+"Report-Msgid-Bugs-To: pkg-zope-developers at lists.alioth.debian.org\n"
+"POT-Creation-Date: 2006-11-02 15:47+0100\n"
+"PO-Revision-Date: 2006-09-23 17:28+0200\n"
+"Last-Translator: Kurt De Bree <kdebree at telenet.be>\n"
+"Language-Team: Dutch <debian-l10n-dutch at lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#. Type: select
+#. Choices
+#: ../templates:1001
+msgid "configuring, end, manually"
+msgstr "configuratie, einde, handmatig"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid "Automatic restart of Zope instances:"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+"Zope has an extensible, modular structure that allows you to easily add "
+"extra components (products) or features. Each product or feature can usually "
+"be found in packages whose name starts with a 'zope-' prefix. Unfortunately, "
+"each Zope instance needs to be restarted to use any new add-on. Here you can "
+"choose the default behaviour of Zope instances in any installed Zope version "
+"when Zope needs to be restarted. Each instance, however, is allowed to "
+"overwrite this setting:"
+msgstr ""
+"Zope heeft een uitbreidbare modulaire structuur, die u toestaat extra "
+"componenten (producten) of functies op een eenvoudige wijze toe te voegen. "
+"Elk product kan worden gevonden in pakketten waarvan de naam met de prefix "
+"'zope-' begint.  Jammer genoeg dient elke Zope-dienst te worden herstart om "
+"een nieuwe toevoeging te gebruiken. Hier kunt u het standaardgedrag van Zope-"
+"diensten instellen m.b.t het tijdstip van het herstarten van Zope (dit geldt "
+"voor alle Zope-versies). Het is echter elke dienst toegestaan deze "
+"instelling te overschrijven:"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+" * configuring: restart instances after each product configuration.\n"
+" * end:         restart instances only once at the end of the whole\n"
+"                installation/upgrading process.\n"
+" * manually:    no restart, it is your responsibility to restart\n"
+"                Zope instances."
+msgstr ""
+" * configuratie: herstart de diensten na elke productconfiguratie.\n"
+" * einde:        herstart de diensten slechts éénmmal op het einde\n"
+"                 van het volledige installatie/opwaarderingsproces.\n"
+" * handmatig:    geen herstart, de Zope-diensten dienen door u\n"
+"                 handmatig te worden herstart."
+
+#. Type: select
+#. Choices
+#: ../templates:2001
+msgid "abort, remove and continue"
+msgstr "afbreken, verwijderen en verdergaan"
+
+#. Type: select
+#. Description
+#: ../templates:2002
+#, fuzzy
+msgid "Found an old/incomplete zope instance '${instance}':"
+msgstr "Verouderde/onvolledige zope-dienst '${instance}' gevonden"
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid ""
+"Found an old/incomplete ${instance} instance in /var/lib/zope${zver}/"
+"instance/${instance}. No data file Data.fs was found for the instance, "
+"meaning that the installation was not completed for some reason, or the "
+"installation was incompletely removed. Aborting the installation will allow "
+"you to inspect the state of the instance, continuing will remove /var/lib/"
+"zope${zver}/instance/${instance} and reinstall the ${instance}. Existing "
+"logfiles in /var/log/zope${zver}/${instance} and configuration files in /etc/"
+"zope${zver}/${instance} are preserved."
+msgstr ""
+"Er is een verouderde/onvolledige ${instance} dienst gevonden in /var/lib/zope"
+"${zver}/instance/${instance}. Er is geen databestand Data.fs gevonden voor "
+"deze dienst. Dit betekent dat de installatie om om het even welke reden niet "
+"voltooid is of de installatie volledig verwijderd was. De installatie "
+"afbreken staat u toe de staat van de dienst te controleren; verdergaan "
+"betekent dat /var/lib/zope${zver}/instance/${instance} wordt verwijderd en "
+"herinstalleert ${instance}. Bestaande logbestanden in /var/log/zope${zver}/"
+"${instance} en configuratiebestanden in /etc/zope${zver}/${instance} worden "
+"bewaard."
+
+#. Type: boolean
+#. Description
+#: ../templates:3001
+#, fuzzy
+msgid "Keep data for ${instance} on package purge?"
+msgstr "Data voor ${instance} behouden bij wissen van het pakket?"
+
+#. Type: boolean
+#. Description
+#: ../templates:3001
+#, fuzzy
+msgid ""
+"Purging the data files of a zope instance on package purge results in loss "
+"of all data of the zope instance. The data files for this instance are "
+"stored in /var/lib/zope${zver}/instance/${instance}."
+msgstr ""
+"Wissen (purge) van de databestanden van een zope-dienst tijdens het wissen "
+"van het pakket resulteert in het verlies van alle data van de zope-dienst. "
+"Wilt u de databestanden in /var/lib/zope${zver}/instance/${instance} "
+"behouden bij het wissen van het pakket?"
+
+#. Type: string
+#. Description
+#: ../templates:4001
+#, fuzzy
+msgid "Admin user for zope instance '${instance}':"
+msgstr "Geef de admin-gebruiker voor de zope-dienst '${instance}' in:"
+
+#. Type: string
+#. Description
+#: ../templates:4001
+msgid ""
+"Please enter an admin user for the zope instance '${instance}'. A valid user "
+"name starts with a letter, followed by letters and digits."
+msgstr ""
+"Gelieve de admin-gebruiker voor de zope-dienst '${instance}' in te geven. "
+"Een geldige gebruikersnaam begint met een letter, gevolgd door letters en "
+"cijfers."
+
+#. Type: string
+#. Description
+#. Type: password
+#. Description
+#. Type: password
+#. Description
+#: ../templates:4001 ../templates:5001 ../templates:6001
+msgid ""
+"NOTE: Once the instance has been created, the parameter entered here isn't "
+"relevant anymore.  To change the admin user (and password) later on, call:"
+msgstr ""
+"Merk op: Eens de dienst is aangemaakt, is het opgegeven argument niet meer "
+"relevant. Om later de admin-gebruiker (en wachtwoord) te wijzigen, voer het "
+"volgende uit:"
+
+#. Type: string
+#. Description
+#. Type: password
+#. Description
+#. Type: password
+#. Description
+#: ../templates:4001 ../templates:5001 ../templates:6001
+msgid ""
+"/var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser <user> "
+"<password>"
+msgstr ""
+"/var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser <gebruiker> "
+"<wachtwoord>"
+
+#. Type: password
+#. Description
+#: ../templates:5001
+#, fuzzy
+msgid "Password for the admin user:"
+msgstr "Geef het wachtwoord voor de admin-gebruiker:"
+
+#. Type: password
+#. Description
+#: ../templates:5001
+msgid ""
+"Please enter a password for the admin user. The password must not be empty. "
+"The password is deleted from the configuration database, once the instance "
+"is sucessfully created and cannot be recoverd."
+msgstr ""
+"Gelieve het wachtwoord voor de admin-gebruiker in te geven. Dit veld mag "
+"niet leeg zijn. Het wachtwoord wordt verwijderd uit de configuratie database "
+"eens de dienst met succes is aangemaakt en kan niet worden hersteld."
+
+#. Type: password
+#. Description
+#: ../templates:6001
+msgid "Same password:"
+msgstr ""
+
+#. Type: password
+#. Description
+#: ../templates:6001
+msgid "Please enter again the password for the admin user."
+msgstr "Gelieve nogmaals hetzelfde wachtwoord in te geven."
+
+#. Type: string
+#. Description
+#: ../templates:7001
+#, fuzzy
+msgid "HTTP port for this instance:"
+msgstr "Geef de HTTP-poort in voor deze dienst:"
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid "Please enter the HTTP port for the instance ${instance}."
+msgstr "HTTP-poort voor de dienst ${instance}."
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid ""
+"Other services (e.g. FTP, WebDAV, debug) will be disabled by default. You "
+"can enable them editing /etc/zope${zver}/${instance}/zope.conf."
+msgstr ""
+"Andere diensten (zoals FTP, WebDAV, debug) worden standaard uitgeschakeld. U "
+"kunt deze activeren door /etc/zope${zver}/${instance}/zope.conf bij te "
+"werken."
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid "Automatically generated user and password for your instance"
+msgstr "Automatische generatie van gebruiker en wachtwoord voor uw dienst"
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid ""
+"You haven't provided a user and a password for your instance, so these  "
+"values have been automatically generated."
+msgstr ""
+"U hebt geen gebruiker en wachtwoord voor uw dienst ingevoerd, daarom zijn "
+"deze waarden automatisch gegenereerd."
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid "Use these values to log into the Zope${zver} instance ${instance}:"
+msgstr ""
+"Gebruik deze waarden om toegang te krijgen tot de Zope${zver}-dienst "
+"${instance}:"
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid ""
+" * User     : ${user}\n"
+" * Password : ${password}"
+msgstr ""
+" * Gebruiker: ${user}\n"
+" * Wachtwoord: ${password}"
+
+#~ msgid "When will Zope instances be restarted?"
+#~ msgstr "Wanneer worden Zope-diensten herstart?"
+
+#~ msgid "Enter again the same password:"
+#~ msgstr "Geef nogmaals hetzelfde wachtwoord in:"

Added: zope-common/tags/0.5.31/debian/po/pt.po
===================================================================
--- zope-common/tags/0.5.31/debian/po/pt.po	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/po/pt.po	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,251 @@
+# Portuguese translation of zope-common debconf messages.
+# This file is distributed under the same license as the zope-common package.
+# 2006-11-30 - Rui Branco <ruipb at debianpt.org> - initial translation
+# 
+msgid ""
+msgstr ""
+"Project-Id-Version: zope-common 0.5.27\n"
+"Report-Msgid-Bugs-To: pkg-zope-developers at lists.alioth.debian.org\n"
+"POT-Creation-Date: 2006-11-02 15:47+0100\n"
+"PO-Revision-Date: 2006-11-30 17:04+0000\n"
+"Last-Translator: Rui Branco <ruipb at debianpt.org>\n"
+"Language-Team: Portuguese <traduz at debianpt.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#: ../templates:1001
+msgid "configuring, end, manually"
+msgstr "na configuração, no final, manualmente"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid "Automatic restart of Zope instances:"
+msgstr "Reinício automático de instâncias do Zope:"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+"Zope has an extensible, modular structure that allows you to easily add "
+"extra components (products) or features. Each product or feature can usually "
+"be found in packages whose name starts with a 'zope-' prefix. Unfortunately, "
+"each Zope instance needs to be restarted to use any new add-on. Here you can "
+"choose the default behaviour of Zope instances in any installed Zope version "
+"when Zope needs to be restarted. Each instance, however, is allowed to "
+"overwrite this setting:"
+msgstr ""
+"O Zope possui uma estrutura extensível e orientada a objectos que lhe "
+"permite facilmente adicionar componentes extra (produtos) ou "
+"funcionalidades. Cada produto ou funcionalidade pode normalmente ser "
+"encontrada em pacotes cujos nomes começam pelo prefixo `zope-'. Infelizmente "
+"o Zope precisa de reiniciar para os usar. Aqui pode escolher o modo por "
+"omissão das instâncias do Zope em qualquer versão instalada do Zope quando o "
+"mesmo precisa de ser reiniciado. Cada instância, no entanto, está autorizada "
+"a sobre-escrever esta definição:"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+" * configuring: restart instances after each product configuration.\n"
+" * end:         restart instances only once at the end of the whole\n"
+"                installation/upgrading process.\n"
+" * manually:    no restart, it is your responsibility to restart\n"
+"                Zope instances."
+msgstr ""
+" * na configuração: reiniciar instâncias depois de cada configuração do "
+"produto.\n"
+" * no final:     reiniciar instâncias apenas uma vez no final de todo o "
+"processo\n"
+"             de instalação/actualização.\n"
+" * manualmente: sem reiniciar, é da sua responsabilidade as instâncias do "
+"Zope."
+
+#. Type: select
+#. Choices
+#: ../templates:2001
+msgid "abort, remove and continue"
+msgstr "abortar, remover e continuar"
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid "Found an old/incomplete zope instance '${instance}':"
+msgstr "Encontrada uma instância antiga/incompleta do Zope '${instance}':"
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid ""
+"Found an old/incomplete ${instance} instance in /var/lib/zope${zver}/"
+"instance/${instance}. No data file Data.fs was found for the instance, "
+"meaning that the installation was not completed for some reason, or the "
+"installation was incompletely removed. Aborting the installation will allow "
+"you to inspect the state of the instance, continuing will remove /var/lib/"
+"zope${zver}/instance/${instance} and reinstall the ${instance}. Existing "
+"logfiles in /var/log/zope${zver}/${instance} and configuration files in /etc/"
+"zope${zver}/${instance} are preserved."
+msgstr ""
+"Foi encontrada uma instância antiga/incompleta em /var/lib/zope${zver}/"
+"instance/${instance}. Não existe ficheiro de data Data.fs para a instância "
+"significando que a instalação por alguma razão não foi completada, ou a "
+"instalação foi incompletamente removida. Abortar a instalação permitir-lhe-á "
+"inspeccionar o estado da instância, continuar irá remover /var/lib/zope"
+"${zver}/instance/${instance} e reinstalar a ${instance}.·Os ficheiros de "
+"relatório existentes em /var/log/zope${zver}/${instance}·e os ficheiros de "
+"configuração em /etc/zope${zver}/${instance}estão preservados."
+
+#. Type: boolean
+#. Description
+#: ../templates:3001
+msgid "Keep data for ${instance} on package purge?"
+msgstr "Manter a data para ${instance} quando se apagar o pacote?"
+
+#. Type: boolean
+#. Description
+#: ../templates:3001
+msgid ""
+"Purging the data files of a zope instance on package purge results in loss "
+"of all data of the zope instance. The data files for this instance are "
+"stored in /var/lib/zope${zver}/instance/${instance}."
+msgstr ""
+"Apagar os ficheiros de data de uma instância zope durante a remover do "
+"pacote resulta na perda de toda a data da instância zope. Os ficheiros de "
+"data para esta instância estão guardados em /var/lib/zope${zver}/instance/"
+"${instance}."
+
+#. Type: string
+#. Description
+#: ../templates:4001
+msgid "Admin user for zope instance '${instance}':"
+msgstr "Utilizador admin para a instância zope '${instance}':"
+
+#. Type: string
+#. Description
+#: ../templates:4001
+msgid ""
+"Please enter an admin user for the zope instance '${instance}'. A valid user "
+"name starts with a letter, followed by letters and digits."
+msgstr ""
+"Por favor introduza um utilizador admin para a instância zope '${instance}'. "
+"Um nome válido de utilizador começa por uma letra, seguido por letras e "
+"dígitos."
+
+#. Type: string
+#. Description
+#. Type: password
+#. Description
+#. Type: password
+#. Description
+#: ../templates:4001 ../templates:5001 ../templates:6001
+msgid ""
+"NOTE: Once the instance has been created, the parameter entered here isn't "
+"relevant anymore.  To change the admin user (and password) later on, call:"
+msgstr ""
+"NOTE: Assim que uma instância tiver sido criada, o parâmetro introduzido "
+"aqui não será mais relevante.  Para alterar a conta de admin ( e palavra-"
+"chave) mais tarde, chame:"
+
+#. Type: string
+#. Description
+#. Type: password
+#. Description
+#. Type: password
+#. Description
+#: ../templates:4001 ../templates:5001 ../templates:6001
+msgid ""
+"/var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser <user> "
+"<password>"
+msgstr ""
+"/var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser <utilizador> "
+"<palavra-chave>"
+
+#. Type: password
+#. Description
+#: ../templates:5001
+msgid "Password for the admin user:"
+msgstr "Palavra-chave para o utilizador admin:"
+
+#. Type: password
+#. Description
+#: ../templates:5001
+msgid ""
+"Please enter a password for the admin user. The password must not be empty. "
+"The password is deleted from the configuration database, once the instance "
+"is sucessfully created and cannot be recoverd."
+msgstr ""
+"Por favor introduza a palavra-chave para o utilizador admin. A palavra-chave "
+"não deverá ser vazia. A palavra-chave é apagada a partir da base de dados da "
+"configuração, assim que a instância seja instalada com sucesso e não pode "
+"ser recuperada."
+
+#. Type: password
+#. Description
+#: ../templates:6001
+msgid "Same password:"
+msgstr "Mesma palavra-chave:"
+
+#. Type: password
+#. Description
+#: ../templates:6001
+msgid "Please enter again the password for the admin user."
+msgstr "Por favor introduza novamente a palavra-chave para o utilizador admin."
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid "HTTP port for this instance:"
+msgstr "Porta HTTP para esta instância:"
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid "Please enter the HTTP port for the instance ${instance}."
+msgstr "Por favor introduza a porta HTTP para a instância ${instance}."
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid ""
+"Other services (e.g. FTP, WebDAV, debug) will be disabled by default. You "
+"can enable them editing /etc/zope${zver}/${instance}/zope.conf."
+msgstr ""
+"Outros serviços (e.g. FTP, WebDAV, depuramento) serão desactivados por "
+"omissão. Poderá activá-los ao editar /etc/zope${zver}/${instance}/zope.conf."
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid "Automatically generated user and password for your instance"
+msgstr "Criação automática do utilizador e palavra-chave para a sua instância"
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid ""
+"You haven't provided a user and a password for your instance, so these  "
+"values have been automatically generated."
+msgstr ""
+"Não forneceu um utilizador e palavra-chave para a sua instância, assim estes "
+"valores foram automaticamente criados."
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid "Use these values to log into the Zope${zver} instance ${instance}:"
+msgstr ""
+"Utilize estes valores para entrar na instância ${instance} do Zope${zver}:"
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid ""
+" * User     : ${user}\n"
+" * Password : ${password}"
+msgstr ""
+" * Utilizador     : ${user}\n"
+" * Palavra-chave : ${password}"

Added: zope-common/tags/0.5.31/debian/po/pt_BR.po
===================================================================
--- zope-common/tags/0.5.31/debian/po/pt_BR.po	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/po/pt_BR.po	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,264 @@
+#
+#    Translators, if you are not familiar with the PO format, gettext
+#    documentation is worth reading, especially sections dedicated to
+#    this format, e.g. by running:
+#         info -n '(gettext)PO Files'
+#         info -n '(gettext)Header Entry'
+#
+#    Some information specific to po-debconf are available at
+#            /usr/share/doc/po-debconf/README-trans
+#         or http://www.debian.org/intl/l10n/po-debconf/README-trans
+#
+#    Developers do not need to manually edit POT or PO files.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: zope\n"
+"Report-Msgid-Bugs-To: pkg-zope-developers at lists.alioth.debian.org\n"
+"POT-Creation-Date: 2006-11-02 15:47+0100\n"
+"PO-Revision-Date: 2005-03-30 12:14-0300\n"
+"Last-Translator: Tiago Bortoletto Vaz <tiago at debian-ba.org>\n"
+"Language-Team: Debian-BR Project <debian-l10n-portuguese at lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#: ../templates:1001
+msgid "configuring, end, manually"
+msgstr "configurando, final, manualmente"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid "Automatic restart of Zope instances:"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+"Zope has an extensible, modular structure that allows you to easily add "
+"extra components (products) or features. Each product or feature can usually "
+"be found in packages whose name starts with a 'zope-' prefix. Unfortunately, "
+"each Zope instance needs to be restarted to use any new add-on. Here you can "
+"choose the default behaviour of Zope instances in any installed Zope version "
+"when Zope needs to be restarted. Each instance, however, is allowed to "
+"overwrite this setting:"
+msgstr ""
+"O Zope tem uma estrutura extensível e modular que permite que você adicione "
+"facilmente componentes (products) ou extensões (features). Cada componente "
+"ou extensão podem geralmente ser encontrados em pacotes em que seus nomes "
+"começam com um prefixo '-zope'. Infezlimente, cada instância Zope precisa "
+"ser reiniciada para utilizar qualquer novo recurso (add-on). Aqui você pode "
+"escolher o comportamento padrão das instâncias Zope em qualquer versão do "
+"Zope instalada quando o Zope precisar ser reiniciado."
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+" * configuring: restart instances after each product configuration.\n"
+" * end:         restart instances only once at the end of the whole\n"
+"                installation/upgrading process.\n"
+" * manually:    no restart, it is your responsibility to restart\n"
+"                Zope instances."
+msgstr ""
+" * configurando: reinicia as instâncias após cada configuração de\n"
+"                 um novo componente ou extensão.\n"
+" * final:        reinicia as instâncias somente no final de todo o\n"
+"                 processo de instalação/configuração.\n"
+" * manualmente:  não reinicia, a responsabilidade de reiniciar as\n"
+"                 as instâncias do Zope é sua."
+
+#. Type: select
+#. Choices
+#: ../templates:2001
+msgid "abort, remove and continue"
+msgstr "abortar, remover e continuar"
+
+#. Type: select
+#. Description
+#: ../templates:2002
+#, fuzzy
+msgid "Found an old/incomplete zope instance '${instance}':"
+msgstr "Encontrada instância antiga/incompleta '${instance}'"
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid ""
+"Found an old/incomplete ${instance} instance in /var/lib/zope${zver}/"
+"instance/${instance}. No data file Data.fs was found for the instance, "
+"meaning that the installation was not completed for some reason, or the "
+"installation was incompletely removed. Aborting the installation will allow "
+"you to inspect the state of the instance, continuing will remove /var/lib/"
+"zope${zver}/instance/${instance} and reinstall the ${instance}. Existing "
+"logfiles in /var/log/zope${zver}/${instance} and configuration files in /etc/"
+"zope${zver}/${instance} are preserved."
+msgstr ""
+"Foi encontrada uma antiga/incompleta instância ${instance} em /var/lib/zope"
+"${zver}/instance/${instance}. O arquivo de dados Data.fs não foi encontrado "
+"para esta instância, significando que a instalação não foi completada por "
+"alguma razão, ou a instalação foi removida de forma incompleta. Ao abortar a "
+"instalação será permitido que você verifique o estado da instância, "
+"continuando a instalação implicará na remoção de /var/lib/zope${zver}/"
+"instance/${instance} e na reinstalação de ${instance}. Caso existam arquivos "
+"de log em /var/log/zope${zver}/${instance} e arquivos de configuração em /"
+"etc/zope${zver}/${instance}, estes serão preservados."
+
+#. Type: boolean
+#. Description
+#: ../templates:3001
+#, fuzzy
+msgid "Keep data for ${instance} on package purge?"
+msgstr ""
+"Remover os dados de ${instance} na remoção do pacote com opção 'purge'?"
+
+#. Type: boolean
+#. Description
+#: ../templates:3001
+#, fuzzy
+msgid ""
+"Purging the data files of a zope instance on package purge results in loss "
+"of all data of the zope instance. The data files for this instance are "
+"stored in /var/lib/zope${zver}/instance/${instance}."
+msgstr ""
+"Ao remover arquivos de dados de uma instância na remoção de um pacote com a "
+"opção 'purge' todos os dados desta instância serão perdidos. Deixar os "
+"arquivos de dados em /var/lib/zope${zver}/instance/${instance} na remoção e "
+"na limpeza (purge) do pacote?"
+
+#. Type: string
+#. Description
+#: ../templates:4001
+#, fuzzy
+msgid "Admin user for zope instance '${instance}':"
+msgstr "Entre com o usuário de administração para a instância '${instance}':"
+
+#. Type: string
+#. Description
+#: ../templates:4001
+msgid ""
+"Please enter an admin user for the zope instance '${instance}'. A valid user "
+"name starts with a letter, followed by letters and digits."
+msgstr ""
+"Por favor entre com um usuário de administração para a instância "
+"'${instance}'. Um nome de usuário válido começa com uma letra, seguida de "
+"letras e dígitos."
+
+#. Type: string
+#. Description
+#. Type: password
+#. Description
+#. Type: password
+#. Description
+#: ../templates:4001 ../templates:5001 ../templates:6001
+msgid ""
+"NOTE: Once the instance has been created, the parameter entered here isn't "
+"relevant anymore.  To change the admin user (and password) later on, call:"
+msgstr ""
+"NOTA: a partir do momento em que a instância é criada, o parâmetro entrado "
+"aqui não será mais relevante. Para mudar o usuário de administração (e sua "
+"senha) posteriormente, use:"
+
+#. Type: string
+#. Description
+#. Type: password
+#. Description
+#. Type: password
+#. Description
+#: ../templates:4001 ../templates:5001 ../templates:6001
+msgid ""
+"/var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser <user> "
+"<password>"
+msgstr ""
+"/var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser <usuario> "
+"<senha>"
+
+#. Type: password
+#. Description
+#: ../templates:5001
+#, fuzzy
+msgid "Password for the admin user:"
+msgstr "Entre com uma senha para o administrador:"
+
+#. Type: password
+#. Description
+#: ../templates:5001
+msgid ""
+"Please enter a password for the admin user. The password must not be empty. "
+"The password is deleted from the configuration database, once the instance "
+"is sucessfully created and cannot be recoverd."
+msgstr ""
+"Por favor entre com a senha para o usuário de administração. A senha não "
+"pode ser vazia. Ela será deletada da base de dados de configuração, logo que "
+"a instância for criada com sucesso e poderá ser recuperada."
+
+#. Type: password
+#. Description
+#: ../templates:6001
+msgid "Same password:"
+msgstr ""
+
+#. Type: password
+#. Description
+#: ../templates:6001
+msgid "Please enter again the password for the admin user."
+msgstr ""
+"Por favor entre novamente com a senha para o usuário de administração. "
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid "HTTP port for this instance:"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid "Please enter the HTTP port for the instance ${instance}."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid ""
+"Other services (e.g. FTP, WebDAV, debug) will be disabled by default. You "
+"can enable them editing /etc/zope${zver}/${instance}/zope.conf."
+msgstr ""
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid "Automatically generated user and password for your instance"
+msgstr ""
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid ""
+"You haven't provided a user and a password for your instance, so these  "
+"values have been automatically generated."
+msgstr ""
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid "Use these values to log into the Zope${zver} instance ${instance}:"
+msgstr ""
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid ""
+" * User     : ${user}\n"
+" * Password : ${password}"
+msgstr ""
+
+#~ msgid "When will Zope instances be restarted?"
+#~ msgstr "Quando as instâncias do Zope serão reiniciadas?"
+
+#~ msgid "Enter again the same password:"
+#~ msgstr "Repita a senha:"

Added: zope-common/tags/0.5.31/debian/po/sv.po
===================================================================
--- zope-common/tags/0.5.31/debian/po/sv.po	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/po/sv.po	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,199 @@
+# Translators, if you are not familiar with the PO format, gettext
+# documentation is worth reading, especially sections dedicated to
+# this format, e.g. by running:
+# info -n '(gettext)PO Files'
+# info -n '(gettext)Header Entry'
+# Some information specific to po-debconf are available at
+# /usr/share/doc/po-debconf/README-trans
+# or http://www.debian.org/intl/l10n/po-debconf/README-trans
+# Developers do not need to manually edit POT or PO files.
+# , fuzzy
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: zope-common\n"
+"Report-Msgid-Bugs-To: pkg-zope-developers at lists.alioth.debian.org\n"
+"POT-Creation-Date: 2006-11-02 15:47+0100\n"
+"PO-Revision-Date: 2006-11-02 16:23+0100\n"
+"Last-Translator: Daniel Nylander <po at danielnylander.se>\n"
+"Language-Team: Swedish <tp-sv at listor.tp-sv.se>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#: ../templates:1001
+msgid "configuring, end, manually"
+msgstr "konfigurering, efteråt, manuellt"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid "Automatic restart of Zope instances:"
+msgstr "Automatisk omstart av Zope-instanser:"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid "Zope has an extensible, modular structure that allows you to easily add extra components (products) or features. Each product or feature can usually be found in packages whose name starts with a 'zope-' prefix. Unfortunately, each Zope instance needs to be restarted to use any new add-on. Here you can choose the default behaviour of Zope instances in any installed Zope version when Zope needs to be restarted. Each instance, however, is allowed to overwrite this setting:"
+msgstr "Zope har en omfattande, objektorienterad struktur som enkelt låter dig lägga till extra komponenter (produkter) eller funktioner. Varje produkt eller funktion kan normalt sett hittas i paket vars namn startar med \"zope-\". Tyvärr behöver Zope startas om för att använda alla nya tillägg. Här kan du välja standarduppträdandet för Zopes instanser i alla installerade Zope-versioner när Zope behöver startas om. Varje instans tillåts dock att skriva över denna inställning:"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+" * configuring: restart instances after each product configuration.\n"
+" * end:         restart instances only once at the end of the whole\n"
+"                installation/upgrading process.\n"
+" * manually:    no restart, it is your responsibility to restart\n"
+"                Zope instances."
+msgstr ""
+" * konfigurering: varje produkt kommer att starta om Zope under\n"
+"                konfigureringen.\n"
+" * efteråt: Zope kommer att starta om en gång vid slutet av hela\n"
+"                installation/uppgraderingsprocessen.\n"
+" * manuellt: ingen omstart. Du måste själv starta om Zope-instanser."
+
+#. Type: select
+#. Choices
+#: ../templates:2001
+msgid "abort, remove and continue"
+msgstr "avbryt, ta bort och fortsätt"
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid "Found an old/incomplete zope instance '${instance}':"
+msgstr "Hittade en gammal/ofullständig Zope-instans \"${instance}\":"
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid "Found an old/incomplete ${instance} instance in /var/lib/zope${zver}/instance/${instance}. No data file Data.fs was found for the instance, meaning that the installation was not completed for some reason, or the installation was incompletely removed. Aborting the installation will allow you to inspect the state of the instance, continuing will remove /var/lib/zope${zver}/instance/${instance} and reinstall the ${instance}. Existing logfiles in /var/log/zope${zver}/${instance} and configuration files in /etc/zope${zver}/${instance} are preserved."
+msgstr "Hittade en gammal/ofullständig instans kallad ${instance} i /var/lib/zope${zver}/instance/${instance}. Ingen datafil, Data.fs, hittades för instansen vilket betyder att installationen inte färdigställdes av någon anledning eller att installationen inte togs bort fullständigt. Avbryta installationen ger dig möjlighet att inspektera instansen, fortsätter du kommer /var/lib/zope${zver}/instance/${instance} att tas bort och installera om ${instance}. Befintliga loggfiler i  /var/log/zope${zver}/${instance} och konfigurationsfiler i /etc/zope${zver}/${instance} kommer att behållas."
+
+#. Type: boolean
+#. Description
+#: ../templates:3001
+msgid "Keep data for ${instance} on package purge?"
+msgstr "Behåll data för ${instance} vid avinstallation av paketet?"
+
+#. Type: boolean
+#. Description
+#: ../templates:3001
+msgid "Purging the data files of a zope instance on package purge results in loss of all data of the zope instance. The data files for this instance are stored in /var/lib/zope${zver}/instance/${instance}."
+msgstr "Utrensning av datafiler vid avinstallation i en zope-instans resulterar i att all data i instansen går förlorad. Datafilerna för den här instansen lagras i /var/lib/zope${zver}/instance/${instance}."
+
+#. Type: string
+#. Description
+#: ../templates:4001
+msgid "Admin user for zope instance '${instance}':"
+msgstr "Administratörsanvändare för Zope-instansen \"${instance}\":"
+
+#. Type: string
+#. Description
+#: ../templates:4001
+msgid "Please enter an admin user for the zope instance '${instance}'. A valid user name starts with a letter, followed by letters and digits."
+msgstr "Ange en administrationsanvändare för zope-instansen  \"${instance}\". Ett giltigt användarnamn börjar med en bokstav följt av bokstäver och siffror."
+
+#. Type: string
+#. Description
+#. Type: password
+#. Description
+#. Type: password
+#. Description
+#: ../templates:4001
+#: ../templates:5001
+#: ../templates:6001
+msgid "NOTE: Once the instance has been created, the parameter entered here isn't relevant anymore.  To change the admin user (and password) later on, call:"
+msgstr "OBSERVERA: När instansen har skapats är parametern som skrivs in här inte relevant längre.  För att ändra administratörsanvändaren (och lösenord) senare, kör:"
+
+#. Type: string
+#. Description
+#. Type: password
+#. Description
+#. Type: password
+#. Description
+#: ../templates:4001
+#: ../templates:5001
+#: ../templates:6001
+msgid "/var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser <user> <password>"
+msgstr "/var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser <användare> <lösenord>"
+
+#. Type: password
+#. Description
+#: ../templates:5001
+msgid "Password for the admin user:"
+msgstr "Lösenord för administrationsanvändaren:"
+
+#. Type: password
+#. Description
+#: ../templates:5001
+msgid "Please enter a password for the admin user. The password must not be empty. The password is deleted from the configuration database, once the instance is sucessfully created and cannot be recoverd."
+msgstr "Ange ett lösenord för administrationsanvändaren. Lösenordet får inte vara blankt. Lösenordet raderas från konfigurationsdatabasen så fort instansen har skapats och kan därefter inte återskapas."
+
+#. Type: password
+#. Description
+#: ../templates:6001
+msgid "Same password:"
+msgstr "Samma lösenord igen:"
+
+#. Type: password
+#. Description
+#: ../templates:6001
+msgid "Please enter again the password for the admin user."
+msgstr "Ange lösenordet för administratörsanvändaren igen."
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid "HTTP port for this instance:"
+msgstr "HTTP-port för denna instans:"
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid "Please enter the HTTP port for the instance ${instance}."
+msgstr "Ange HTTP-porten för instansen ${instance}."
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid "Other services (e.g. FTP, WebDAV, debug) will be disabled by default. You can enable them editing /etc/zope${zver}/${instance}/zope.conf."
+msgstr "Andra tjänster (såsom FTP, WebDAV, debug) kommer att vara inaktiverade som standard. Du kan aktivera dem genom att redigera /etc/zope${zver}/${instance}/zope.conf."
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid "Automatically generated user and password for your instance"
+msgstr "Automatiskt genererad användare och lösenord för din instans"
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid "You haven't provided a user and a password for your instance, so these  values have been automatically generated."
+msgstr "Du har inte valt en användare och ett lösenord för din instans, därför kommer dessa värden att genereras automatiskt."
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid "Use these values to log into the Zope${zver} instance ${instance}:"
+msgstr "Använd dessa värden för att logga in i Zope${zver}-instansen ${instance}:"
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid ""
+" * User     : ${user}\n"
+" * Password : ${password}"
+msgstr ""
+" * Användare : ${user}\n"
+" * Lösenord   : ${password}"
+
+#~ msgid "When will Zope instances be restarted?"
+#~ msgstr "När vill du starta om Zope's instanser?"
+#~ msgid "Enter again the same password:"
+#~ msgstr "Ange samma lösenord igen:"
+

Added: zope-common/tags/0.5.31/debian/po/templates.pot
===================================================================
--- zope-common/tags/0.5.31/debian/po/templates.pot	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/po/templates.pot	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,207 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: pkg-zope-developers at lists.alioth.debian.org\n"
+"POT-Creation-Date: 2006-11-02 15:47+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Type: select
+#. Choices
+#: ../templates:1001
+msgid "configuring, end, manually"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid "Automatic restart of Zope instances:"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+"Zope has an extensible, modular structure that allows you to easily add "
+"extra components (products) or features. Each product or feature can usually "
+"be found in packages whose name starts with a 'zope-' prefix. Unfortunately, "
+"each Zope instance needs to be restarted to use any new add-on. Here you can "
+"choose the default behaviour of Zope instances in any installed Zope version "
+"when Zope needs to be restarted. Each instance, however, is allowed to "
+"overwrite this setting:"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+" * configuring: restart instances after each product configuration.\n"
+" * end:         restart instances only once at the end of the whole\n"
+"                installation/upgrading process.\n"
+" * manually:    no restart, it is your responsibility to restart\n"
+"                Zope instances."
+msgstr ""
+
+#. Type: select
+#. Choices
+#: ../templates:2001
+msgid "abort, remove and continue"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid "Found an old/incomplete zope instance '${instance}':"
+msgstr ""
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid ""
+"Found an old/incomplete ${instance} instance in /var/lib/zope${zver}/"
+"instance/${instance}. No data file Data.fs was found for the instance, "
+"meaning that the installation was not completed for some reason, or the "
+"installation was incompletely removed. Aborting the installation will allow "
+"you to inspect the state of the instance, continuing will remove /var/lib/"
+"zope${zver}/instance/${instance} and reinstall the ${instance}. Existing "
+"logfiles in /var/log/zope${zver}/${instance} and configuration files in /etc/"
+"zope${zver}/${instance} are preserved."
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:3001
+msgid "Keep data for ${instance} on package purge?"
+msgstr ""
+
+#. Type: boolean
+#. Description
+#: ../templates:3001
+msgid ""
+"Purging the data files of a zope instance on package purge results in loss "
+"of all data of the zope instance. The data files for this instance are "
+"stored in /var/lib/zope${zver}/instance/${instance}."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:4001
+msgid "Admin user for zope instance '${instance}':"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:4001
+msgid ""
+"Please enter an admin user for the zope instance '${instance}'. A valid user "
+"name starts with a letter, followed by letters and digits."
+msgstr ""
+
+#. Type: string
+#. Description
+#. Type: password
+#. Description
+#. Type: password
+#. Description
+#: ../templates:4001 ../templates:5001 ../templates:6001
+msgid ""
+"NOTE: Once the instance has been created, the parameter entered here isn't "
+"relevant anymore.  To change the admin user (and password) later on, call:"
+msgstr ""
+
+#. Type: string
+#. Description
+#. Type: password
+#. Description
+#. Type: password
+#. Description
+#: ../templates:4001 ../templates:5001 ../templates:6001
+msgid ""
+"/var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser <user> "
+"<password>"
+msgstr ""
+
+#. Type: password
+#. Description
+#: ../templates:5001
+msgid "Password for the admin user:"
+msgstr ""
+
+#. Type: password
+#. Description
+#: ../templates:5001
+msgid ""
+"Please enter a password for the admin user. The password must not be empty. "
+"The password is deleted from the configuration database, once the instance "
+"is sucessfully created and cannot be recoverd."
+msgstr ""
+
+#. Type: password
+#. Description
+#: ../templates:6001
+msgid "Same password:"
+msgstr ""
+
+#. Type: password
+#. Description
+#: ../templates:6001
+msgid "Please enter again the password for the admin user."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid "HTTP port for this instance:"
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid "Please enter the HTTP port for the instance ${instance}."
+msgstr ""
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid ""
+"Other services (e.g. FTP, WebDAV, debug) will be disabled by default. You "
+"can enable them editing /etc/zope${zver}/${instance}/zope.conf."
+msgstr ""
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid "Automatically generated user and password for your instance"
+msgstr ""
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid ""
+"You haven't provided a user and a password for your instance, so these  "
+"values have been automatically generated."
+msgstr ""
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid "Use these values to log into the Zope${zver} instance ${instance}:"
+msgstr ""
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid ""
+" * User     : ${user}\n"
+" * Password : ${password}"
+msgstr ""

Added: zope-common/tags/0.5.31/debian/po/vi.po
===================================================================
--- zope-common/tags/0.5.31/debian/po/vi.po	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/po/vi.po	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,311 @@
+# Vietnamese translation for Zope-common.
+# Copyright © 2006 Free Software Foundation, Inc.
+# Clytie Siddall <clytie at riverland.net.au>, 2005-2006.
+# 
+msgid ""
+msgstr ""
+"Project-Id-Version: zope-common 0.5.26\n"
+"Report-Msgid-Bugs-To: pkg-zope-developers at lists.alioth.debian.org\n"
+"POT-Creation-Date: 2006-11-02 15:47+0100\n"
+"PO-Revision-Date: 2006-12-17 21:15+1030\n"
+"Last-Translator: Clytie Siddall <clytie at riverland.net.au>\n"
+"Language-Team: Vietnamese <vi-VN at googlegroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Mac PO Editor 1.0a10\n"
+
+#. Type: select
+#. Choices
+#: ../templates:1001
+msgid "configuring, end, manually"
+msgstr "cấu hình, kết thức, bằng tay"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid "Automatic restart of Zope instances:"
+msgstr "Tự động khởi chạy lại các tiến trình Zope:"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+"Zope has an extensible, modular structure that allows you to easily add "
+"extra components (products) or features. Each product or feature can usually "
+"be found in packages whose name starts with a 'zope-' prefix. Unfortunately, "
+"each Zope instance needs to be restarted to use any new add-on. Here you can "
+"choose the default behaviour of Zope instances in any installed Zope version "
+"when Zope needs to be restarted. Each instance, however, is allowed to "
+"overwrite this setting:"
+msgstr ""
+"Phần mềm Zope có cấu trúc đơn thể có thể mở rộng mà cho bạn có khả năng thêm "
+"dễ dàng những thành phần (sản phẩm) hay tính năng bổ sung. Mỗi sản phẩm hay "
+"tính năng thường nằm trong gói có tên bắt đầu với « zope- ». Tiếc là mỗi "
+"tiến trình Zope cần phải được khởi chạy lại để thực hiện bổ sung mới. Ở đây "
+"bạn có thể chọn ứng xử mặc định của các tiến trình Zope trong bất cứ phiên "
+"bản Zope đã cài đặt nào khi Zope cần phải được khởi chạy lại. Mỗi tiến trình "
+"riêng vẫn có khả năng ghi đè lên thiết lập này:"
+
+#. Type: select
+#. Description
+#: ../templates:1002
+msgid ""
+" * configuring: restart instances after each product configuration.\n"
+" * end:         restart instances only once at the end of the whole\n"
+"                installation/upgrading process.\n"
+" * manually:    no restart, it is your responsibility to restart\n"
+"                Zope instances."
+msgstr ""
+" • cấu hình\tkhởi chạy các tiến trình sau mỗi lần cấu hình sản phẩm\n"
+" • kết thúc\tkhởi chạy các tiến trình chỉ một lần ở cuối toàn bộ\n"
+"\t\t\t\tthủ tục cài đặt/nâng cấp\n"
+" • bằng tay\tkhông khởi chạy lại: bạn cần phải tự khởi chạy tiến trình Zope "
+"nào."
+
+#. Type: select
+#. Choices
+#: ../templates:2001
+msgid "abort, remove and continue"
+msgstr "hủy bỏ, gỡ bỏ và tiếp tục"
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid "Found an old/incomplete zope instance '${instance}':"
+msgstr "Tìm thấy một tiến trình Zope cũ/không hoàn thành « ${instance} »:"
+
+#. Type: select
+#. Description
+#: ../templates:2002
+msgid ""
+"Found an old/incomplete ${instance} instance in /var/lib/zope${zver}/"
+"instance/${instance}. No data file Data.fs was found for the instance, "
+"meaning that the installation was not completed for some reason, or the "
+"installation was incompletely removed. Aborting the installation will allow "
+"you to inspect the state of the instance, continuing will remove /var/lib/"
+"zope${zver}/instance/${instance} and reinstall the ${instance}. Existing "
+"logfiles in /var/log/zope${zver}/${instance} and configuration files in /etc/"
+"zope${zver}/${instance} are preserved."
+msgstr ""
+"Tìm thấy một tiến trình cũ/không hoàn thành « ${instance} » trong thư mục « /"
+"var/lib/zope${zver}/instance/${instance} ». Không tìm thấy tập tin dữ liệu « "
+"Data.fs » nào cho tiến trình này thì thủ tục cài đặt chưa được chạy xong vì "
+"lý do nào, hoặc bản cài đặt đã bị gỡ bỏ hoàn toàn. Việc hủy bỏ tiến trình "
+"cài đặt này sẽ cho bạn có khả năng xem lại tình trạng của tiến trình đó ; "
+"việc tiếp tục sẽ gỡ bỏ tập tin « /var/lib/zope${zver}/instance/${instance} » "
+"và cài đặt lại « ${instance} ».  Cũng bảo tồn các tập tin bản ghi nằm trong "
+"« /var/log/zope${zver}/${instance} » và các tập tin cấu hình nằm trong « /"
+"etc/zope${zver}/${instance} »."
+
+#. Type: boolean
+#. Description
+#: ../templates:3001
+msgid "Keep data for ${instance} on package purge?"
+msgstr "Giữ dữ liệu cho « ${instance} » khi tẩy gói không?"
+
+#. Type: boolean
+#. Description
+#: ../templates:3001
+msgid ""
+"Purging the data files of a zope instance on package purge results in loss "
+"of all data of the zope instance. The data files for this instance are "
+"stored in /var/lib/zope${zver}/instance/${instance}."
+msgstr ""
+"Việc tẩy các tập tin dữ liệu của tiến trình Zope khi tẩy gói cũng gây ra mọi "
+"dữ liệu của tiến trình Zope bị mất. Những tập tin dữ liệu cho tiến trình "
+"Zope này nằm trong « /var/lib/zope${zver}/instance/${instance} »."
+
+#. Type: string
+#. Description
+#: ../templates:4001
+msgid "Admin user for zope instance '${instance}':"
+msgstr "Người dùng quản trị cho tiến trình Zope « ${instance} »:"
+
+#. Type: string
+#. Description
+#: ../templates:4001
+msgid ""
+"Please enter an admin user for the zope instance '${instance}'. A valid user "
+"name starts with a letter, followed by letters and digits."
+msgstr ""
+"Hãy nhập một người dùng quản lý cho thể hiện Zope « default » (mặc định). "
+"Một tên người dùng hợp lệ bắt đầu với một chữ, với các chữ và số đều theo "
+"sau."
+
+#. Type: string
+#. Description
+#. Type: password
+#. Description
+#. Type: password
+#. Description
+#: ../templates:4001 ../templates:5001 ../templates:6001
+msgid ""
+"NOTE: Once the instance has been created, the parameter entered here isn't "
+"relevant anymore.  To change the admin user (and password) later on, call:"
+msgstr ""
+"GHI CHÚ : một khi tiến trình được tạo, tham số được nhập vào đây không còn "
+"thích hợp lại. Để thay đổi người dùng (và mật khẩu) quản trị vào lúc sao, "
+"hãy gọi lệnh:"
+
+#. Type: string
+#. Description
+#. Type: password
+#. Description
+#. Type: password
+#. Description
+#: ../templates:4001 ../templates:5001 ../templates:6001
+msgid ""
+"/var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser <user> "
+"<password>"
+msgstr ""
+"/var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser "
+"<tên_người_dùng> <mật_khẩu>"
+
+#. Type: password
+#. Description
+#: ../templates:5001
+msgid "Password for the admin user:"
+msgstr "Mật khẩu cho người dùng quản trị:"
+
+#. Type: password
+#. Description
+#: ../templates:5001
+msgid ""
+"Please enter a password for the admin user. The password must not be empty. "
+"The password is deleted from the configuration database, once the instance "
+"is sucessfully created and cannot be recoverd."
+msgstr ""
+"Hãy nhập mật khẩu cho người dùng quản trị. Không cho phép mật khẩu trống. "
+"Một khi thể hiện được tạo, mật khẩu được xoá khỏi co sở dữ liệu cấu hình: "
+"không thể phục hồi nữa thôi."
+
+#. Type: password
+#. Description
+#: ../templates:6001
+msgid "Same password:"
+msgstr "Mật khẩu trùng:"
+
+#. Type: password
+#. Description
+#: ../templates:6001
+msgid "Please enter again the password for the admin user."
+msgstr "Hãy gõ lại mật khẩu cho người dùng quản trị."
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid "HTTP port for this instance:"
+msgstr "Cổng HTTP cho thể hiện này:"
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid "Please enter the HTTP port for the instance ${instance}."
+msgstr "Hãy gõ lại số hiệu cổng HTTP cho thể hiện « ${instance} »."
+
+#. Type: string
+#. Description
+#: ../templates:7001
+msgid ""
+"Other services (e.g. FTP, WebDAV, debug) will be disabled by default. You "
+"can enable them editing /etc/zope${zver}/${instance}/zope.conf."
+msgstr ""
+"Các dịch vụ khác (v.d. FTP, WebDAV, gỡ lỗi) sẽ bị tắt theo mặc định. Bạn vẫn "
+"có khả năng bật lại bằng cách chỉnh sửa tập tin cấu hình « /etc/zope${zver}/"
+"${instance}/zope.conf »."
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid "Automatically generated user and password for your instance"
+msgstr "Người dùng và mật khẩu tự động được tạo ra cho thể hiện của bạn"
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid ""
+"You haven't provided a user and a password for your instance, so these  "
+"values have been automatically generated."
+msgstr ""
+"Bạn chưa cung cấp người dùng và mật khẩu cho thể hiện nên những giá trị này "
+"đã được tạo ra một cách tự động."
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid "Use these values to log into the Zope${zver} instance ${instance}:"
+msgstr ""
+"Hãy dùng những giá trị này để đăng nhập vào thể hiện Zope${zver} « "
+"${instance} »:"
+
+#. Type: note
+#. Description
+#: ../templates:8001
+msgid ""
+" * User     : ${user}\n"
+" * Password : ${password}"
+msgstr ""
+" • Người dùng     : ${user}\n"
+" • Mật khẩu : ${password}"
+
+#~ msgid "Enter again the same password:"
+#~ msgstr "Hãy gõ lại mật khẩu."
+
+#~ msgid "When do you like to restart Zope?"
+#~ msgstr "Khi nào bạn có thích khởi chạy lại trình Zope?"
+
+#~ msgid "Major package changes (Step 1)."
+#~ msgstr "Thay đổi quan trọng về gói (Bước 1)."
+
+#~ msgid ""
+#~ "Zope package version 2.6.1-7 introduced major changes in the package "
+#~ "architecture. Most notable changes are:\n"
+#~ " * New Zope INSTANCE_HOME location.\n"
+#~ " * New Data.fs.in location.\n"
+#~ " * New Zope.cgi location.\n"
+#~ " * Real support for multiple instances of Zope.\n"
+#~ "Please, read README.Debian.gz and zopectl(8) man page after package "
+#~ "installation."
+#~ msgstr ""
+#~ "Gói Zope phiên bản 2.6.1-7 đã giới thiệu một số thay đổi quan trọng về "
+#~ "kiến trúc gói. Nhửng thay đổi cần ghi nhớ nhiều nhất là:\n"
+#~ " •\t\tđịa địểm « INSTANCE_HOME » Zope mới.\n"
+#~ " •\t\tđịa điểm « Data.fs » mới.\n"
+#~ " •\t\tđịa điểm « Zope.cgi » mới.\n"
+#~ " •\t\tsự hỗ trợ thất cho nhiều thể hiện Zope có cháy đồng thời.\n"
+#~ "Xin hãy đọc tập tin Đọc Đi <README.Debian.gz> và trang hướng dẫn (man) « "
+#~ "zopectl(8) » sau khi cài đặt gói này."
+
+#~ msgid "Should i move INSTANCE_HOME to its new location?"
+#~ msgstr ""
+#~ "Bạn có muốn trình này di chuyển « INSTANCE_HOME » sang địa điểm mới của "
+#~ "nó không?"
+
+#~ msgid ""
+#~ "As part of the package changes, Zope default INSTANCE_HOME moved: new "
+#~ "suggested location is /var/lib/zope/instance/default. If you accept here "
+#~ "and /var/lib/zope/instance/default does not already exist, the following "
+#~ "files or directories will be moved:\n"
+#~ " * /var/lib/zope/var\n"
+#~ " * /var/lib/zope/access\n"
+#~ "while:\n"
+#~ " * /var/lib/zope/import\n"
+#~ " * /var/lib/zope/Extensions\n"
+#~ " * /var/lib/zope/Products\n"
+#~ "will only be linked to let the sharing of more Zope components among "
+#~ "different instances."
+#~ msgstr ""
+#~ "Phần của thay đổi gói là « INSTANCE_HOME » (gốc thể hiện) mặc định của "
+#~ "Zope đã thay đổi: đệ nghị địa điểm mới là </var/lib/zope/instance/"
+#~ "default>. Nếu bạn chấp nhận tại đây, và chưa có </var/lib/zope/instance/"
+#~ "default> thì những tập tin hay thư mục theo đây sẽ được di chuyển:\n"
+#~ " •\t\t</var/lib/zope/var>\n"
+#~ " •\t\t</var/lib/zope/access> (truy cập)\n"
+#~ "mà:\n"
+#~ " •\t\t</var/lib/zope/import> (nhập)\n"
+#~ " •\t\t</var/lib/zope/Extensions> (phần mở rộng)\n"
+#~ " •\t\t</var/lib/zope/Products> (sản phẩm)\n"
+#~ "sẽ chỉ được liên kết để cho phép chia sẻ nhiều thành phần Zope hơn ra thể "
+#~ "nhiều hiện khác nhau."

Added: zope-common/tags/0.5.31/debian/postinst
===================================================================
--- zope-common/tags/0.5.31/debian/postinst	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/postinst	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,49 @@
+#! /bin/sh -e
+# postinst script for zope-common
+
+zopeuser=zope
+zopegroup=$zopeuser
+
+. /usr/share/debconf/confmodule
+
+case "$1" in
+    configure)
+        if ! getent group zope > /dev/null 2>&1 ; then
+	    addgroup --system --quiet $zopegroup
+        fi
+        if ! getent passwd zope > /dev/null 2>&1 ; then
+	    adduser --quiet \
+		--system --disabled-login --ingroup $zopegroup \
+                --home /var/lib/zope --no-create-home \
+                $zopeuser
+        fi
+	if [ ! -d /var/lib/zope/dzhandle ]; then
+		mkdir -p /var/lib/zope/dzhandle
+		chown $zopeuse:$zopegroup /var/lib/zope/dzhandle
+	fi
+
+    LOCALDIR=/usr/local/share/zope
+    if [ ! -d $LOCALDIR ]; then
+        if mkdir $LOCALDIR 2>/dev/null ; then
+            mkdir $LOCALDIR/Products
+            chmod 2775 $LOCALDIR -R
+            chown root:$zopegroup $LOCALDIR -R
+        fi
+    fi
+
+	;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+
+    ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+	;;
+esac
+
+#DEBHELPER#
+
+exit 0
+

Added: zope-common/tags/0.5.31/debian/postrm
===================================================================
--- zope-common/tags/0.5.31/debian/postrm	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/postrm	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,59 @@
+#! /bin/sh -e
+# postrm script for zope-common
+#
+# see: dh_installdeb(1)
+
+# summary of how this script can be called:
+#        * <postrm> `remove'
+#        * <postrm> `purge'
+#        * <old-postrm> `upgrade' <new-version>
+#        * <new-postrm> `failed-upgrade' <old-version>
+#        * <new-postrm> `abort-install'
+#        * <new-postrm> `abort-install' <old-version>
+#        * <new-postrm> `abort-upgrade' <old-version>
+#        * <disappearer's-postrm> `disappear' <r>overwrit>r> <new-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+zopeuser=zope
+zopegroup=$zopeuser
+
+case "$1" in
+    purge)
+	# remove zope user and group.
+    #    if getent passwd $zopeuser > /dev/null 2>&1 ; then
+    #        userdel $zopeuser
+    #    fi
+    #    if getent group $zopegroup > /dev/null 2>&1 ; then
+    #        groupdel $zopegroup
+    #    fi
+
+	# remove instance stuff (commented out)
+        #if [ ! -f /var/lib/zope/moved ] ; then
+        #    rm -f /var/lib/zope/var/Data.fs.*
+        #    rm -f /var/lib/zope/access
+        #    # PCGI resuource file should have already been removed.
+        #fi
+
+        rm -rf /var/lib/zope/dzhandle
+
+        LOCALDIR=/usr/local/share/zope
+        rmdir --ignore-fail-on-non-empty $LOCALDIR/Products || true
+        rmdir --ignore-fail-on-non-empty $LOCALDIR || true
+        ;;
+
+    remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+	;;
+
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0

Added: zope-common/tags/0.5.31/debian/rules
===================================================================
--- zope-common/tags/0.5.31/debian/rules	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/rules	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,54 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+distribution := $(shell lsb_release -is)
+
+build:
+
+clean:
+	dh_testdir
+	dh_testroot
+	rm -f dzhandle.1
+	debconf-updatepo
+	dh_clean 
+
+install: build
+	dh_testdir
+	dh_testroot
+	dh_clean -k 
+	dh_installdirs
+	cp -p dzhandle debian/zope-common/usr/bin/dzhandle
+	docbook-to-man dzhandle.sgml > dzhandle.1
+	cp -p debian/apt.conf \
+		debian/zope-common/etc/apt/apt.conf.d/90zope-common
+	cp -p debian/bash_completion \
+		debian/zope-common/etc/bash_completion.d/dzhandle
+
+# Build architecture-independent files here.
+binary-indep: build install
+	dh_testdir
+	dh_testroot
+	dh_installchangelogs 
+	dh_installdocs
+	dh_installman dzhandle.1
+ifeq ($(distribution),Ubuntu)
+	mv debian/zope-common/usr/share/doc/zope-common/README.Debian \
+	   debian/zope-common/usr/share/doc/zope-common/README.Ubuntu
+endif
+	dh_installdebconf
+	dh_compress
+	dh_fixperms
+	dh_installdeb
+	dh_gencontrol
+	dh_md5sums
+	dh_builddeb
+
+# Build architecture-dependent files here.
+binary-arch: build install
+# We have nothing to do by default.
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install


Property changes on: zope-common/tags/0.5.31/debian/rules
___________________________________________________________________
Name: svn:executable
   + *

Added: zope-common/tags/0.5.31/debian/templates
===================================================================
--- zope-common/tags/0.5.31/debian/templates	                        (rev 0)
+++ zope-common/tags/0.5.31/debian/templates	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,100 @@
+Template: shared/zope/restart
+Type: select
+_Choices: configuring, end, manually
+Default: end
+_Description: Automatic restart of Zope instances:
+ Zope has an extensible, modular structure that allows you to easily
+ add extra components (products) or features. Each product or feature
+ can usually be found in packages whose name starts with a 'zope-'
+ prefix. Unfortunately, each Zope instance needs to be restarted to
+ use any new add-on. Here you can choose the default behaviour of
+ Zope instances in any installed Zope version when Zope needs to be
+ restarted. Each instance, however, is allowed to overwrite this
+ setting:
+ .
+  * configuring: restart instances after each product configuration.
+  * end:         restart instances only once at the end of the whole
+                 installation/upgrading process.
+  * manually:    no restart, it is your responsibility to restart
+                 Zope instances.
+
+Template: zope-common/remove-instance-without-data
+Type: select
+_Choices: abort, remove and continue
+Default: abort
+_Description: Found an old/incomplete zope instance '${instance}':
+ Found an old/incomplete ${instance} instance in
+ /var/lib/zope${zver}/instance/${instance}. No data file Data.fs was found
+ for the instance, meaning that the installation was not completed
+ for some reason, or the installation was incompletely removed.
+ Aborting the installation will allow you to inspect the state of the
+ instance, continuing will remove /var/lib/zope${zver}/instance/${instance}
+ and reinstall the ${instance}. Existing logfiles in
+ /var/log/zope${zver}/${instance} and configuration files in
+ /etc/zope${zver}/${instance} are preserved.
+
+Template: zope-common/keep-data-on-purge
+Type: boolean
+Default: true
+_Description: Keep data for ${instance} on package purge?
+ Purging the data files of a zope instance on package purge
+ results in loss of all data of the zope instance. The data
+ files for this instance are stored in
+ /var/lib/zope${zver}/instance/${instance}.
+
+Template: zope-common/admin-user
+Type: string
+Default: admin
+_Description: Admin user for zope instance '${instance}':
+ Please enter an admin user for the zope instance '${instance}'.
+ A valid user name starts with a letter, followed by letters and digits.
+ .
+ NOTE: Once the instance has been created, the parameter entered
+ here isn't relevant anymore.  To change the admin user (and password)
+ later on, call:
+ .
+ /var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser <user> <password>
+
+
+Template: zope-common/admin-password
+Type: password
+_Description: Password for the admin user:
+ Please enter a password for the admin user. The password must not be empty.
+ The password is deleted from the configuration database, once the
+ instance is sucessfully created and cannot be recoverd.
+ .
+ NOTE: Once the instance has been created, the parameter entered
+ here isn't relevant anymore.  To change the admin user (and password)
+ later on, call:
+ .
+ /var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser <user> <password>
+
+Template: zope-common/admin-password-confirmation
+Type: password
+_Description: Same password:
+ Please enter again the password for the admin user.
+ .
+ NOTE: Once the instance has been created, the parameter entered
+ here isn't relevant anymore.  To change the admin user (and password)
+ later on, call:
+ .
+ /var/lib/zope${zver}/instance/${instance}/bin/zopectl adduser <user> <password>
+
+Template: zope-common/instance-http-port
+Type: string
+_Description: HTTP port for this instance:
+ Please enter the HTTP port for the instance ${instance}.
+ .
+ Other services (e.g. FTP, WebDAV, debug) will be disabled by default.
+ You can enable them editing /etc/zope${zver}/${instance}/zope.conf.
+
+Template: zope-common/admin-automatic-password
+Type: note
+_Description: Automatically generated user and password for your instance
+ You haven't provided a user and a password for your instance, so these 
+ values have been automatically generated.
+ .
+ Use these values to log into the Zope${zver} instance ${instance}:
+ .
+  * User     : ${user}
+  * Password : ${password}

Added: zope-common/tags/0.5.31/dzhandle
===================================================================
--- zope-common/tags/0.5.31/dzhandle	                        (rev 0)
+++ zope-common/tags/0.5.31/dzhandle	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,2394 @@
+#! /usr/bin/python
+
+# Copyright (C) 2005-2006 Matthias Klose <doko at ubuntu.com>
+#                         Fabio Tranchitella <kobold at debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+#
+
+import os
+import sys
+import re
+import glob
+import fnmatch
+import shutil
+import pwd, grp
+import logging
+import subprocess
+
+from optparse import OptionParser
+
+program = os.path.basename(sys.argv[0])
+
+# Debian/Ubuntu zope packages:
+# ----------------------------
+
+zope_packages = (
+    { 'name': 'zope2.6',
+      'version': '2.6',
+      'prefix': '/usr/lib/zope',
+      'instance': '/var/lib/zope/instance',
+      'zeoinstance': '/var/lib/zope/zeo',
+      'pyver': '2.2'
+      },
+    { 'name': 'zope2.7',
+      'version': '2.7',
+      'prefix': '/usr/lib/zope2.7',
+      'instance': '/var/lib/zope2.7/instance',
+      'zeoinstance': '/var/lib/zope2.7/zeo',
+      'pyver': '2.3'
+      },
+    { 'name': 'zope2.8',
+      'version': '2.8',
+      'prefix': '/usr/lib/zope2.8',
+      'instance': '/var/lib/zope2.8/instance',
+      'zeoinstance': '/var/lib/zope2.8/zeo',
+      'pyver': '2.3'
+      },
+    { 'name': 'zope2.9',
+      'version': '2.9',
+      'prefix': '/usr/lib/zope2.9',
+      'instance': '/var/lib/zope2.9/instance',
+      'zeoinstance': '/var/lib/zope2.9/zeo',
+      'pyver': '2.4'
+      },
+    { 'name': 'zope2.10',
+      'version': '2.10',
+      'prefix': '/usr/lib/zope2.10',
+      'instance': '/var/lib/zope2.10/instance',
+      'zeoinstance': '/var/lib/zope2.10/zeo',
+      'pyver': '2.4'
+      },
+    { 'name': 'zope3',
+      'version': '3',
+      'prefix': '/usr/lib/zope3',
+      'instance': '/var/lib/zope3/instance',
+      'zeoinstance': '/var/lib/zope3/zeo',
+      'pyver': '2.4'
+      }
+    )
+
+# installation types for addons:
+# ------------------------------
+# ADDON_MASTER      addon from Debian package in /usr/lib/zope
+# ADDON_LINKED      addon in instance, addon directory symlinked to ADDON_MASTER
+# ADDON_TREELINKED  addon in instance, all files in addon symlinked to ADDON_MASTER
+# ADDON_COPIED      addon in instance, copied from ADDON_MASTER
+# ADDON_MANUAL      addon in instance without .dzfile, manually copied?
+
+NO_ADDON, ADDON_MASTER, ADDON_LINKED, ADDON_TREELINKED, ADDON_COPIED, ADDON_MANUAL = range(6)
+addon_options = ['-', 'master', 'linked', 'tree-linked', 'copied', 'manually installed']
+addon_techniques = addon_options[ADDON_LINKED:ADDON_COPIED+1]
+addon_modes = ['all', 'manual']
+
+def addon_technique_name(code):
+    return addon_options[code]
+
+def addon_technique_code(name):
+    return addon_options.index(name)
+
+known_actions = {}
+def register_action(action_class):
+    known_actions[action_class.name] = action_class
+
+personal_conf = {}
+
+class DZError(Exception):
+    pass
+
+# --------------------------------------------------------------------------- #
+
+def is_root():
+    return os.getuid() == 0
+
+def strlist(sequence):
+    return ', '.join(["`%s'" % s for s in sequence])
+
+def available_zope_versions():
+    return [z['version'] for z in zope_packages if os.path.isdir(z['prefix'])]
+
+def filter_zope_version(version):
+    return [z for z in zope_packages if z['version'] == version][0]
+
+def read_config_file(fn, required=None):
+    attrs = {}
+    for line in file(fn):
+        line = line.strip()
+        if not line or line.startswith('#'):
+            continue
+        try:
+            key, value = [field.strip() for field in line.split(':', 1)]
+	    if value.count('#') > 0: value = value.split('#')[0].strip()
+        except:
+            raise DZError, "error reading %s\n\t%s" % (fn, line)
+        if attrs.has_key(key):
+            raise DZError, "duplicate field `%s' in %s" % (key, fn)
+        if value == '':
+            raise DZError, "missing value for field `%s' in %s" % (key, fn)
+        attrs[key] = value
+    if required:
+        for attr in required:
+            if not attrs.has_key(attr):
+                raise DZError, "missing field `%s' in %s" % (attr, fn)
+    return attrs
+
+def write_config_file(fn, attrs, uid=None, gid=None):
+    fd = file(fn, 'w')
+    for key, value in attrs.items():
+        if value != None:
+            fd.write('%s: %s\n' % (key, value))
+    fd.close()
+
+# --------------------------------------------------------------------------- #
+
+class InstanceListFile:
+    def __init__(self, mode, addon_name, oklist=True):
+        if oklist:
+            self.fn = '/var/lib/zope/dzhandle/%s__%s' % (mode, addon_name)
+        else:
+            self.fn = '/var/lib/zope/dzhandle/%s_failed__%s' % (mode, addon_name)
+        self.read()
+
+    def read(self):
+        """read file with <instance name> <instance version> lines,
+        return list of fields, empty list, if file does not exist"""
+        self.lines = []
+        try:
+            fd = file(self.fn)
+            for line in fd.readlines():
+                fields = line.split()
+                if not (fields[:2]) in self.lines:
+                    self.lines.append(fields[:2])
+            self.exists = True
+            fd.close()
+        except IOError:
+            self.exists = False
+
+    def write(self):
+        if self.lines:
+            fd = file(self.fn, 'w')
+            for name, version in self.lines:
+                fd.write("%s %s\n" % (name, version))
+            fd.close()
+        else:
+            os.unlink(self.fn)
+
+    def remove(self, instance):
+        """remove instance from list and write file,
+        unlink file, if list is empty"""
+        try:
+            self.lines.remove([instance.name, instance.version])
+        except ValueError:
+            return
+        self.write()
+
+    def append(self, instance):
+        """append instance information to instance list"""
+        info = [instance.name, instance.version]
+        if info in self.lines:
+            return
+        self.lines.append(info)
+        self.write()
+
+    def get_lines(self):
+        for line in self.lines:
+            yield line
+
+class Addon:
+    def __init__(self, path, dzfile_required=True):
+        self.type = None
+        if not os.path.isdir(path):
+            raise DZError, "%s directory doesn't exist: `%s'" % (self.kind, path)
+        self.path = path
+        if not os.path.isfile(os.path.join(path, self.dzname)):
+            if dzfile_required:
+                raise DZError, "`%s' file not found`%s'" \
+                      % (self.dzname, os.path.join(self.path, self.dzname))
+            self.type = ADDON_MANUAL
+            self.name = os.path.basename(path)
+            self.package = None
+            self.version = None
+            self.depends = None
+            self.recommends = None
+            self.suggests = None
+            self.is_global = False
+            self.zopeversions = " ".join([z['version'] for z in zope_packages])
+        else:
+            self.read_dzfile()
+        if self.type == None:
+            if path.startswith('/usr/share/zope') or \
+               path.startswith('/usr/lib/zope'):
+                self.type = ADDON_MASTER
+            elif os.path.islink(path):
+                self.type = ADDON_LINKED
+            elif os.path.islink(os.path.join(path, self.dzname)):
+                self.type = ADDON_TREELINKED
+            else:
+                self.type = ADDON_COPIED
+
+    def read_dzfile(self):
+        fn = os.path.join(self.path, self.dzname)
+        attrs = read_config_file(fn, ('Name', 'Package', 'Version'))
+        self.name = attrs['Name']
+        self.package = attrs['Package']
+        self.version = attrs['Version']
+        self.directory = attrs.get('Directory', self.name)
+        if not os.path.basename(self.path) in (self.name, self.directory):
+            raise DZError, "Product or Directory field doesn't match path in `%s'" % fn
+        self.depends = attrs.get('Depends', None)
+        self.recommends = attrs.get('Recommends', None)
+        self.suggests = attrs.get('Suggests', None)
+        self.zopeversions = attrs.get('ZopeVersions', \
+                            " ".join([z['version'] for z in zope_packages]))
+        self.is_global = (attrs.get('Global', None) == 'yes')
+    
+    def write_dzfile(self, fn=None):
+        fn = fn or os.path.join(self.path, self.dzname)
+        fd = file(fn, 'w')
+        fd.write('Package: %s\n' % self.package)
+        fd.write('Name: %s\n' % self.name)
+        fd.write('Version: %s\n' % self.version)
+        if self.name != self.directory:
+            fd.write('Directory: %s\n' % self.directory)
+        if self.depends:
+            fd.write('Depends: %s\n' % self.depends)
+        if self.recommends:
+            fd.write('Recommends: %s\n' % self.recommends)
+        if self.suggests:
+            fd.write('Suggests: %s\n' % self.suggests)
+        if self.zopeversions:
+            fd.write('ZopeVersions: %s\n' % self.zopeversions)
+        fd.close()
+
+    def available_in_instance(self, instance):
+        """checks if the addon is available in the instance
+        """
+
+        if self.is_global:
+            ipath = os.path.join(instance.home, self.subdir, self.name + '.installed')
+            return os.path.exists(ipath)
+
+        ipath = os.path.join(instance.home, self.subdir, self.name)
+        return os.path.isdir(ipath)
+
+    def installed_in_instance(self, instance):
+        """If the addon is available in the instance, return it, else return None.
+        """
+        
+        if self.is_global:
+            ipath = os.path.join(instance.home, self.subdir, self.name + '.installed')
+            return os.path.exists(ipath) and self or None
+
+        ipath = os.path.join(instance.home, self.subdir, self.name)
+        if not os.path.isdir(ipath):
+            return None
+        iaddon = self.__class__(ipath,
+                                dzfile_required=\
+                                os.path.isfile(os.path.join(ipath, self.dzname)))
+        return iaddon
+    
+    def installed_by_in_instances(self, instances, exclude=[]):
+        """Return a list of addons, which are installed by this master addon in
+        instances.  Filter out all instances with a addon type found in exclude.
+        """
+        assert self.type == ADDON_MASTER
+
+        iaddons = []
+        for instance in instances:
+            iaddon = self.installed_in_instance(instance)
+            if iaddon and not iaddon.type in exclude and iaddon.installed_by(self):
+                iaddons.append(iaddon)
+        return iaddons
+
+    def find_master(self):
+        """locate the addon, that this addon was installed from"""
+
+        if self.type == ADDON_MANUAL:
+            return None
+        master = None
+        for prefix in ('/usr/share/zope', '/usr/lib/zope'):
+            path = os.path.join(prefix, self.subdir, self.directory)
+            try:
+                master = self.addonClass(path)
+            except DZError, msg:
+                pass
+            else:
+                break
+        if not master:
+            raise DZError, msg
+        return master
+        
+    def installed_by(self, master):
+        """checks if the installed addon was installed by the `master' addon
+        """
+        assert self.type != ADDON_MASTER and master.type == ADDON_MASTER or self.is_global
+        
+        if self.is_global:
+            return True
+        elif self.name != master.name or self.package != master.package:
+            # other addon, or same addon installed by other package
+            return False
+        elif self.type == ADDON_COPIED:
+            # copied from master to instance, version may mismatch
+            return True
+        
+        # consistency checks ...
+        realpath = os.path.realpath(self.path)
+        master_realpath = os.path.realpath(master.path)
+        if self.type == ADDON_LINKED and realpath != master_realpath:
+            print "CONSISTENCY CHECK FAILED: %s != %s" % (realpath, master_realpath)
+            return False
+        realpath = os.path.realpath(os.path.join(self.path, self.dzname))
+        master_realpath = os.path.realpath(os.path.join(master.path, self.dzname))
+        if self.type == ADDON_TREELINKED and realpath != master_realpath:
+            print "CONSISTENCY CHECK FAILED: %s != %s" % (realpath, master_realpath)
+            return False
+        
+        return True
+        
+    def printit(self, stream=sys.stdout):
+        print >>stream, self.kind, self.name, self.directory, \
+            self.package, self.version, self.path, self.depends
+        
+class ProductAttributes:
+    kind = 'product'
+    subdir = 'Products'
+    dzname = '.dzproduct'
+
+class ExtensionAttributes:
+    kind = 'extension'
+    subdir = 'Extensions'
+    dzname = '.dzextension'
+
+class Product(ProductAttributes, Addon):
+    pass
+
+class Extension(ExtensionAttributes, Addon):
+    pass
+
+ProductAttributes.addonClass = Product
+ExtensionAttributes.addonClass = Extension
+
+# --------------------------------------------------------------------------- #
+
+class DZAction:
+    _option_parser = None
+    name = None
+    help = ""
+    def __init__(self):
+        self.errors_occured = 0
+        parser = self.get_option_parser()
+        parser.set_usage(
+            'usage: %s [<option> ...] %s [<option> ...]' % (program, self.name))
+
+    def get_option_parser(self):
+        if not self._option_parser:
+            p = OptionParser()
+            self._option_parser = p
+        return self._option_parser
+
+    def info(self, msg, stream=sys.stderr):
+        logging.info('%s %s: %s', program, self.name, msg)
+
+    def warn(self, msg, stream=sys.stderr):
+        logging.warn('%s %s: %s', program, self.name, msg)
+
+    def error(self, msg, stream=sys.stderr, go_on=False):
+        logging.error('%s %s: %s', program, self.name, msg)
+        self.errors_occured += 1
+        if not go_on:
+            sys.exit(1)
+
+    def parse_args(self, arguments):
+        self.options, self.args = self._option_parser.parse_args(arguments)
+        return self.options, self.args
+
+    def check_args(self, global_options):
+        return self.errors_occured
+
+    def run(self, global_opts):
+        pass
+
+# --------------------------------------------------------------------------- #
+
+class DZPreinst(DZAction):
+    kind = None
+    def get_option_parser(self):
+        if not self._option_parser:
+            p = OptionParser()
+            p.add_option('-m', '--mode',
+                         action='store', dest='mode')
+            self._option_parser = p
+        return self._option_parser
+
+    def check_args(self, global_options):
+        if len(self.args) != 3:
+            self.error('--mode=<script args> <package> <directory> <%s name>' % self.kind)
+        if self.options.mode == None:
+            self.error("missing `--mode=<script args>'")
+        self.mode_args = self.options.mode.split()
+        if not self.mode_args[0] in ('install', 'upgrade'):
+            self.error("unknown mode `%s'" % self.options.mode)
+        self.mode = self.mode_args[0]
+        del self.mode_args[0]
+        package, directory, addon_name = self.args
+
+        ilist = InstanceListFile(self.mode, addon_name)
+        if ilist.exists:
+            self.info("file `%s' exists" % ilist.fn)
+        ilist = InstanceListFile(self.mode, addon_name, oklist=False)
+        if ilist.exists:
+            self.info("file `%s' exists" % ilist.fn)
+
+        # nothing to check for upgrades
+        if self.mode == 'upgrade':
+            return self.errors_occured
+        
+        instances = locate_instances(versions=global_options.zversion)
+        for instance in instances:
+            addon_path = os.path.join(instance.home, self.subdir, addon_name)
+            
+            if instance.is_addon_excluded(addon_name):
+                continue
+            if not os.path.exists(addon_path):
+                # not installed in instance
+                continue
+            try:
+                iaddon = self.addonClass(directory, dzfile_required=False)
+            except DZError, msg:
+                # some error reading the dzfile ... 
+                # maybe the product hasn't been unpacked yet, let's skip it
+                continue
+            if iaddon.type == ADDON_MANUAL:
+                if instance.addon_installation_required():
+                    self.error("keep manually installed %s `%s' in instance "
+                              "`%s' (%s), ignoring %s `%s' from package `%s'." %
+                              (self.kind, iaddon.name, instance.name, instance.version,
+                               self.kind, addon_name, package),
+                               go_on=True)
+                else:
+                    self.info("keep manually installed %s `%s' in instance "
+                              "`%s' (%s), ignoring %s `%s' from package `%s'." %
+                              (self.kind, iaddon.name, instance.name, instance.version,
+                               self.kind, addon_name, package))
+                continue
+            if (iaddon.package, iaddon.name, iaddon.directory) \
+                   != (package, addon_name, os.path.basename(directory)):
+                # not installed from this product
+                self.info("found %s `%s' installed from package `%s' in instance "
+                          "`%s' (%s) while installing package `%s'." %
+                          (self.kind, iaddon.name, iaddon.package,
+                           instance.name, instance.version, package))
+                continue
+            if iaddon.type == ADDON_COPIED:
+                if instance.addon_installation_required():
+                    self.error("keep copied %s `%s' in instance "
+                               "`%s' (%s), ignoring %s `%s' from package `%s'." %
+                               (self.kind, iaddon.name, instance.name, instance.version,
+                                self.kind, addon_name, package),
+                               go_on=True)
+                    self.warn("keep copied %s `%s' in instance "
+                              "`%s' (%s), ignoring %s `%s' from package `%s'." %
+                              (self.kind, iaddon.name, instance.name, instance.version,
+                               self.kind, addon_name, package))
+                continue
+            assert iaddon.type in (ADDON_LINKED, ADDON_TREELINKED)
+
+        return self.errors_occured
+
+    def run(self, global_options):
+        pass
+        
+class DZPreinstProduct(ProductAttributes, DZPreinst):
+    name = 'preinst-%s' % ProductAttributes.kind
+    help = 'handle preinst of a packaged %s' % ProductAttributes.kind
+
+class DZPreinstExtension(ExtensionAttributes, DZPreinst):
+    name = 'preinst-%s' % ExtensionAttributes.kind
+    help = 'handle preinst of a packaged %s' % ExtensionAttributes.kind
+
+register_action(DZPreinstProduct)
+register_action(DZPreinstExtension)
+
+
+class DZPostinst(DZAction):
+    kind = None
+    def get_option_parser(self):
+        if not self._option_parser:
+            p = OptionParser()
+            p.add_option('-m', '--mode',
+                         action='store', dest='mode')
+            self._option_parser = p
+        return self._option_parser
+
+    def check_args(self, global_options):
+        if len(self.args) != 1:
+            self.error('--mode=<script args> <directory>')
+        if self.options.mode == None:
+            self.error("missing `--mode=<script arguments>'")
+        self.mode_args = self.options.mode.split()
+        if not self.mode_args[0] in ('configure', 'abort-upgrade', 'abort-remove'):
+            self.error("unknown mode `%s'" % self.options.mode)
+        self.mode = self.mode_args[0]
+        del self.mode_args[0]
+        
+        directory = self.args[0]
+        try:
+            self.addon = addon = self.addonClass(directory)
+        except DZError, msg:
+            self.error(msg)
+
+        all_instances = locate_instances(versions=global_options.zversion)
+
+        if self.mode == 'configure':
+            # instances which are beeing upgraded go first
+            self.upgrade_ilist = InstanceListFile('upgrade', addon.directory)
+            self.toupgrade = []
+            for i_name, i_version in self.upgrade_ilist.get_lines():
+                match = [i for i in all_instances
+                         if i.name == i_name and i.version == i_version]
+                if len(match) > 0:
+                    self.toupgrade.append(match[0])
+            
+            self.toinstall = self.toupgrade[:]
+
+            # new installations, same checks as in 'preinst install'
+            for instance in all_instances:
+                addon_path = os.path.join(instance.home, self.subdir, addon.name)
+
+                if instance in self.toupgrade:
+                    continue
+                if instance.is_addon_excluded(addon.name):
+                    continue
+                if not instance.addon_installation_required():
+                    continue
+                if not os.path.exists(addon_path):
+                    # not installed in instance
+                    if instance.version in self.addon.zopeversions:
+                        self.toinstall.append(instance)
+                    continue
+                try:
+                    iaddon = self.addonClass(addon_path, dzfile_required=False)
+                except DZError, msg:
+                    # some error reading the dzfile ...
+                    self.error(msg, go_on=True)
+                    continue
+                if iaddon.type == ADDON_MANUAL:
+                    if instance.addon_installation_required():
+                        self.error("keep manually installed %s `%s' in instance "
+                                  "`%s' (%s), ignoring %s `%s' from package `%s'." %
+                                  (self.kind, iaddon.name, instance.name, instance.version,
+                                   self.kind, addon.name, addon.package),
+                                   go_on=True)
+                    else:
+                        self.info("keep manually installed %s `%s' in instance "
+                                  "`%s' (%s), ignoring %s `%s' from package `%s'." %
+                                  (self.kind, iaddon.name, instance.name, instance.version,
+                                   self.kind, addon.name, addon.package))
+                    continue
+                if (iaddon.package, iaddon.name, iaddon.directory) \
+                       != (addon.package, addon.name, os.path.basename(directory)):
+                    # not installed from this product
+                    self.info("found %s `%s' installed from package `%s' in instance "
+                              "`%s' (%s) while installing package `%s'." %
+                              (self.kind, iaddon.name, iaddon.package,
+                               instance.name, instance.version, addon.package))
+                    continue
+                if iaddon.type == ADDON_COPIED:
+                    if instance.addon_installation_required():
+                        self.error("keep copied %s `%s' in instance "
+                                   "`%s' (%s), ignoring %s `%s' from package `%s'." %
+                                   (self.kind, iaddon.name, instance.name, instance.version,
+                                    self.kind, addon.name, addon.package),
+                                   go_on=True)
+                        self.warn("keep copied %s `%s' in instance "
+                                  "`%s' (%s), ignoring %s `%s' from package `%s'." %
+                                  (self.kind, iaddon.name, instance.name, instance.version,
+                                   self.kind, addon.name, addon.package))
+                    continue
+                assert iaddon.type in (ADDON_LINKED, ADDON_TREELINKED)
+                self.toinstall.append(instance)
+                
+        elif self.mode == 'abort-upgrade':
+            self.info("%s nyi" % self.mode)
+        elif self.mode == 'abort-remove':
+            self.info("%s nyi" % self.mode)
+
+        return self.errors_occured
+        
+    def run(self, global_options):
+        if self.mode == 'configure':
+            for instance in self.toinstall:
+                if instance in self.toupgrade:
+                    self.toupgrade.remove(instance)
+                    try:
+                        instance.add_addon(self.addon, global_options)
+                    except DZError, msg:
+                        failed_ilist = InstanceListFile('upgrade', self.addon.directory, oklist=False)
+                        failed_ilist.append(instance)
+                        self.error(msg)
+                    else:
+                        self.upgrade_ilist.remove(instance)
+                else:
+                    try:
+                        instance.add_addon(self.addon, global_options)
+                    except DZError, msg:
+                        self.error(msg)
+                instance.handle_restart_policy()
+                
+        elif self.mode == 'abort-upgrade':
+            self.info("%s nyi" % self.mode)
+        elif self.mode == 'abort-remove':
+            self.info("%s nyi" % self.mode)
+        
+class DZPostinstProduct(ProductAttributes, DZPostinst):
+    name = 'postinst-%s' % ProductAttributes.kind
+    help = 'handle postinst of a packaged %s' % ProductAttributes.kind
+
+class DZPostinstExtension(ExtensionAttributes, DZPostinst):
+    name = 'postinst-%s' % ExtensionAttributes.kind
+    help = 'handle postinst of a packaged %s' % ExtensionAttributes.kind
+
+register_action(DZPostinstProduct)
+register_action(DZPostinstExtension)
+
+
+class DZPrerm(DZAction):
+    kind = None
+    def get_option_parser(self):
+        if not self._option_parser:
+            p = OptionParser()
+            p.add_option('-m', '--mode',
+                         action='store', dest='mode')
+            self._option_parser = p
+        return self._option_parser
+
+    def check_args(self, global_options):
+        if len(self.args) != 1:
+            self.error('--mode=<script args> <directory>')
+        if self.options.mode == None:
+            self.error("missing `--mode=<script arguments>'")
+        self.mode_args = self.options.mode.split()
+        if not self.mode_args[0] in ('upgrade', 'remove'):
+            self.error("unknown mode `%s'" % self.options.mode)
+        self.mode = self.mode_args[0]
+        del self.mode_args[0]
+
+        directory = self.args[0]
+        try:
+            self.addon = self.addonClass(directory)
+        except DZError, msg:
+            self.error(msg)
+
+        instances = locate_instances(versions=global_options.zversion)
+        self.toremove = []
+        for instance in instances:
+            iaddon = self.addon.installed_in_instance(instance)
+            if not iaddon:
+                continue
+            elif iaddon.installed_by(self.addon):
+                # consider removal
+                if iaddon.type == ADDON_COPIED:
+                    if global_options.force:
+                        self.toremove.append((iaddon, instance))
+                    else:
+                        self.warn("keep copy of %s `%s' in `%s'"
+                                  % (iaddon.kind, iaddon.name, instance.name))
+                        
+                else:
+                    assert iaddon.type in (ADDON_LINKED, ADDON_TREELINKED) or \
+                           iaddon.is_global
+                    if self.mode == 'remove' and instance.addon_mode == 'manual':
+                        self.warn("denied removal of %s `%s' from instance `%s' (%s)"
+                                   " in addon-mode `%s'"
+                                   % (iaddon.kind, iaddon.name, instance.name,
+                                      instance.version, instance.addon_mode))
+                    else:
+                        self.toremove.append((iaddon, instance))
+            else:
+                # manually installed addon, or installed by another package
+                self.warn("keep %s `%s' in instance `%s' not installed from `%s'" %
+                          (iaddon.kind, iaddon.name, instance.name, self.addon.path))
+
+        return self.errors_occured
+
+    def run(self, global_options):
+        for iaddon, instance in self.toremove:
+            try:
+                instance.remove_addon(self.addon, global_options)
+            except DZError, msg:
+                failed_ilist = InstanceListFile(self.mode,
+                                                self.addon.directory,
+                                                oklist=False)
+                failed_ilist.append(instance)
+                self.error(msg)
+            else:
+                if self.mode == 'upgrade':
+                    ilist = InstanceListFile(self.mode, self.addon.directory)
+                    ilist.append(instance)
+
+        
+class DZPrermProduct(ProductAttributes, DZPrerm):
+    name = 'prerm-%s' % ProductAttributes.kind
+    help = 'handle prerm of a packaged %s' % ProductAttributes.kind
+
+class DZPrermExtension(ExtensionAttributes, DZPrerm):
+    name = 'prerm-%s' % ExtensionAttributes.kind
+    help = 'handle prerm of a packaged %s' % ExtensionAttributes.kind
+
+register_action(DZPrermProduct)
+register_action(DZPrermExtension)
+
+
+class DZPostrm(DZAction):
+    kind = None
+    def get_option_parser(self):
+        if not self._option_parser:
+            p = OptionParser()
+            p.add_option('-m', '--mode',
+                         action='store', dest='mode')
+            self._option_parser = p
+        return self._option_parser
+
+    def check_args(self, global_options):
+        if len(self.args) != 3:
+            self.error('--mode=<script args> <package> <directory> <%s name>' % self.kind)
+        if self.options.mode == None:
+            self.error("missing `--mode=<script arguments>'")
+        self.mode_args = self.options.mode.split()
+        if not self.mode_args[0] in ('remove'):
+            self.error("unknown mode `%s'" % self.options.mode)
+        self.mode = self.mode_args[0]
+        del self.mode_args[0]
+        package, directory, addon_name = self.args
+        return self.errors_occured
+    
+    def run(self, global_options):
+        pass
+        
+class DZPostrmProduct(ProductAttributes, DZPostrm):
+    name = 'postrm-%s' % ProductAttributes.kind
+    help = 'handle postrm of a packaged %s' % ProductAttributes.kind
+
+class DZPostrmExtension(ExtensionAttributes, DZPostrm):
+    name = 'postrm-%s' % ExtensionAttributes.kind
+    help = 'handle postrm of a packaged %s' % ExtensionAttributes.kind
+
+register_action(DZPostrmProduct)
+register_action(DZPostrmExtension)
+
+
+class DZDinstall(DZAction):
+    kind = None
+    def get_option_parser(self):
+        if not self._option_parser:
+            p = OptionParser()
+            p.add_option('-r', '--restart',
+                         action='store', dest='restart', default='end')
+            self._option_parser = p
+        return self._option_parser
+
+    def check_args(self, global_options):
+        if not self.args:
+            self.error('no %ss to install' % self.kind)
+        if not self.options.restart in ('configuring', 'end', 'manually'):
+            self.error("invalid restart argument `%s'" % self.options.restart)
+        self.addons = []
+        for arg in self.args:
+            try:
+                addon = self.addonClass(arg)
+            except DZError, msg:
+                self.error(msg)
+            self.addons.append(addon)
+
+        instances = locate_instances()
+        # consider instances with Addon-Mode 'all' only
+        self.instances = [i for i in instances if i.addon_installation_required()]
+        self.toinstall = []
+        for addon in self.addons:
+            for instance in self.instances:
+                iaddon = addon.installed_in_instance(instance)
+                if iaddon:
+                    # verify it's from the same package
+                    if iaddon.installed_by(addon):
+                        # safe to upgrade
+                        self.toinstall.append((addon, iaddon, instance))
+                    elif iaddon.type == ADDON_MANUAL:
+                        self.error("found manually installed %s `%s' in instance "
+                                   "`%s' (%s) while installing package `%s'. Keep it" %
+                                   (self.kind, iaddon.name, instance.name, instance.version,
+                                    addon.package),
+                                   go_on=True)
+                    elif iaddon.package != addon.package:
+                        self.error("found %s `%s' installed from package `%s' in instance "
+                                   "`%s' (%s) while installing package `%s'. Keep it" %
+                                   (self.kind, iaddon.name, iaddon.package,
+                                    instance.name, instance.version, addon.package),
+                                   go_on=True)
+                else:
+                    self.toinstall.append((addon, None, instance))
+        return self.errors_occured
+
+    def run(self, global_options):
+        for addon, old_addon, instance in self.toinstall:
+            if old_addon:
+                instance.remove_addon(old_addon, global_options)
+            instance.add_addon(addon, global_options)
+            instance.handle_restart_policy()
+
+class DZDinstallProduct(ProductAttributes, DZDinstall):
+    name = 'dinstall-product'
+    help = 'install a packaged product'
+
+class DZDinstallExtension(ExtensionAttributes, DZDinstall):
+    name = 'dinstall-extension'
+    help = 'install a packaged extension'
+
+register_action(DZDinstallProduct)
+register_action(DZDinstallExtension)
+
+
+class DZDremove(DZAction):
+    kind = None
+    def get_option_parser(self):
+        if not self._option_parser:
+            p = OptionParser()
+            self._option_parser = p
+        return self._option_parser
+
+    def check_args(self, global_options):
+        if not self.args:
+            self.error('no %ss to remove' % self.kind)
+        self.addons = []
+        for arg in self.args:
+            try:
+                addon = self.addonClass(arg)
+            except DZError, msg:
+                self.error(msg)
+            else:
+                self.addons.append(addon)
+
+        instances = locate_instances()
+        self.toremove = []
+        for addon in self.addons:
+            for instance in instances:
+                iaddon = addon.installed_in_instance(instance)
+                if not iaddon:
+                    continue
+                if iaddon.installed_by(addon):
+                    # consider removal
+                    if iaddon.type == ADDON_COPIED:
+                        if global_options.force:
+                            self.toremove.append((addon, iaddon, instance))
+                        else:
+                            self.warn("leaving copy of %s `%s' in `%s'"
+                                      % (iaddon.kind, iaddon.name, instance.name))
+                    else:
+                        assert iaddon.type in (ADDON_LINKED, ADDON_TREELINKED)
+                        self.toremove.append((addon, iaddon, instance))
+                else:
+                    # manually installed addon, or installed by another package
+                    self.warn("leaving %s `%s' in instance `%s' not installed from `%s'" %
+                              (iaddon.kind, iaddon.name, instance.name, addon.path))
+        return self.errors_occured
+                    
+    def run(self, global_options):
+        for addon, iaddon, instance in self.toremove:
+            instance.remove_addon(addon, global_options)
+
+
+class DZDremoveProduct(ProductAttributes, DZDremove):
+    name = 'dremove-product'
+    help = 'remove a packaged product'
+    
+class DZDremoveExtension(ExtensionAttributes, DZDremove):
+    name = 'dremove-extension'
+    help = 'remove a packaged extension'
+
+register_action(DZDremoveProduct)
+register_action(DZDremoveExtension)
+
+
+class DZAddAddon(DZAction):
+    kind = None
+    def get_option_parser(self):
+        if not self._option_parser:
+            p = OptionParser()
+            p.add_option('-l', '--lazy',
+                         help="add missing addons only (error on manually installed addons)",
+                         default=False, action='store_true', dest='lazy')
+            p.add_option('-t', '--installation-technique',
+                         help="how to install addons (linked, tree-linked, copied)",
+                         default=None, action='store', dest='atechnique')
+            self._option_parser = p
+        return self._option_parser
+
+    def find_addon(self, arg, lazy = False):
+        candidates = [addon for addon in self.locatedaddons
+                      if (getattr(addon, 'directory', None) == arg) and \
+                         addon.zopeversions.count(self.instance.version) > 0]
+
+        if not candidates:
+            candidates = [addon for addon in self.locatedaddons
+                          if (addon.name == arg) and \
+                              addon.zopeversions.count(self.instance.version) > 0]
+
+        if candidates: return candidates[0]
+        elif not lazy: self.error("unknown %s `%s'" % (self.kind, arg))
+        else: return None
+
+    def find_related(self, related, installed):
+        if not related:
+            return []
+
+        depends = []
+        for d in related.replace(' ','').split(','):
+            if d.count('|') > 0:
+                match = None
+                for alt in d.split('|'):
+                    match = [i for i in installed if i.name == alt or \
+                             getattr(i, 'directory', None) == alt]
+                    if match: break
+                if match: continue
+
+                for alt in d.split('|'):
+                    match = self.find_addon(alt, True)
+                    if match: break
+            else:
+                match = self.find_addon(d)
+
+            if match and match not in (installed + depends):
+                depends.append(match)
+                depends += self.find_related(match.depends, installed + depends)
+
+        return depends
+
+    def check_args(self, global_options):
+        if len(self.args) < 2:
+            self.error('<instance> <%s> [<%s>]' % (self.kind, self.kind))
+        try:
+            instance = locate_instance(self.args[0],
+                                       versions=global_options.zversion)
+        except DZError, msg:
+            self.error(msg)
+
+        self.instance = instance
+
+        if self.options.atechnique:
+            if not self.options.atechnique in addon_techniques:
+                self.error("unknown addon technique `%s'" % self.options.atechnique)
+            self.options.atechnique = addon_technique_code(self.options.atechnique)
+            if self.options.atechnique != instance.addon_technique \
+                   and not global_options.force:
+                self.error("addon technique `%s' doesn't match "
+                           "the instance's default (`%s'). Use -f to override"
+                           % (self.options.atechnique, instance.addon_technique))
+
+        self.addons = []
+        self.locatedaddons = locate_addons(self.addonClass, zopeversions=global_options.zversion)
+        for arg in self.args[1:]:
+            self.addons.append(self.find_addon(arg))
+
+        to_be_installed = [i.name for i in self.addons]
+
+        self.installed = instance.installed_addons()
+        for i in self.addons:
+            self.addons += self.find_related(i.depends, self.installed + self.addons)
+
+        for addon in self.addons[:]:
+            iaddon = addon.installed_in_instance(instance)
+            if not iaddon:
+                continue
+            if iaddon.installed_by(addon):
+                if self.options.lazy:
+                    # warn about copied addons
+                    if iaddon.type == ADDON_COPIED:
+                        self.warn("%s `%s' (%s, %s) in instance `%s' (%s) . Keep it" %
+                                  (self.kind, iaddon.name, iaddon.version,
+                                   addon_technique_name(iaddon.type),
+                                   instance.name, instance.version))
+                    self.addons.remove(addon)
+                elif addon.name not in to_be_installed:
+                    self.addons.remove(addon)
+                else:
+                    self.error("%s `%s' (%s, %s) in instance `%s' (%s) . Keep it" %
+                           (self.kind, iaddon.name, iaddon.version,
+                            addon_technique_name(iaddon.type),
+                            instance.name, instance.version),
+                           go_on=True)
+            elif iaddon.type == ADDON_MANUAL:
+                self.error("manually installed %s `%s' in instance `%s' (%s). Keep it" %
+                           (self.kind, iaddon.name, instance.name, instance.version),
+                           go_on=True)
+            else:
+                self.error("found %s `%s' installed from package `%s' in instance "
+                           "`%s' (%s) while adding adding %s from `%s'. Keep it" %
+                           (self.kind, iaddon.name, iaddon.package,
+                            instance.name, instance.version, self.kind, addon.package),
+                           go_on=True)
+
+        return self.errors_occured
+    
+    def run(self, global_options):
+        for addon in self.addons:
+            self.instance.add_addon(addon, global_options, self.options.atechnique)
+            self.info("added %s `%s' to instance `%s' (%s)"
+                      % (self.kind, addon.name, self.instance.name, self.instance.version))
+
+
+class DZAddProduct(ProductAttributes, DZAddAddon):
+    name = 'add-product'
+    help = 'add a product to an instance'
+
+class DZAddExtension(ExtensionAttributes, DZAddAddon):
+    name = 'add-extension'
+    help = 'add an extension to an instance'
+
+register_action(DZAddProduct)
+register_action(DZAddExtension)
+
+
+class DZRemoveAddon(DZAction):
+    kind = None
+    def get_option_parser(self):
+        if not self._option_parser:
+            p = OptionParser()
+            p.add_option('-f', '--force',
+                         help="force removal of %ss" % self.kind,
+                         default=False, action='store_true', dest='force')
+            p.add_option('-l', '--lazy',
+                         help="don't complain about already removed addons",
+                         default=False, action='store_true', dest='lazy')
+            self._option_parser = p
+        return self._option_parser
+
+    def check_args(self, global_options):
+        if len(self.args) < 2:
+            self.error('<instance> <%s> [<%s>]' % (self.kind, self.kind))
+        try:
+            self.instance = locate_instance(self.args[0],
+                                            versions=global_options.zversion)
+        except DZError, msg:
+            self.error(msg)
+
+        addons = []
+        for arg in self.args[1:]:
+            if ':' in arg:
+                addon_base, addon_suffix = arg.split(':', 1)
+            else:
+                addon_base, addon_suffix = arg, ''
+            ipath = os.path.join(self.instance.home, self.subdir, addon_base)
+            if os.path.exists(ipath + '.installed'):
+                path = open(ipath + '.installed', 'r').read()
+                addon = self.addonClass(path, dzfile_required=False)
+                addons.append((addon, addon))
+                continue
+            elif not os.path.isdir(ipath):
+                if not self.options.lazy:
+                    self.error("%s `%s' not found in instance `%s' (%s)"
+                               % (self.kind, addon_base, self.instance.name, self.instance.version),
+                               go_on=True)
+                continue
+            try:
+                iaddon = self.addonClass(ipath, dzfile_required=False)
+            except DZError, msg:
+                self.error(msg, go_on=True)
+            else:
+                try:
+                    addon = iaddon.find_master()
+                except DZError, msg:
+                    self.error(msg, go_on=True)
+                else:
+                    addons.append((addon, iaddon))
+
+        for addon, iaddon in addons:
+            if global_options.force or self.options.force:
+                continue
+            if iaddon.type in (ADDON_COPIED, ADDON_MANUAL):
+                self.error("not removing %s %s `%s' from instance `%s', use -f to override"
+                           % (addon_technique_name(iaddon.type), self.kind, iaddon.name,
+                              self.instance.name),
+                           go_on=True)
+            elif self.instance.addon_mode == 'manual':
+                # linked or tree-linked
+                self.error("not removing %s %s `%s' from manually managed instance `%s', use -f to override"
+                           % (addon_technique_name(iaddon.type), self.kind, iaddon.name,
+                              self.instance.name),
+                           go_on=True)
+                    
+        self.addons = addons
+        return self.errors_occured
+
+    def run(self, global_options):
+        for addon, iaddon in self.addons:
+            try:
+                self.instance.remove_addon(addon, global_options)
+                self.info("removed %s `%s' from instance `%s' (%s)"
+                          % (self.kind, addon.directory, self.instance.name, self.instance.version))
+            except DZError, msg:
+                self.error(msg, go_on=True)
+
+        if self.errors_occured:
+            sys.exit(1)
+
+class DZRemoveProduct(ProductAttributes, DZRemoveAddon):
+    name = 'remove-product'
+    help = 'remove a product from an instance'
+
+class DZRemoveExtension(ExtensionAttributes, DZRemoveAddon):
+    name = 'remove-extension'
+    help = 'remove an extension from an instance'
+
+register_action(DZRemoveProduct)
+register_action(DZRemoveExtension)
+
+
+class DZListAddons(DZAction):
+    def get_option_parser(self):
+        if not self._option_parser:
+            p = OptionParser()
+            self._option_parser = p
+        return self._option_parser
+
+    def check_args(self, global_options):
+        if not self.args:
+            # list available products
+            self.instance = None
+        elif len(self.args) == 1:
+            try:
+                self.instance = locate_instance(self.args[0],
+                                                versions=global_options.zversion)
+            except DZError, msg:
+                self.error(msg)
+        else:
+            self.error('[<instance>]')
+        return self.errors_occured
+
+    def run(self, global_options):
+        if self.instance:
+            print 'Listing products installed for instance', self.instance.name
+            addons = self.instance.installed_addons()
+        else:
+            if len(global_options.zversion) > 1:
+                print 'Listing products available for all version(s):', ' '.join(global_options.zversion)
+            addons = locate_addons(self.addonClass, zopeversions=global_options.zversion)
+        for addon in addons:
+            addon.printit()
+
+class DZListProducts(ProductAttributes, DZListAddons):
+    name = 'list-products'
+    help = 'show all products managed by dzhandle'
+
+class DZListExtensions(ExtensionAttributes, DZListAddons):
+    name = 'list-extensions'
+    help = 'show all extensions managed by dzhandle'
+
+register_action(DZListProducts)
+register_action(DZListExtensions)
+
+
+class DZListInstances(DZAction):
+    name = 'list-instances'
+    help = 'print list of instances'
+
+    def check_args(self, global_options):
+        if len(self.args) > 1:
+            self.error("[<instance pattern>]")
+        self.instances = locate_instances(versions=global_options.zversion)
+        if self.args:
+            pattern = self.args[0]
+            instances = [i for i in self.instances if fnmatch.fnmatch(i.name, pattern)]
+            if not instances:
+                self.error("no instance matching pattern `%s'" % pattern)
+            self.instances = instances
+        return self.errors_occured
+
+    def run(self, global_options):
+        for instance in self.instances:
+            print instance.formatted_str(global_options.verbose)
+            if global_options.verbose:
+                pass
+
+register_action(DZListInstances)
+ 
+
+class DZListZeoInstances(DZAction):
+    name = 'list-zeoinstances'
+    help = 'print list of ZEO instances'
+
+    def check_args(self, global_options):
+        if len(self.args) > 1:
+            self.error("[<instance pattern>]")
+        self.instances = locate_zeoinstances(versions=global_options.zversion)
+        if self.args:
+            pattern = self.args[0]
+            instances = [i for i in self.instances if fnmatch.fnmatch(i.name, pattern)]
+            if not instances:
+                self.error("no ZEO instance matching pattern `%s'" % pattern)
+            self.instances = instances
+        return self.errors_occured
+
+    def run(self, global_options):
+        for instance in self.instances:
+            print instance.formatted_str(global_options.verbose)
+            if global_options.verbose:
+                pass
+
+register_action(DZListZeoInstances)
+
+
+class DZRestartPendingInstances(DZAction):
+    name = 'restart-pending-instances'
+    help = "restart instances with `restart-pending' markers"
+
+    def check_args(self, global_options):
+        if self.args:
+            self.error("no arguments required")
+        return self.errors_occured
+
+    def run(self, global_options):
+        for zversion in available_zope_versions():
+            zope = filter_zope_version(version=zversion)
+            pattern = os.path.join(zope['instance'], '*', 'var', 'restart-pending')
+            for pending in glob.glob(pattern):
+                home = os.path.dirname(os.path.dirname(pending))
+                instance = ZopeInstance(home, zope['version'])
+                if instance.is_running():
+                    instance.zopectl('restart')
+                os.unlink(pending)
+
+        # compatibility with old 2.6 installations
+        if os.path.exists('/var/run/zope.restart'):
+            subprocess.call(['/usr/sbin/invoke-rc.d', 'zope', 'restart'])
+            os.unlink('/var/run/zope.restart')
+
+register_action(DZRestartPendingInstances)
+
+
+class DZShowInstance(DZAction):
+    name = 'show-instance'
+    help = 'print information about an instance'
+
+    def check_args(self, global_options):
+        if not self.args:
+            self.error('no instance to list')
+        if len(self.args) > 1:
+            self.error('<instance>')
+        try:
+            self.instance = locate_instance(self.args[0],
+                                            versions=global_options.zversion)
+        except DZError, msg:
+            self.error(msg)
+        return self.errors_occured
+
+    def run(self, global_options):
+        print self.instance.formatted_str(global_options.verbose)
+
+register_action(DZShowInstance)
+
+
+class DZInstanceRestartPolicy(DZAction):
+    name = 'instance-restart-policy'
+    help = 'get/set a policy on addon installation for an instance'
+
+    def check_args(self, global_options):
+        if not self.args:
+            self.error('<instance> [<policy>]')
+        self.policy = None
+        if len(self.args) > 1:
+            self.policy = self.args[1]
+        elif len(self.args) > 2:
+            self.error('<instance> [<policy>]')
+        try:
+            self.instance = locate_instance(self.args[0],
+                                            versions=global_options.zversion)
+        except DZError, msg:
+            self.error(msg)
+        if self.policy:
+            try:
+                self.instance.set_restart_policy(self.policy)
+            except DZError, msg:
+                self.error(msg)
+        return self.errors_occured
+
+    def run(self, global_options):
+        if self.policy:
+            self.instance.set_restart_policy(self.policy)
+            self.instance.write_dzfile(global_options.uid, global_options.gid)
+        else:
+            print self.instance.restart_policy
+
+register_action(DZInstanceRestartPolicy)
+
+
+class DZInstanceAddonTechnique(DZAction):
+    name = 'instance-addon-technique'
+    help = 'get/set an addon install technique for an instance'
+
+    def check_args(self, global_options):
+        if not self.args:
+            self.error('<instance> [<addon technique>]')
+        self.technique = None
+        if len(self.args) > 1:
+            self.technique = self.args[1]
+            if not self.technique in addon_techniques:
+                self.error("unknown addon technique `%s'" % self.technique)
+        elif len(self.args) > 2:
+            self.error('<instance> [<addon technique>]')
+        try:
+            self.instance = locate_instance(self.args[0],
+                                            versions=global_options.zversion)
+        except DZError, msg:
+            self.error(msg)
+        return self.errors_occured
+
+    def run(self, global_options):
+        if self.technique:
+            # set technique
+            self.instance.set_addon_technique(self.technique)
+            self.instance.write_dzfile(global_options.uid, global_options.gid)
+        else:
+            print self.instance.addon_technique
+
+register_action(DZInstanceAddonTechnique)
+
+
+class DZInstanceAddonMode(DZAction):
+    name = 'instance-addon-mode'
+    help = 'set an addon mode for an instance'
+
+    def check_args(self, global_options):
+        if not self.args:
+            self.error('<instance> [<addon mode>]')
+        self.addon_mode = None
+        if len(self.args) > 1:
+            self.addon_mode = self.args[1]
+            if not self.addon_mode in addon_modes:
+                self.error("unknown addon mode `%s'" % self.addon_mode)
+        elif len(self.args) > 2:
+            self.error('<instance> [<addon mode>]')
+        try:
+            self.instance = locate_instance(self.args[0],
+                                            versions=global_options.zversion)
+        except DZError, msg:
+            self.error(msg)
+        return self.errors_occured
+
+    def run(self, global_options):
+        if self.addon_mode:
+            # set addon_mode
+            self.instance.set_addon_mode(self.addon_mode)
+            self.instance.write_dzfile(global_options.uid, global_options.gid)
+            # TODO: manual -> all: add addons
+        else:
+            print self.instance.addon_mode
+
+register_action(DZInstanceAddonMode)
+
+
+class DZMakeInstance(DZAction):
+    name = 'make-instance'
+    help = 'run zope version mkzopeinstance'
+
+    def __init__(self):
+        DZAction.__init__(self)
+        self.get_option_parser().set_usage(
+            'usage: %s [<option> ...] %s <instance-name> [<option> ...]' % (program, self.name))
+
+    def get_option_parser(self):
+        if not self._option_parser:
+            p = OptionParser()
+            p.add_option('-m', '--addon-mode',
+                         help="which products and extension to install (all, manual)",
+                         action='store', dest='amode')
+            p.add_option('-t', '--addon-install-technique',
+                         help="how to install addons (linked, tree-linked, copied)",
+                         default="tree-linked", action='store', dest='atechnique')
+            p.add_option('-r', '--restart',
+                         help="when to restart on configuration (configuring, end, manually)",
+                         default="end", action='store', dest='restart')
+            p.add_option('-u', '--user', help="user and password for the initial user (user:password)",
+                         action='store', dest='user')
+            p.add_option('', '--service-user', help="system user used to run this instance (user:group)",
+                         action='store', dest='srvuser', default='zope:zope')
+            p.add_option('', '--service-port', help="HTTP port used to run this instance",
+                         action='store', dest='srvport', default='9673')
+            self._option_parser = p
+        return self._option_parser
+
+    def check_args(self, global_options):
+        if len(self.args) != 1:
+            self._option_parser.print_help()
+            sys.exit(1)
+
+        if not global_options.zversion:
+            self.error('no zope version to make instance for')
+
+        if len(global_options.zversion) > 1:
+            self.error('ambiguous zope version to make instance for: %s'
+                       % strlist(global_options.zversion))
+
+        if self.options.user and not ":" in self.options.user:
+            self.error('user must be specified as name:password')
+
+        if not is_root() and self.options.srvuser == 'zope:zope':
+            self.uid = os.getuid()
+            self.gid = os.getgid()
+            self.options.srvuser = "%s:%s" % \
+                (pwd.getpwuid(os.getuid())[0], grp.getgrgid(os.getgid())[0])
+        elif not ":" in self.options.srvuser:
+            self.error('service user must be specified as user:group')
+        else:
+            try:
+                uid, gid = self.options.srvuser.split(":")
+                self.uid = pwd.getpwnam(uid)[2]
+                self.gid = grp.getgrnam(gid)[2]
+            except KeyError, msg:
+                self.error(msg)
+
+        self.zversion = global_options.zversion[0]
+        self.instance_name = self.args[0]
+
+        if not self.options.amode:
+            self.error("missing option -m <addon-mode>")
+        if not self.options.amode in addon_modes:
+            self.error("unknown addon mode `%s'" % self.options.amode)
+
+        if not self.options.atechnique in addon_techniques:
+            self.error("unknown addon technique `%s'" % self.options.atechnique)
+    
+        if not self.options.restart in ('configuring', 'end', 'manually'):
+            self.error("unknown restart policy `%s'" % self.options.restart)
+
+        self.zope = filter_zope_version(version=self.zversion)
+        if is_root():
+            self.instance_home = os.path.join(self.zope['instance'], self.instance_name)
+        else:
+            self.instance_home = os.path.join(personal_conf['instances'], self.zope['name'], self.instance_name)
+        if os.path.exists(self.instance_home):
+            self.error("instance home `%s' already exists" % self.instance_home)
+        return self.errors_occured
+
+    def run(self, global_options):
+        if self.zversion.startswith('2.'):
+            cmd = [os.path.join(self.zope['prefix'], 'bin', 'mkzopeinstance.py')]
+        else:
+            cmd = [os.path.join(self.zope['prefix'], 'bin', 'mkzopeinstance'), '--password-manager=MD5']
+        cmd.append('--dir=%s' % self.instance_home)
+        cmd.append('--layout=%s' % (is_root() and 'fhs' or 'zope'))
+        if self.options.user:
+            cmd.append('--user=' + self.options.user)
+        if self.options.srvuser:
+            cmd.append('--service-user=' + self.options.srvuser)
+        if self.options.srvport:
+            cmd.append('--service-port=' + self.options.srvport)
+
+        # zope3's mkzopeinstance doesn't create the parents dir
+        if self.zope['version'] == '3' and not os.path.isdir(self.instance_home):
+            os.makedirs(self.instance_home)
+            os.rmdir(self.instance_home)
+
+        rv = subprocess.call(cmd)
+        if rv:
+            subprocess.call(['/bin/rm', '-fr', self.instance_home])
+            sys.exit(rv)
+        instance = ZopeInstance(self.instance_home, self.zversion, read_dzfile=False)
+        instance.set_addon_mode(self.options.amode)
+        instance.set_addon_technique(self.options.atechnique)
+        instance.set_restart_policy(self.options.restart)
+        instance.write_dzfile(uid=self.uid, gid=self.gid)
+        if not instance.addon_installation_required():
+            return
+        for addon in locate_addons(zopeversions=global_options.zversion):
+            try:
+                instance.add_addon(addon, global_options, None)
+            except DZError, msg:
+                # more than one product version ..., ignore it for now
+                self.warn(msg)
+
+register_action(DZMakeInstance)
+
+
+class DZMakeZeoInstance(DZAction):
+    name = 'make-zeoinstance'
+    help = 'run zope version mkzeoinstance'
+
+    def __init__(self):
+        DZAction.__init__(self)
+        self.get_option_parser().set_usage(
+            'usage: %s [<option> ...] %s <zeoinstance-name> [<port>]' % (program, self.name))
+
+    def get_option_parser(self):
+        if not self._option_parser:
+            p = OptionParser()
+            self._option_parser = p
+        return self._option_parser
+
+    def check_args(self, global_options):
+        if len(self.args) not in (1, 2):
+            self._option_parser.print_help()
+            sys.exit(1)
+
+        if not global_options.zversion:
+            self.error('no zope version to make instance for')
+
+        if len(global_options.zversion) > 1:
+            self.error('ambiguous zope version to make instance for: %s'
+                       % strlist(global_options.zversion))
+
+        self.zversion = global_options.zversion[0]
+        self.instance_name = self.args[0]
+        if len(self.args) > 1:
+            try:
+                self.port = int(self.args[1])
+            except ValueError:
+                self.error('the zeo-instance port number has to be integer')
+        else:
+            self.port = None
+        self.zope = filter_zope_version(version=self.zversion)
+
+        if is_root():
+            self.instance_home = os.path.join(self.zope['zeoinstance'], self.instance_name)
+        else:
+            self.instance_home = os.path.join(personal_conf['zeoinstances'], self.zope['name'], self.instance_name)
+        if os.path.exists(self.instance_home):
+            self.error("instance home `%s' already exists" % self.instance_home)
+        return self.errors_occured
+
+    def run(self, global_options):
+        if self.zversion.startswith('2.'):
+            cmd = [os.path.join(self.zope['prefix'], 'bin', 'mkzeoinstance.py')]
+        else:
+            cmd = [os.path.join(self.zope['prefix'], 'bin', 'mkzeoinstance')]
+
+        cmd.append(self.instance_home)
+        if self.port != None:
+            cmd.append(str(self.port))
+            
+        rv = subprocess.call(cmd)
+        if rv:
+            subprocess.call(['/bin/rm', '-fr', self.instance_home])
+            sys.exit(rv)
+
+register_action(DZMakeZeoInstance)
+
+
+class DZRemoveInstance(DZAction):
+    name = 'remove-instance'
+    help = 'remove addons from an instance (except data files), mark it as removed'
+
+    def check_args(self, global_options):
+        if len(self.args) != 1:
+            self.error('<instance>')
+        try:
+            self.instance = locate_instance(self.args[0],
+                                            versions=global_options.zversion)
+        except DZError, msg:
+            self.error(msg)
+        return self.errors_occured
+
+    def run(self, global_options):
+        cmd = ["rm", "-rf", 
+               self.instance.home + "/Products",
+               self.instance.home + "/Extensions",
+               self.instance.home + "/lib",
+               self.instance.home + "/bin",
+               self.instance.home + "/inituser",
+               ]
+        rv = subprocess.call(cmd)
+        if rv:
+            sys.exit(rv)
+
+register_action(DZRemoveInstance)
+
+
+class DZPurgeInstance(DZAction):
+    name = 'purge-instance'
+    help = 'purge files in an instance (including data files)'
+
+    def check_args(self, global_options):
+        if len(self.args) != 1:
+            self.error('<instance>')
+        try:
+            self.instance = locate_instance(self.args[0],
+                                            versions=global_options.zversion)
+        except DZError, msg:
+            self.error(msg)
+        return self.errors_occured
+
+    def run(self, global_options):
+        cmd = ["rm", "-rf", 
+               self.instance.home,
+               "/etc/zope%s/%s" % (self.instance.version, self.instance.name),
+               "/var/log/zope%s/%s" % (self.instance.version, self.instance.name),
+               ]
+        rv = subprocess.call(cmd)
+        if rv:
+            sys.exit(rv)
+
+register_action(DZPurgeInstance)
+
+
+class DZPurgeZeoInstance(DZAction):
+    name = 'purge-zeoinstance'
+    help = 'purge files in a ZEO instance (including data files)'
+
+    def check_args(self, global_options):
+        if len(self.args) != 1:
+            self.error('<zeo_instance>')
+        try:
+            self.instance = locate_zeoinstance(self.args[0],
+                                            versions=global_options.zversion)
+        except DZError, msg:
+            self.error(msg)
+        return self.errors_occured
+
+    def run(self, global_options):
+        cmd = ["rm", "-rf", 
+               self.instance.home]
+        rv = subprocess.call(cmd)
+        if rv:
+            sys.exit(rv)
+
+register_action(DZPurgeZeoInstance)
+
+
+class DZZopectl(DZAction):
+    name = 'zopectl'
+    help = 'call zopectl for a given instance'
+
+    def get_option_parser(self):
+        if not self._option_parser:
+            class UnknownOptionParser(OptionParser):
+                def parse_args(self, args):
+                    opts, tmp = OptionParser.parse_args(self, [])
+                    return opts, args
+            p = UnknownOptionParser()
+            self._option_parser = p
+        return self._option_parser
+
+    def check_args(self, global_options):
+        if len(self.args) < 1 or self.args[0].startswith('-'):
+            self.error('<instance> <zdctl-action> [<zdctl options>]')
+        try:
+            self.instance = locate_instance(self.args[0],
+                                            versions=global_options.zversion)
+        except DZError, msg:
+            self.error(msg)
+        if len(self.args) > 1 and self.args[1].startswith('-'):
+            print >>sys.stderr, ("missing zdctl action, entering interactive mode ...")
+        if [arg for arg in self.args if arg in ('-i', '--interactive')]:
+            print >>sys.stderr, ("entering interactive mode after executing command ...")
+        return self.errors_occured
+
+    def run(self, global_options):
+        rv = self.instance.zopectl(self.args[1:])
+        if rv:
+            sys.exit(rv)
+
+register_action(DZZopectl)
+
+
+class DZZeoctl(DZAction):
+    name = 'zeoctl'
+    help = 'call zeoctl for a given instance'
+
+    def get_option_parser(self):
+        if not self._option_parser:
+            class UnknownOptionParser(OptionParser):
+                def parse_args(self, args):
+                    opts, tmp = OptionParser.parse_args(self, [])
+                    return opts, args
+            p = UnknownOptionParser()
+            self._option_parser = p
+        return self._option_parser
+
+    def check_args(self, global_options):
+        if len(self.args) < 1 or self.args[0].startswith('-'):
+            self.error('<instance> <zeoctl-action> [<zeoctl options>]')
+        try:
+            self.instance = locate_zeoinstance(self.args[0],
+                                            versions=global_options.zversion)
+        except DZError, msg:
+            self.error(msg)
+        if len(self.args) > 1 and self.args[1].startswith('-'):
+            print >>sys.stderr, ("missing zeoctl action, entering interactive mode ...")
+        if [arg for arg in self.args if arg in ('-i', '--interactive')]:
+            print >>sys.stderr, ("entering interactive mode after executing command ...")
+        return self.errors_occured
+
+    def run(self, global_options):
+        rv = self.instance.zeoctl(self.args[1:])
+        if rv:
+            sys.exit(rv)
+
+register_action(DZZeoctl)
+
+
+class ZopeInstance:
+    def __init__(self, home, version, read_dzfile = True):
+        self.home = home
+        self.name = os.path.basename(home)
+        self.version = version
+        self.addon_technique = None
+        self.restart_policy = None
+        self.addon_mode = None
+        self.excluded_addons = []
+        self.new_layout = os.path.exists(os.path.join(home, 'bin', 'runzope'))
+        self.is_purged = False
+        self.is_purged |= not os.path.exists(os.path.join(home, 'var', 'Data.fs'))
+        self.is_purged |= not os.path.exists(os.path.join(home, 'var', 'Data.fs.index'))
+        self.is_removed = False
+        self.is_removed |= not os.path.exists(os.path.join(home, 'bin', 'zopectl'))
+        if os.path.isfile(os.path.join(home, 'inituser')):
+            self.userfile = 'inituser'
+        elif os.path.isfile(os.path.join(home, 'access')):
+            self.userfile = 'access'
+        else:
+            self.userfile = None
+        if read_dzfile: self.read_dzfile()
+        self._installed_addons = None
+
+    def set_addon_technique(self, addon_technique):
+        old_technique = self.addon_technique
+        if isinstance(addon_technique, str):
+            self.addon_technique = list(addon_options).index(addon_technique)
+        elif isinstance(addon_technique, int):
+            self.addon_technique = addon_technique
+        else:
+            raise TypeError, "unknown type for addon technique"
+        if old_technique != None and self.addon_technique != old_technique:
+            print >>sys.stderr, "WARNING: change of instance addon technique not yet supported"
+        # manage addons
+        # self.write_dzfile()
+
+    def set_restart_policy(self, policy):
+        if policy in (None, 'configuring', 'end', 'manually'):
+            self.restart_policy = policy
+        else:
+            raise ValueError, "unknown restart policy `%s'" % policy
+
+    def set_addon_mode(self, addon_mode):
+        if addon_mode in addon_modes:
+            self.addon_mode = addon_mode
+        else:
+            raise ValueError, "unknown addon_mode `%s'" % addon_mode
+
+    def addon_installation_required(self, addon=None):
+        return self.addon_mode == 'all'
+
+    def is_addon_excluded(self, name):
+        return name in self.excluded_addons
+
+    def read_dzfile(self):
+        fn = os.path.join(self.home, 'etc', 'debian_policy')
+        self.dzfile_exists = os.path.exists(fn)
+        if not self.dzfile_exists:
+            self.set_addon_mode('manual')
+            self.set_addon_technique(ADDON_MANUAL)
+            self.set_restart_policy('manually')
+            return
+        attrs = read_config_file(fn, required=['Name', 'Addon-Mode',
+                                               'Addon-Technique', 'Restart-Policy'])
+
+        try:
+            self.set_addon_technique(attrs['Addon-Technique'])
+        except ValueError:
+            raise DZError, \
+                  "unknown addon technique `%s' in `%s'" % (attrs['Addon-Technique'], fn)
+
+        try:
+            self.set_addon_mode(attrs['Addon-Mode'])
+        except ValueError:
+            raise DZError, \
+                  "unknown addon mode `%s' in `%s'" % (attrs['Addon-Mode'], fn)
+
+        try:
+            self.set_restart_policy(attrs['Restart-Policy'])
+        except KeyError:
+            pass
+        except ValueError, msg:
+            raise DZError, "%s in `%s'" % (attrs['Restart-Policy'], fn)
+
+        try:
+            self.excluded_addons = attrs['Excluded-Addons'].split()
+        except KeyError:
+            pass
+
+        if attrs['Name'] != self.name:
+            raise DZError, "instance name `%s' doesn't match in `%s'" % (attrs['Name'], fn)
+            
+    def write_dzfile(self, uid=None, gid=None):
+        fn = os.path.join(self.home, 'etc', 'debian_policy')
+        if os.path.exists(fn):
+            try:
+                os.path.unlink(fn + '.old')
+            except:
+                pass
+            os.rename(fn, fn + '.old')
+        attrs = {'Name': self.name,
+                 'Addon-Technique': addon_technique_name(self.addon_technique),
+                 'Addon-Mode': self.addon_mode,
+                 'Restart-Policy': self.restart_policy
+                 }
+        if self.excluded_addons:
+            attrs['Excluded-Addons'] = ' '.join(self.excluded_addons)
+        write_config_file(fn, attrs, uid=uid, gid=gid)
+
+    def installed_addons(self):
+        if self._installed_addons == None:
+            self._installed_addons = locate_addons(instance=self)
+        return self._installed_addons
+
+    def add_addon(self, addon, global_options, addon_technique=None):
+        installed = [a for a in self.installed_addons() if addon.name == a.name]
+        if installed:
+            a = installed[0]
+            print "%s `%s' already available in instance `%s'" % (a.kind, a.name, self.name)
+            return
+
+        addon_technique = addon_technique or self.addon_technique
+        if addon_technique == ADDON_MANUAL:
+            return
+        assert addon_technique in (ADDON_LINKED, ADDON_TREELINKED, ADDON_COPIED)
+
+        if self.version.startswith("3"):
+            files = []
+            files.extend(glob.glob(os.path.join(addon.path, '*-configure.zcml')))
+            files.extend(glob.glob(os.path.join(addon.path, '*-meta.zcml')))
+            files.extend(glob.glob(os.path.join(addon.path, '*-ftesting.zcml')))
+            for f in files:
+                filename = os.path.split(f)[1]
+                os.symlink(f, os.path.join(self.home, "etc/package-includes/", filename))
+
+        target_path = os.path.join(self.home, addon.subdir, addon.name)
+        if addon.is_global:
+            open(target_path + '.installed', 'w').write(addon.path)
+            target_path = addon.path
+        elif addon_technique == ADDON_LINKED:
+            os.symlink(addon.path, target_path)
+            if global_options.verbose:
+                print "linked: %s -> %s" % (target_path, addon.path)
+        elif addon_technique == ADDON_TREELINKED:
+            copytree(addon.path, target_path, copy_all=False,
+                     uid=global_options.uid, gid=global_options.gid)
+            if global_options.verbose:
+                print "tree linked: %s -> %s" % (target_path, addon.path)
+        elif addon_technique == ADDON_COPIED:
+            copytree(addon.path, target_path, copy_all=True,
+                     uid=global_options.uid, gid=global_options.gid)
+            if global_options.verbose:
+                print "copied: %s -> %s" % (addon.path, target_path)
+
+        added_addon = addon.addonClass(target_path, False)
+        self._installed_addons.append(added_addon)
+        logging.info("added %s `%s'", added_addon.kind, added_addon.path)
+
+    def remove_addon(self, addon, global_options):
+        installed = [a for a in self.installed_addons() if getattr(addon, 'name', None) == a.name]
+        if len(installed) != 1:
+            raise DZError, "%s `%s' not installed in instance `%s'" \
+                  % (addon.kind, addon.name, self.name)
+        installed = installed[0]
+        assert addon.name == installed.name
+
+        if self.version.startswith("3"):
+            files = []
+            files.extend(glob.glob(os.path.join(addon.path, '*-configure.zcml')))
+            files.extend(glob.glob(os.path.join(addon.path, '*-meta.zcml')))
+            files.extend(glob.glob(os.path.join(addon.path, '*-ftesting.zcml')))
+            for f in files:
+                filename = os.path.split(f)[1]
+                target = os.path.join(self.home, "etc/package-includes/", filename)
+                if os.path.exists(target):
+                    os.unlink(target)
+
+        if addon.is_global:
+            os.unlink(os.path.join(self.home, addon.subdir, addon.name) + '.installed')
+        elif installed.type == ADDON_LINKED:
+            os.unlink(installed.path)
+        elif installed.type in (ADDON_MANUAL, ADDON_COPIED) and not global_options.force:
+            raise DZError, "not removing copied or manually installed %s `%s'" \
+                  % (installed.kind, installed.name)
+        elif installed.type in (ADDON_TREELINKED, ADDON_COPIED) and not global_options.force:
+            if os.path.islink(installed.path):
+                os.unlink(installed.path)
+            else:
+                try:
+                    deltree(addon.path, installed.path)
+                except Exception, msg:
+                    raise DZError, msg
+        elif global_options.force:
+            if os.path.islink(installed.path):
+                os.unlink(installed.path)
+            else:
+                shutil.rmtree(installed.path)
+        else:
+            return
+
+        self._installed_addons.remove(installed)
+        logging.info("removed %s `%s'", installed.kind, installed.path)
+
+    def handle_restart_policy(self, policy='end', reason='-'):
+        # instance restart policy overwrites option
+        if self.restart_policy:
+            policy = self.restart_policy
+
+        if not self.is_running():
+            return
+
+        if policy == 'manually':
+            return
+        elif policy == 'end' and self.is_running():
+            fd = file(os.path.join(self.home, 'var', 'restart-pending'), 'a+')
+            fd.write(reason + '\n')
+            fd.close()
+        elif policy == 'configuring':
+            rv = self.zopectl('restart')
+            if rv:
+                sys.exit(rv)
+
+    def is_running(self):
+        cmd = [os.path.join(self.home, 'bin', 'zopectl'), 'status']
+        return os.path.isfile(cmd[0]) and \
+            "program running;" in subprocess.Popen(args=cmd,
+            stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.read()
+
+    def zopectl(self, *args):
+        cmd = [os.path.join(self.home, 'bin', 'zopectl')]
+        os.chdir(self.home)
+        if args and isinstance(args[0], list):
+            cmd.extend(args[0])
+        else:
+            cmd.extend(args)
+        return subprocess.call(cmd)
+        
+    def formatted_str(self, verbose):
+        s = '%(name)-20s %(version)-5s ' % self.__dict__
+        s += ' addon-mode=%s' % self.addon_mode
+        if isinstance(self.addon_technique, int):
+            addon_technique = addon_options[self.addon_technique]
+        else:
+            addon_technique = self.addon_technique
+        s += ' addon-technique=%s' % addon_technique
+        if self.userfile: s += ' userfile=' + self.userfile
+        if not self.new_layout: s += ' layout=(2.5 and before)'
+        if self.is_purged: s += ' purged'
+        elif self.is_removed: s += ' removed'
+        if verbose:
+            pass
+        return s
+
+
+class ZeoInstance:
+
+    def __init__(self, home, version):
+        self.home = home
+        self.name = os.path.basename(home)
+        self.version = version
+
+    def is_running(self):
+        cmd = [os.path.join(self.home, 'bin', 'zeoctl'), 'status']
+        return not "not running" in subprocess.Popen(args=cmd,
+            stdout=subprocess.PIPE, stderr=subprocess.STDOUT).read()
+
+    def zeoctl(self, *args):
+        cmd = [os.path.join(self.home, 'bin', 'zeoctl')]
+        os.chdir(self.home)
+        if args and isinstance(args[0], list):
+            cmd.extend(args[0])
+        else:
+            cmd.extend(args)
+        return subprocess.call(cmd)
+        
+    def formatted_str(self, verbose):
+        s = '%(name)-20s %(version)-5s ' % self.__dict__
+        if verbose:
+            pass
+        return s
+
+
+def copytree(sourcedir, destdir, copy_all=True, uid=None, gid=None):
+    os.mkdir(destdir)
+    destdir = os.path.abspath(destdir)
+    shutil.copymode(sourcedir, destdir)
+    if not uid is None:
+        os.chown(destdir, uid, gid)
+    saved_pwd = os.getcwd()
+    os.chdir(sourcedir)
+    for root, dirs, files in os.walk(sourcedir):
+        if root == sourcedir:
+            relroot = ''
+        else:
+            relroot = root[len(sourcedir)+1:]
+        for name in files:
+            source = os.path.join(root, name)
+            target = os.path.join(destdir, relroot, name)
+            if copy_all and os.path.islink(source):
+                print "copy target of symlink %s" % source
+            if copy_all:
+                shutil.copy2(source, target)
+                if not uid is None:
+                    os.chown(target, uid, gid)
+            else:
+                os.symlink(source, target)
+        for name in dirs:
+            source = os.path.join(root, name)
+            target = os.path.join(destdir, relroot, name)
+            if os.path.islink(source):
+                print "symlink replaced by directory %s" % source
+            os.mkdir(target)
+            shutil.copymode(sourcedir, destdir)
+            if not uid is None:
+                os.chown(target, uid, gid)
+    os.chdir(saved_pwd)
+
+def deltree(sourcedir, destdir):
+    """remove files found in sourcedir in destdir, remove
+    corresponding .'py[co]' files as well"""
+
+    destdir = os.path.abspath(destdir)
+    dzfile = None
+    if os.path.exists(os.path.join(destdir, '.dzproduct')):
+        dzfile = os.path.join(destdir, '.dzproduct')
+    elif os.path.exists(os.path.join(destdir, '.dzextension')):
+        dzfile = os.path.join(destdir, '.dzextension')
+    if dzfile:
+        saved_dzfile = os.path.join(os.path.dirname(destdir),
+                                    '.dz.%d' % os.getpid())
+        shutil.move(dzfile, saved_dzfile)
+    try:
+        saved_pwd = os.getcwd()
+        os.chdir(sourcedir)
+        for root, dirs, files in os.walk(sourcedir, topdown=False):
+            if root == sourcedir:
+                relroot = ''
+            else:
+                relroot = root[len(sourcedir)+1:]
+            for name in files:
+                #source = os.path.join(root, name)
+                target = os.path.join(destdir, relroot, name)
+
+                if os.path.exists(target):
+                    os.unlink(target)
+                if target.endswith('.py'):
+                    if os.path.exists(target + 'c'):
+                        os.unlink(target + 'c')
+                    if os.path.exists(target + 'o'):
+                        os.unlink(target + 'o')
+            for name in dirs:
+                #source = os.path.join(root, name)
+                target = os.path.join(destdir, relroot, name)
+                if os.path.islink(target):
+                    # should not happen
+                    os.unlink(target)
+                else:
+                    try:
+                        os.rmdir(target)
+                    except OSError, msg:
+                        pass
+                        #print >>sys.stderr, "rmdir `%s' failed: %s" % (target, msg)
+        os.rmdir(destdir)
+    except (IOError, OSError), msg:
+        print >>sys.stderr, msg
+        if dzfile:
+            shutil.move(saved_dzfile, dzfile)
+        raise
+    else:
+        os.unlink(saved_dzfile)
+    os.chdir(saved_pwd)
+
+def locate_instances(versions=None):
+    instances = []
+    pkgs = [(z['version'], z['instance']) for z in zope_packages
+            if not versions or z['version'] in versions]
+    for version, instance_dir in pkgs:
+        inst_list = glob.glob(os.path.join(instance_dir, '*'))
+        if not is_root():
+            inst_list.extend(glob.glob(os.path.join(
+                personal_conf['instances'], 'zope%s' % version, '*')))
+        for home in inst_list:
+            if os.path.isdir(os.path.join(home, 'var')):
+                instance = ZopeInstance(home, version)
+                instances.append(instance)
+    return instances
+
+def locate_zeoinstances(versions=None):
+    instances = []
+    pkgs = [(z['version'], z['zeoinstance']) for z in zope_packages
+            if not versions or z['version'] in versions]
+    for version, instance_dir in pkgs:
+        inst_list = glob.glob(os.path.join(instance_dir, '*'))
+        if not is_root():
+            inst_list.extend(glob.glob(os.path.join(
+                personal_conf['zeoinstances'], 'zope%s' % version, '*')))
+        for home in inst_list:
+            if os.path.isdir(os.path.join(home, 'var')):
+                instance = ZeoInstance(home, version)
+                instances.append(instance)
+    return instances
+
+def locate_instance(name, versions=None):
+    instances = locate_instances(versions=versions)
+    known = [i for i in instances if i.name == name]
+    if not known:
+        raise DZError, "unknown instance `%s'" % name
+    elif len(known) > 1:
+        s = ', '.join(["`%s' (%s)" % (i.name, i.version) for i in known])
+        raise DZError, "ambiguous instance name `%s' matching %s" % (name, s)
+    return known[0]
+
+def locate_zeoinstance(name, versions=None):
+    instances = locate_zeoinstances(versions=versions)
+    known = [i for i in instances if i.name == name]
+    if not known:
+        raise DZError, "unknown ZEO instance `%s'" % name
+    elif len(known) > 1:
+        s = ', '.join(["`%s' (%s)" % (i.name, i.version) for i in known])
+        raise DZError, "ambiguous ZEO instance name `%s' matching %s" % (name, s)
+    return known[0]
+
+def locate_addons(addonClass=None, arch=None, instance=None, zopeversions=None):
+    if instance:
+        prefixes = [instance.home]
+    elif arch == 'any':
+        prefixes = ['/usr/lib/zope']
+    elif arch == 'all':
+        prefixes = ['/usr/share/zope', '/usr/local/share/zope']
+    else:
+        prefixes = ['/usr/share/zope', '/usr/lib/zope', '/usr/local/share/zope']
+    if addonClass == Product:
+        subdirs = [Product.subdir]
+    elif addonClass == Extension:
+        subdirs = [Extension.subdir]
+    else:
+        subdirs = [Product.subdir, Extension.subdir]
+    locals = []
+    if not instance and not is_root():
+        locals.append(personal_conf['products'])
+    addons = []
+    for d in locals + [os.path.join(pf, sd) for pf in prefixes for sd in subdirs]:
+        for path in glob.glob(os.path.join(d, '*')):
+            if os.path.isfile(path) and path.endswith('.installed'):
+                path = open(path, 'r').read()
+                addonClass = Product
+            elif not os.path.isdir(path):
+                continue
+            elif not addonClass:
+                if os.path.basename(os.path.dirname(path)) == Product.subdir:
+                    addonClass = Product
+                else:
+                    addonClass = Extension
+            addon = addonClass(path, False)
+            zver = False
+            if zopeversions != None:
+                for i in addon.zopeversions.split():
+                    if i in zopeversions:
+                        zver = True
+                        break
+            else:
+                zver = True
+            if zver:
+                addons.append(addon)
+    return addons
+
+# --------------------------------------------------------------------------- #
+
+# print an error message
+def usage(stream, msg=None):
+    print >>stream, msg
+    print >>stream, "use `%s help' for help on actions and arguments" % program
+    print >>stream
+    sys.exit(1)
+
+# match a string with the list of available actions
+def action_matches(action, actions):
+    prog = re.compile('[^-]*?-'.join(action.split('-')))
+    return [a for a in actions if prog.match(a)]
+
+# parse command line arguments
+def parse_options(args):
+    shortusage = 'usage: %prog [<option> ...] <action> [<option> ...]'
+    parser = OptionParser(usage=shortusage)
+    parser.disable_interspersed_args()
+
+    # setup the parsers object
+    parser.remove_option('-h')
+    parser.add_option('-h', '--help',
+                      help='help screen',
+                      action='store_true', dest='help')
+    parser.add_option('-v', '--verbose',
+                      help='verbose mode',
+                      action='store_true', dest='verbose')
+    parser.add_option('-f', '--force',
+                      help='force things, i.e. overwriting, removing stuff',
+                      action='store_true', dest='force')
+    parser.add_option('-z', '--zope-version',
+                      help='limit actions to comma separated list of zope versions',
+                      action='store', dest='zversion')
+    parser.add_option('-n', '--dry-run',
+                      help='do not execute commands, print only (not yet implemented)',
+                      action='store', default=False, dest='dryrun')
+    parser.add_option('-u', '--user',
+                      help='<user>[:<group>] ownership for new and copied files',
+                      action='store', dest='user')
+    parser.add_option('-c', '--config-file',
+                      help='configuration file (default is /etc/dzhandle.conf)',
+                      action='store', dest='conffile', default="/etc/dzhandle.conf")
+    global_options, args = parser.parse_args()
+
+    # Print the help screen and exit
+    if len(args) == 0 or args[0].lower() == 'help' or global_options.help:
+        parser.print_help()
+        print "\nactions:"
+        for n, a in sorted(known_actions.items()):
+            print "  %-21s %s" % (n, a.help)
+        print ""
+        sys.exit(1)
+
+    # dry-run option not yet implemented
+    if global_options.dryrun:
+        print >>sys.stderr, "option --dry-run not yet implemented"
+        sys.exit(1)
+
+    # check if the specified zope versions really exist
+    known_versions = [z['version'] for z in zope_packages]
+    if global_options.zversion:
+        zversion = global_options.zversion.split(',')
+        unknown_versions = [v for v in zversion if not v in known_versions]
+        if unknown_versions:
+            usage(sys.stderr, 'unknown zope version(s) %s' % strlist(unknown_versions))
+        global_options.zversion = zversion
+    else:
+        global_options.zversion = known_versions
+
+    # get the uid/gid for zope user/group
+    global_options.uid = None
+    global_options.gid = None
+    if global_options.user:
+        if ':' in global_options.user:
+            user, group = global_options.user.split(':')
+        else:
+            user = global_options.user
+            group = None
+    elif not is_root():
+        user = pwd.getpwuid(os.getuid())[0]
+        group = grp.getgrgid(os.getgid())[0]
+    else:
+        user = 'zope'
+        group = 'zope'
+    try:
+        user_info = pwd.getpwnam(user)
+        if group:
+            group_info = grp.getgrnam(group)
+        else:
+            group_info = grp.getgrgid(user_info[3])
+    except KeyError, msg:
+        usage(sys.stderr, msg)
+    global_options.uid = user_info[2]
+    global_options.gid = group_info[2]
+
+    # check if the specified action really exists
+    action_name = args[0]
+    del args[0]
+    matching_actions = action_matches(action_name, known_actions.keys())
+    if len(matching_actions) == 0:
+        usage(sys.stderr, "unknown action `%s'" % action_name)
+    elif len(matching_actions) > 1:
+        usage(sys.stderr,
+              "ambiguous action `%s', matching actions: %s"
+              % (action_name, strlist(matching_actions)))
+    else:
+        action_name = matching_actions[0]
+
+    # instantiate an object for the action and parse the remaining arguments
+    action = known_actions[action_name]()
+    action_options, action_names = action.parse_args(args)
+
+    return global_options, action
+
+# setup logging stuff
+def setup_logging(logfile=None, logfilelevel='INFO', loglevel='WARN'):
+    env_level = os.environ.get('DZHANDLE', None)
+    if env_level != None:
+        loglevel = logging.getLevelName(env_level)
+        if isinstance(loglevel, str):
+            loglevel = logging.INFO
+    
+    logging.basicConfig(format='%(message)s',
+                        level=loglevel,
+                        stream=sys.stderr)
+
+    # are we logging to a file?
+    if logfile:
+        logfilelevel = logging.getLevelName(env_level)
+        if isinstance(logfilelevel, str):
+            logfilelevel = logging.INFO
+
+        from logging.handlers import TimedRotatingFileHandler
+        try:
+            fhandler = TimedRotatingFileHandler(logfile, when='D', backupCount=3)
+        except IOError, msg:
+            print >>sys.stderr, msg
+        else:
+            fhandler.setLevel(logfilelevel)
+            formatter = logging.Formatter('%(asctime)s %(levelname)-8s %(message)s')
+            fhandler.setFormatter(formatter)
+            logging.getLogger('').addHandler(fhandler)
+
+# main routine
+def main():
+    global_options, action = parse_options(sys.argv[1:])
+
+    # read config file
+    try:
+        config = read_config_file(global_options.conffile)
+    except IOError:
+        config = {}
+    except DZError, msg:
+        print >>sys.stderr, msg
+        sys.exit(1)
+
+    # read personal configuration file
+    uid = os.getuid()
+    if not is_root():
+        home_dir = pwd.getpwuid(uid)[5]
+        conf = os.path.join(home_dir, '.dzhandle.conf')
+        personal_conf['instances'] = os.path.join(home_dir, 'zope/instance')
+        personal_conf['products'] = os.path.join(home_dir, 'zope/products')
+        personal_conf['zeoinstances'] = os.path.join(home_dir, 'zope/zeo')
+        if os.path.exists(conf):
+            personal_conf.update(read_config_file(conf))
+        else:
+            write_config_file(conf, personal_conf)
+
+    # setup logging stuff
+    setup_logging(config.get('logfile', None),
+                  config.get('logfilelevel', logging.INFO),
+                  config.get('loglevel', logging.WARN)
+                  )
+    logging.debug('dzhandle ' + ' '.join(sys.argv[1:]))
+
+    # check the arguments according to the action called
+    if action.check_args(global_options):
+        sys.exit(1)
+
+    # run the action and exit
+    rv = action.run(global_options)
+    sys.exit(rv)
+
+# call the main routine
+if __name__ == '__main__':
+    main()


Property changes on: zope-common/tags/0.5.31/dzhandle
___________________________________________________________________
Name: svn:executable
   + *

Added: zope-common/tags/0.5.31/dzhandle.sgml
===================================================================
--- zope-common/tags/0.5.31/dzhandle.sgml	                        (rev 0)
+++ zope-common/tags/0.5.31/dzhandle.sgml	2007-05-14 11:49:18 UTC (rev 871)
@@ -0,0 +1,326 @@
+<!doctype refentry PUBLIC "-//Davenport//DTD DocBook V3.0//EN" [
+
+  <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+  <!ENTITY dhfirstname "<firstname>Fabio</firstname>">
+  <!ENTITY dhsurname   "<surname>Tranchitella</surname>">
+  <!-- Please adjust the date whenever revising the manpage. -->
+  <!ENTITY dhdate      "<date>Aug 19, 2005</date>">
+  <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+       allowed: see man(7), man(1). -->
+  <!ENTITY dhsection   "<manvolnum>1</manvolnum>">
+  <!ENTITY dhemail     "<email>kobold at debian.org</email>">
+  <!ENTITY dhusername  "Fabio Tranchitella">
+  <!ENTITY dhucpackage "<refentrytitle>dzhandle</refentrytitle>">
+  <!ENTITY dhpackage   "dzhandle">
+
+  <!ENTITY debian      "<productname>Debian GNU/Linux</productname> and <productname>Ubuntu Linux</productname>">
+  <!ENTITY gnu         "<acronym>GNU</acronym>">
+]>
+
+<refentry>
+    <docinfo>
+        <address>&dhemail;</address>
+        <author>&dhfirstname; &dhsurname;</author>
+        <copyright>
+            <year>2005</year>
+            <holder>&dhusername;</holder>
+        </copyright>
+        &dhdate;
+    </docinfo>
+
+    <refmeta>
+        &dhucpackage;
+        &dhsection;
+    </refmeta>
+
+    <refnamediv>
+        <refname>&dhpackage;</refname>
+        <refpurpose>Debian/Ubuntu Zope packages handling command line utility </refpurpose>
+    </refnamediv>
+
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>&dhpackage;</command>
+      <arg>options</arg>
+      <command>action</command>
+      <arg>action options</arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+  <refsect1>
+    <title>DESCRIPTION</title>
+        
+    <para>
+      <command>&dhpackage;</command> is the command-line utility for handling 
+      Zope servers, instances and products. It is a system administration tool and a 
+      Debian/Ubuntu maintainer's helper script at the same time: using &dhpackage; 
+      you can manage your Zope installations, create instances, add Zope products to 
+      them, start and stop them, but it is also used by the Debian/Ubuntu Zope 
+      packages for their installation and removal.
+    </para>
+  </refsect1>
+
+  <refsect1>
+    <title>OPTIONS</title>
+    <variablelist>
+      <varlistentry>
+        <term><option>-h, --help</option></term>
+        <listitem><para>Print usage information and exit</para></listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>-f, --force</option></term>
+        <listitem><para>Force things, for example file overwriting or removing</para></listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>-z, --zope-version=ZVERSIONS</option></term>
+        <listitem><para>limit actions to a comma separated list of zope versions; default behaviour is to act on all zope versions available</para></listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>-u, --user=USER[:GROUP]</option></term>
+        <listitem><para>User/Group ownership for new and copied files</para></listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>-c, --config-file=FILE</option></term>
+        <listitem><para>Configuration file; default is /etc/dzhandle.conf</para></listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>-v, --verbose</option></term>
+        <listitem><para>Enable verbose mode (not yet implemented)</para></listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>-n, --dry-run</option></term>
+        <listitem><para>Do not execute commands, print only them (not yet implemented)</para></listitem>
+      </varlistentry>
+    </variablelist>
+  </refsect1>
+
+  <refsect1>
+    <title>ACTIONS (instances handling)</title>
+    <variablelist>
+      <varlistentry>
+        <term><option>make-instance</option> &lt;instance&gt;</term>
+        <listitem>
+          <para>Create a new instance running Zope version specific mkzopeinstance.</para>
+          <variablelist>
+            <varlistentry>
+              <term>-m AMODE, --addon-mode=AMODE</term>
+              <listitem><para>Which products and extensions will be installed: `all' means every product 
+              or extension available will be automatically installed, `manual' means that the products
+              or extensions will be installed manually through &dhpackage;.</para></listitem>
+            </varlistentry>
+            <varlistentry>
+              <term>-t ATECHNIQUE, --addon-install-technique=ATECHNIQUE</term>
+              <listitem><para>How to install addons: `linked' means the product or extension directory
+              will be symlinked into the instance home, `tree-linked' means the directory structure will 
+              be re-created and then files symlinked, `copied' means the file will be copied into the 
+              instance home.</para></listitem>
+            </varlistentry>
+            <varlistentry>
+              <term>-r RESTART, --restart=RESTART</term>
+              <listitem><para>when to restart on configuration of new products or extensions: `configuring'
+              means after every product or extension configuration, `end' means at the end of the installation
+              of all packages, `manually' means no automatic restart will happen.</para></listitem>
+            </varlistentry>
+            <varlistentry>
+              <term>-u USER, --user=USER</term>
+              <listitem><para>user and password for the initial user (in the form `user:password'); these 
+              settigs can be modified later using zpasswd.py utility from Zope.</para></listitem>
+            </varlistentry>
+            <varlistentry>
+              <term>--service-user=SRVUSER</term>
+              <listitem><para>system user used to run this instance (in the form `user:groupdefault', the
+              default is `zope:zope'); this setting can be modified later editing the zope.conf file of
+              the instance.</para></listitem>
+            </varlistentry>
+            <varlistentry>
+              <term>--service-port=SRVPORT</term>
+              <listitem><para>HTTP port used to run this instance (default 9673); this setting can be modified
+              later editing the zope.conf file of the instance.</para></listitem>
+            </varlistentry>
+          </variablelist>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>remove-instance</option> &lt;instance&gt;</term>
+        <listitem><para>Remove an instance (except data files) and mark it as removed.</para></listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>purge-instance</option> &lt;instance&gt;</term>
+        <listitem><para>Purge files for an instance (including data files).</para></listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>show-instance</option> &lt;instance&gt;</term>
+        <listitem><para>Print a short summary about an instance.</para></listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>list-instances</option></term>
+        <listitem><para>Print the list of available instances.</para></listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><option>instance-addon-mode</option> &lt;instance&gt; [&lt;mode&gt;]</term>
+        <listitem><para>Get or set an addon-mode for an instance. </para></listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>instance-addon-technique</option> &lt;instance&gt; [&lt;technique&gt;]</term>
+        <listitem><para>Get or set an addon-install-technique for an instance.</para></listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>instance-restart-policy</option> &lt;instance&gt; [&lt;restart-policy&gt;]</term>
+        <listitem><para>Get or set a policy on addon-installation for an instance.</para></listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><option>zopectl</option> &lt;instance&gt; &lt;zdctl-action&gt; [&lt;zdctl options&gt;]</term>
+        <listitem><para>Call a zopectl action (e.g. `start', `stop' or `restart') for a given instance.</para></listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>restart-pending-instances</option></term>
+        <listitem><para>Restart instances with `restart-pending' markers.</para></listitem>
+      </varlistentry>
+    </variablelist>
+  </refsect1>
+
+  <refsect1>
+    <title>ACTIONS (ZEO instances handling)</title>
+    <variablelist>
+      <varlistentry>
+        <term><option>make-zeoinstance</option> &lt;instance&gt;</term>
+        <listitem>
+          <para>Create a new instance running Zope version specific mkzeoinstance.</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>purge-zeoinstance</option> &lt;instance&gt;</term>
+        <listitem><para>Purge files for a ZEO instance (including data files).</para></listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>list-zeoinstances</option></term>
+        <listitem><para>Print the list of available ZEO instances.</para></listitem>
+      </varlistentry>
+
+      <varlistentry>
+        <term><option>zeoctl</option> &lt;instance&gt; &lt;zeotl-action&gt; [&lt;zeotl options&gt;]</term>
+        <listitem><para>Call a zeoctl action (e.g. `start', `stop' or `restart') for a given ZEO instance.</para></listitem>
+      </varlistentry>
+    </variablelist>
+  </refsect1>
+
+
+  <refsect1>
+    <title>ACTIONS (products and extensions handling)</title>
+    <variablelist>
+      <varlistentry>
+        <term><option>list-products</option>, <option>list-extensions</option></term>
+        <listitem><para>show all products or extensions managed by dzhandle</para></listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>add-product</option>, <option>add-extension</option></term>
+        <listitem>
+          <para>add a product or extension to an instance</para>
+          <variablelist>
+            <varlistentry>
+              <term>-l, --lazy</term>
+              <listitem><para>Add missing addons only (error on manually installed addons).</para></listitem>
+            </varlistentry>
+            <varlistentry>
+              <term>-t ATECHNIQUE, --addon-install-technique=ATECHNIQUE</term>
+              <listitem><para>How to install the specified addons.</para></listitem>
+            </varlistentry>
+          </variablelist>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>remove-product</option>, <option>remove-extension</option></term>
+        <listitem>
+          <para>remove a product or extension from an instance</para>
+          <variablelist>
+            <varlistentry>
+              <term>-l, --lazy</term>
+              <listitem><para>Do not complain about already removed addons.</para></listitem>
+            </varlistentry>
+            <varlistentry>
+              <term>-f, --force</term>
+              <listitem><para>Force removal of the addons.</para></listitem>
+            </varlistentry>
+          </variablelist>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </refsect1>
+
+  <refsect1>
+    <title>ACTIONS (for Zope products maintainers)</title>
+    <para>
+      The following actions should be used inside the maintainer scripts of Debian/Ubuntu
+      packages of Zope products and extensions. If the package uses zope-debhelper's
+      <productname>dh_installzope</productname>, these actions will be automatically included.
+    </para>
+    <variablelist>
+      <varlistentry>
+        <term><option>dinstall-extension, dinstall-product</option></term>
+        <listitem><para>install a packaged extension/product</para></listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>dremove-extension, dremove-product</option></term>
+        <listitem><para>remove a packaged extension/product</para></listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>postinst-extension, postinst-product</option></term>
+        <listitem><para>handle postinst of a packaged extension/product</para></listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>postrm-extension, postrm-product</option></term>
+        <listitem><para>handle postrm of a packaged extension/product</para></listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>preinst-extension, preinst-product</option></term>
+        <listitem><para>handle preinst of a packaged extension/product</para></listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>prerm-extension, prerm-product</option></term>
+        <listitem><para>handle prerm of a packaged extension/product</para></listitem>
+      </varlistentry>
+
+    </variablelist>
+  </refsect1>
+
+  <refsect1>
+    <title>SEE ALSO</title>
+    <para>dh_installzope(1), dh_installzopeinstance(1)</para>
+  </refsect1>
+
+  <refsect1>
+    <title>AUTHOR</title>
+
+    <para>This manual page was written by &dhusername; &lt;&dhemail;&gt; for
+    the &debian; systems (but may be used by others).</para>
+
+    <para>Permission is granted to copy, distribute and/or modify
+    this document under the terms of the <acronym>GNU</acronym> Free
+    Documentation License, Version 1.1 or any later version
+    published by the Free Software Foundation; with no Invariant
+    Sections, no Front-Cover Texts and no Back-Cover Texts.  A copy
+    of the license can be found under
+    <filename>/usr/share/common-licenses/FDL</filename>.</para>
+  </refsect1>
+
+</refentry>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-default-dtd-file:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->




More information about the pkg-zope-commits mailing list