[Pkg-mailman-hackers] Bug#891691: mailman3-core: Cannot install mailman3-suite with mysql database

Colin Turner ct at piglets.com
Wed Feb 28 01:55:23 UTC 2018


Package: mailman3-core
Version: 3.1.1-4
Severity: normal

Dear Maintainer,

Many thanks for your work on these packages. I'm following up from bug 891553.

I have attempted to install mailman3-suite, and allowed automatic configuration using mysql. I think this was the default presented choice.
This configuration failed, with this error transcript.

Errors were encountered while processing:
 mailman3-suite
E: Sub-process /usr/bin/dpkg returned an error code (1)
Setting up mailman3-suite (0+20170523-10) ...
Determining localhost credentials from /etc/mysql/debian.cnf: succeeded.
dbconfig-common: writing config to /etc/dbconfig-common/mailman3-suite.conf
mailman3suite already exists and has privileges on mailman3suite.
creating database mailman3suite: already exists.
dbconfig-common: flushing administrative password
Traceback (most recent call last):
  File "/usr/bin/django-admin", line 21, in <module>
    management.execute_from_command_line()
  File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 338, in execute
    django.setup()
  File "/usr/lib/python2.7/dist-packages/django/__init__.py", line 27, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/usr/lib/python2.7/dist-packages/django/apps/registry.py", line 108, in populate
    app_config.import_models()
  File "/usr/lib/python2.7/dist-packages/django/apps/config.py", line 202, in import_models
    self.models_module = import_module(models_module_name)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/usr/lib/python2.7/dist-packages/hyperkitty/models/__init__.py", line 27, in <module>
    from .category import ThreadCategoryg
  File "/usr/lib/python2.7/dist-packages/hyperkitty/models/category.py", line 30, in <module>
    class ThreadCategory(models.Model):
  File "/usr/lib/python2.7/dist-packages/django/db/models/base.py", line 124, in __new__
    new_class.add_to_class('_meta', Options(meta, app_label))
  File "/usr/lib/python2.7/dist-packages/django/db/models/base.py", line 325, in add_to_class
    value.contribute_to_class(cls, name)
  File "/usr/lib/python2.7/dist-packages/django/db/models/options.py", line 214, in contribute_to_class
    self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
  File "/usr/lib/python2.7/dist-packages/django/db/__init__.py", line 33, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "/usr/lib/python2.7/dist-packages/django/db/utils.py", line 211, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "/usr/lib/python2.7/dist-packages/django/db/utils.py", line 115, in load_backend
    return import_module('%s.base' % backend_name)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/usr/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 30, in <module>
    'Did you install mysqlclient or MySQL-python?' % e
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb.
Did you install mysqlclient or MySQL-python?
dpkg: error processing package mailman3-suite (--configure):
 installed mailman3-suite package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 mailman3-suite

So I'm guessing there is a missing dependency here. I tried installing python-mysqldb, but this provided a different error:

Errors were encountered while processing:
 mailman3-suite
E: Sub-process /usr/bin/dpkg returned an error code (1)
Setting up mailman3-suite (0+20170523-10) ...
Determining localhost credentials from /etc/mysql/debian.cnf: succeeded.
dbconfig-common: writing config to /etc/dbconfig-common/mailman3-suite.conf
mailman3suite already exists and has privileges on mailman3suite.
creating database mailman3suite: already exists.
dbconfig-common: flushing administrative password
Traceback (most recent call last):
  File "/usr/bin/django-admin", line 21, in <module>
    management.execute_from_command_line()
  File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 356, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/lib/python2.7/dist-packages/django/core/management/base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/lib/python2.7/dist-packages/django/core/management/base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "/usr/lib/python2.7/dist-packages/django/core/management/commands/migrate.py", line 204, in handle
    fake_initial=fake_initial,
  File "/usr/lib/python2.7/dist-packages/django/db/migrations/executor.py", line 115, in migrate
    state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
  File "/usr/lib/python2.7/dist-packages/django/db/migrations/executor.py", line 145, in _migrate_all_forwards
    state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
  File "/usr/lib/python2.7/dist-packages/django/db/migrations/executor.py", line 244, in apply_migration
    state = migration.apply(state, schema_editor)
  File "/usr/lib/python2.7/dist-packages/django/db/migrations/migration.py", line 129, in apply
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
  File "/usr/lib/python2.7/dist-packages/django/db/migrations/operations/fields.py", line 221, in database_forwards
    schema_editor.alter_field(from_model, from_field, to_field)
  File "/usr/lib/python2.7/dist-packages/django/db/backends/base/schema.py", line 515, in alter_field
    old_db_params, new_db_params, strict)
  File "/usr/lib/python2.7/dist-packages/django/db/backends/base/schema.py", line 690, in _alter_field
    params,
  File "/usr/lib/python2.7/dist-packages/django/db/backends/base/schema.py", line 120, in execute
    cursor.execute(sql, params)
  File "/usr/lib/python2.7/dist-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/usr/lib/python2.7/dist-packages/django/db/utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/usr/lib/python2.7/dist-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/usr/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 101, in execute
    return self.cursor.execute(query, args)
  File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 250, in execute
    self.errorhandler(self, exc, value)
  File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
    raise errorvalue
django.db.utils.OperationalError: (1071, 'Specified key was too long; max key length is 767 bytes')
dpkg: error processing package mailman3-suite (--configure):
 installed mailman3-suite package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 mailman3-suite

In the meantime there are cron errors as below:

Date: Wed, 28 Feb 2018 01:30:01 +0000
From: Cron Daemon <root at piglets.org>
To: list at piglets.org
Subject: Cron <list at oldgondolin> command -v django-admin >/dev/null && django-admin runjobs minutely --pythonpath
        /usr/share/mailman3-suite --settings settings

Traceback (most recent call last):
  File "/usr/bin/django-admin", line 21, in <module>
    management.execute_from_command_line()
  File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 338, in execute
    django.setup()
  File "/usr/lib/python2.7/dist-packages/django/__init__.py", line 22, in setup
    configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
  File "/usr/lib/python2.7/dist-packages/django/utils/log.py", line 75, in configure_logging
    logging_config_func(logging_settings)
  File "/usr/lib/python2.7/logging/config.py", line 794, in dictConfig
    dictConfigClass(config).configure()
  File "/usr/lib/python2.7/logging/config.py", line 576, in configure
    '%r: %s' % (name, e))
ValueError: Unable to configure handler 'file': [Errno 13] Permission denied: '/var/log/mailman3/mailman-suite.log'
 
I also ended up commenting out line 33 in /etc/init.d/mailman3-core because otherwise I got the following error:

oldgondolin:/etc/init.d# /etc/init.d/mailman3-core start
/etc/init.d/mailman3-core: line 33: .: filename argument required
.: usage: . filename [arguments]


If it's useful to split these bugs if I haven't misunderstood something, please let me know, and I will file accordingly.

Kind regards,

CT.




-- System Information:
Debian Release: buster/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (500, 'stable')
Architecture: i386 (i686)

Kernel: Linux 4.14.0-2-686-pae (SMP w/4 CPU cores)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8), LANGUAGE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages mailman3-core depends on:
ii  dbconfig-sqlite3            2.0.9
ii  debconf [debconf-2.0]       1.5.65
ii  logrotate                   3.11.0-0.1
ii  lsb-base                    9.20170808
ii  python3                     3.6.4-1
ii  python3-aiosmtpd            1.1-5
ii  python3-alembic             0.9.7-1
ii  python3-dnspython           1.15.0-1
ii  python3-falcon              1.0.0-2+b2
ii  python3-flufl.bounce        2.3-4
ii  python3-flufl.i18n          2.0.1-1
ii  python3-flufl.lock          3.2-1
ii  python3-lazr.config         2.2-1
ii  python3-passlib             1.7.1-1
ii  python3-public              0.5-1
ii  python3-pymysql             0.7.11-1
ii  python3-requests            2.18.4-1
ii  python3-sqlalchemy          1.1.11+ds1-1
ii  python3-zope.component      4.3.0-1
ii  python3-zope.configuration  4.0.3-3
ii  python3-zope.event          4.2.0-1
ii  python3-zope.interface      4.3.2-1+b1
ii  ucf                         3.0036

Versions of packages mailman3-core recommends:
ii  exim4-daemon-heavy [mail-transport-agent]  4.90-3
ii  lynx                                       2.8.9dev16-2

Versions of packages mailman3-core suggests:
ii  default-mysql-server                        1.0.3
pn  mailman3-core-doc                           <none>
ii  mariadb-server-10.1 [virtual-mysql-server]  1:10.1.29-6

-- Configuration Files:
/etc/init.d/mailman3-core changed:
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Mailman3 Core program"
NAME=mailman3-core
DAEMON=/usr/bin/mailman
DAEMON_ARGS="-C /etc/mailman3/mailman.cfg start"
PIDDIR=/run/mailman3
PIDFILE=${PIDDIR}/master.pid
SCRIPTNAME=/etc/init.d/$NAME
USER=list
GROUP=list
[ -x "$DAEMON" ] || exit 0
[ ! -d ${PIDDIR} ] && (mkdir -p ${PIDDIR} && chown ${USER}:${GROUP} ${PIDDIR})
. /lib/init/vars.sh
. /lib/lsb/init-functions
do_start()
{
	
	# Return
	#   0 if daemon has been started
	#   1 if daemon was already running
	#   2 if daemon could not be started
	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
		|| return 1
	start-stop-daemon --start --quiet --pidfile $PIDFILE --chuid ${USER}:${GROUP} --exec $DAEMON -- \
		$DAEMON_ARGS \
		|| return 2
	# Add code here, if necessary, that waits for the process to be ready
	# to handle requests from services started subsequently which depend
	# on this one.  As a last resort, sleep for some time.
	
}
do_stop()
{
	
    start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
    RETVAL="$?"
    [ "$RETVAL" = 2 ] && return 2
	# Wait for children to finish too if this is a daemon that forks
	# and if the daemon is only ever run from this initscript.
	# If the above conditions are not satisfied then add some other code
	# that waits for the process to drop all resources that could be
	# needed by services started subsequently.  A last resort is to
	# sleep for some time.
	start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
	[ "$?" = 2 ] && return 2
	# Many daemons don't delete their pidfiles when they exit.
	rm -f $PIDFILE
	
	return "$RETVAL"
}
do_reload() {
	#
	# If the daemon can reload its configuration without
	# restarting (for example, when it is sent a SIGHUP),
	# then implement that here.
	#
    start-stop-daemon --stop --signal HUP --quiet --pidfile $PIDFILE --name $NAME
	return 0
}
case "$1" in
  start)
	[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
	do_start
	case "$?" in
		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
	esac
	;;
  stop)
	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
	do_stop
	case "$?" in
		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
	esac
	;;
  status)
	status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
	;;
  reload|force-reload)
	log_daemon_msg "Reloading $DESC" "$NAME"
	do_reload
	log_end_msg $?
	;;
  restart)
	log_daemon_msg "Restarting $DESC" "$NAME"
	do_stop
	case "$?" in
	  0|1)
		do_start
		case "$?" in
			0) log_end_msg 0 ;;
			1) log_end_msg 1 ;; # Old process is still running
			*) log_end_msg 1 ;; # Failed to start
		esac
		;;
	  *)
		# Failed to stop
		log_end_msg 1
		;;
	esac
	;;
  *)
	echo "$SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
	exit 3
	;;
esac
:


-- debconf information:
  mailman3-core/pgsql/authmethod-user: password
* mailman3-core/config_hyperkitty: true
  mailman3-core/db/basepath:
  mailman3-core/remote/newhost:
* mailman3-core/init_service_failed:
  mailman3-core/internal/reconfiguring: false
  mailman3-core/pgsql/admin-user: postgres
  mailman3-core/passwords-do-not-match:
* mailman3-core/database-type: mysql
  mailman3-core/upgrade-backup: true
  mailman3-core/dbconfig-upgrade: true
  mailman3-core/pgsql/manualconf:
  mailman3-core/upgrade-error: abort
  mailman3-core/install-error: abort
  mailman3-core/internal/skip-preseed: false
  mailman3-core/dbconfig-reinstall: false
  mailman3-core/remote/host: localhost
* mailman3-core/mysql/admin-user: root
  mailman3-core/purge: false
  mailman3-core/db/app-user: mailman3 at localhost
  mailman3-core/db/dbname: mailman3
  mailman3-core/mysql/method: Unix socket
  mailman3-core/pgsql/authmethod-admin: ident
  mailman3-core/remove-error: abort
* mailman3-core/dbconfig-install: true
  mailman3-core/pgsql/changeconf: false
  mailman3-core/pgsql/method: TCP/IP
  mailman3-core/missing-db-package-error: abort
  mailman3-core/dbconfig-remove: true
  mailman3-core/remote/port:
  mailman3-core/pgsql/no-empty-passwords:



More information about the Pkg-mailman-hackers mailing list