learningequality / kolibri-installer-debian

Kolibri installer source for Debian
MIT License
0 stars 8 forks source link

Just FYI Kolibri 0.15.6 does not install on Ubuntu 22.10 ETA 2022-10-20 -- also /etc/apt/trusted.gpg DEPRECATED (!) #112

Closed jredrejo closed 2 years ago

jredrejo commented 2 years ago

@holta commented on Thu Aug 18 2022

Here's the error message just in case someone wants to keep an eye on Ubuntu 22.10's Oct 20th upcoming release:

TASK [kolibri : Provision Kolibri, while setting: facility name, admin acnt / password, preset type, and language] ***** fatal: [127.0.0.1]: FAILED! => {"changed": true, "cmd": "export KOLIBRI_HOME=\"/library/kolibri\" && \"/usr/bin/kolibri\" manage provisiondevice --facility \"Kolibri-in-a-Box\" --superusername \"Admin\" --superuserpassword \"changeme\" --preset \"formal\" --language_id \"en\" #--preset \"formal\" --language_id \"en\" --verbosity 0 --noinput\n", "delta": "0:00:01.530248", "end": "2022-08-18 08:42:07.382331", "msg": "non-zero return code", "rc": 1, "start": "2022-08-18 08:42:05.852083", "stderr": "INFO: No C extensions are available for this platform\nINFO: Initialized plugins.json\n/usr/lib/python3/dist-packages/pkg_resources/init.py:116: PkgResourcesDeprecationWarning: 1.1build1 is an invalid version and will not be supported in a future release\n warnings.warn(\nError: Traceback (most recent call last):\n File \"/usr/lib/python3/dist-packages/kolibri/utils/cli.py\", line 193, in invoke\n initialize(get_initialize_params())\n File \"/usr/lib/python3/dist-packages/kolibri/utils/main.py\", line 284, in initialize\n _setup_django()\n File \"/usr/lib/python3/dist-packages/kolibri/utils/main.py\", line 153, in _setup_django\n django.setup()\n File \"/usr/lib/python3/dist-packages/kolibri/dist/django/init.py\", line 27, in setup\n apps.populate(settings.INSTALLED_APPS)\n File \"/usr/lib/python3/dist-packages/kolibri/dist/django/apps/registry.py\", line 108, in populate\n app_config.import_models()\n File \"/usr/lib/python3/dist-packages/kolibri/dist/django/apps/config.py\", line 202, in import_models\n self.models_module = import_module(models_module_name)\n File \"/usr/lib/python3.10/importlib/init.py\", line 126, in import_module\n return _bootstrap._gcd_import(name[level:], package, level)\n File \"\", line 1050, in _gcd_import\n File \"\", line 1027, in _find_and_load\n File \"\", line 1006, in _find_and_load_unlocked\n File \"\", line 688, in _load_unlocked\n File \"\", line 883, in exec_module\n File \"\", line 241, in _call_with_frames_removed\n File \"/usr/lib/python3/dist-packages/kolibri/core/models.py\", line 12, in \n registered_plugins.register_non_plugins(settings.INSTALLED_APPS)\n File \"/usr/lib/python3/dist-packages/kolibri/plugins/registry.py\", line 150, in register_non_plugins\n initialize_kolibri_plugin(app)\n File \"/usr/lib/python3/dist-packages/kolibri/plugins/utils/init.py\", line 145, in initialize_kolibri_plugin\n plugin_module = importlib.import_module(plugin_name + \".kolibri_plugin\")\n File \"/usr/lib/python3.10/importlib/init.py\", line 126, in import_module\n return _bootstrap._gcd_import(name[level:], package, level)\n File \"\", line 1050, in _gcd_import\n File \"\", line 1027, in _find_and_load\n File \"\", line 1006, in _find_and_load_unlocked\n File \"\", line 688, in _load_unlocked\n File \"\", line 883, in exec_module\n File \"\", line 241, in _call_with_frames_removed\n File \"/usr/lib/python3/dist-packages/kolibri/core/auth/kolibri_plugin.py\", line 3, in \n from kolibri.core.auth.sync_operations import KolibriSingleUserSyncOperation\n File \"/usr/lib/python3/dist-packages/kolibri/core/auth/sync_operations.py\", line 5, in \n from morango.sync.operations import BaseOperation\n File \"/usr/lib/python3/dist-packages/kolibri/dist/morango/sync/operations.py\", line 18, in \n from rest_framework.exceptions import ValidationError\n File \"/usr/lib/python3/dist-packages/kolibri/dist/rest_framework/exceptions.py\", line 18, in \n from rest_framework.compat import unicode_to_repr\n File \"/usr/lib/python3/dist-packages/kolibri/dist/rest_framework/compat.py\", line 176, in \n if markdown.version <= '2.2':\nAttributeError: module 'markdown' has no attribute 'version'", "stderr_lines": ["INFO: No C extensions are available for this platform", "INFO: Initialized plugins.json", "/usr/lib/python3/dist-packages/pkg_resources/init.py:116: PkgResourcesDeprecationWarning: 1.1build1 is an invalid version and will not be supported in a future release", " warnings.warn(", "Error: Traceback (most recent call last):", " File \"/usr/lib/python3/dist-packages/kolibri/utils/cli.py\", line 193, in invoke", " initialize(get_initialize_params())", " File \"/usr/lib/python3/dist-packages/kolibri/utils/main.py\", line 284, in initialize", " _setup_django()", " File \"/usr/lib/python3/dist-packages/kolibri/utils/main.py\", line 153, in _setup_django", " django.setup()", " File \"/usr/lib/python3/dist-packages/kolibri/dist/django/init.py\", line 27, in setup", " apps.populate(settings.INSTALLED_APPS)", " File \"/usr/lib/python3/dist-packages/kolibri/dist/django/apps/registry.py\", line 108, in populate", " app_config.import_models()", " File \"/usr/lib/python3/dist-packages/kolibri/dist/django/apps/config.py\", line 202, in import_models", " self.models_module = import_module(models_module_name)", " File \"/usr/lib/python3.10/importlib/init.py\", line 126, in import_module", " return _bootstrap._gcd_import(name[level:], package, level)", " File \"\", line 1050, in _gcd_import", " File \"\", line 1027, in _find_and_load", " File \"\", line 1006, in _find_and_load_unlocked", " File \"\", line 688, in _load_unlocked", " File \"\", line 883, in exec_module", " File \"\", line 241, in _call_with_frames_removed", " File \"/usr/lib/python3/dist-packages/kolibri/core/models.py\", line 12, in ", " registered_plugins.register_non_plugins(settings.INSTALLED_APPS)", " File \"/usr/lib/python3/dist-packages/kolibri/plugins/registry.py\", line 150, in register_non_plugins", " initialize_kolibri_plugin(app)", " File \"/usr/lib/python3/dist-packages/kolibri/plugins/utils/init.py\", line 145, in initialize_kolibri_plugin", " plugin_module = importlib.import_module(plugin_name + \".kolibri_plugin\")", " File \"/usr/lib/python3.10/importlib/init.py\", line 126, in import_module", " return _bootstrap._gcd_import(name[level:], package, level)", " File \"\", line 1050, in _gcd_import", " File \"\", line 1027, in _find_and_load", " File \"\", line 1006, in _find_and_load_unlocked", " File \"\", line 688, in _load_unlocked", " File \"\", line 883, in exec_module", " File \"\", line 241, in _call_with_frames_removed", " File \"/usr/lib/python3/dist-packages/kolibri/core/auth/kolibri_plugin.py\", line 3, in ", " from kolibri.core.auth.sync_operations import KolibriSingleUserSyncOperation", " File \"/usr/lib/python3/dist-packages/kolibri/core/auth/sync_operations.py\", line 5, in ", " from morango.sync.operations import BaseOperation", " File \"/usr/lib/python3/dist-packages/kolibri/dist/morango/sync/operations.py\", line 18, in ", " from rest_framework.exceptions import ValidationError", " File \"/usr/lib/python3/dist-packages/kolibri/dist/rest_framework/exceptions.py\", line 18, in ", " from rest_framework.compat import unicode_to_repr", " File \"/usr/lib/python3/dist-packages/kolibri/dist/rest_framework/compat.py\", line 176, in ", " if markdown.version <= '2.2':", "AttributeError: module 'markdown' has no attribute 'version'"], "stdout": "\u001b[37mINFO Option DEBUG in section [Server] being overridden by environment variable KOLIBRI_DEBUG\u001b[0m\n\u001b[37mINFO Option DEBUG_LOG_DATABASE in section [Server] being overridden by environment variable KOLIBRI_DEBUG_LOG_DATABASE\u001b[0m\n\u001b[37mINFO Option DEBUG in section [Server] being overridden by environment variable KOLIBRI_DEBUG\u001b[0m\n\u001b[37mINFO Option DEBUG_LOG_DATABASE in section [Server] being overridden by environment variable KOLIBRI_DEBUG_LOG_DATABASE\u001b[0m\n\u001b[37mINFO Attempting to setup using pre-migrated databases\u001b[0m\n\u001b[37mINFO Copied preseeded database from /usr/lib/python3/dist-packages/kolibri/dist/home/db.sqlite3 to /library/kolibri/db.sqlite3\u001b[0m\n\u001b[37mINFO Copied preseeded database from /usr/lib/python3/dist-packages/kolibri/dist/home/syncqueue.sqlite3 to /library/kolibri/syncqueue.sqlite3\u001b[0m\n\u001b[37mINFO Copied preseeded database from /usr/lib/python3/dist-packages/kolibri/dist/home/networklocation.sqlite3 to /library/kolibri/networklocation.sqlite3\u001b[0m\n\u001b[37mINFO Copied preseeded database from /usr/lib/python3/dist-packages/kolibri/dist/home/notifications.sqlite3 to /library/kolibri/notifications.sqlite3\u001b[0m", "stdout_lines": ["\u001b[37mINFO Option DEBUG in section [Server] being overridden by environment variable KOLIBRI_DEBUG\u001b[0m", "\u001b[37mINFO Option DEBUG_LOG_DATABASE in section [Server] being overridden by environment variable KOLIBRI_DEBUG_LOG_DATABASE\u001b[0m", "\u001b[37mINFO Option DEBUG in section [Server] being overridden by environment variable KOLIBRI_DEBUG\u001b[0m", "\u001b[37mINFO Option DEBUG_LOG_DATABASE in section [Server] being overridden by environment variable KOLIBRI_DEBUG_LOG_DATABASE\u001b[0m", "\u001b[37mINFO Attempting to setup using pre-migrated databases\u001b[0m", "\u001b[37mINFO Copied preseeded database from /usr/lib/python3/dist-packages/kolibri/dist/home/db.sqlite3 to /library/kolibri/db.sqlite3\u001b[0m", "\u001b[37mINFO Copied preseeded database from /usr/lib/python3/dist-packages/kolibri/dist/home/syncqueue.sqlite3 to /library/kolibri/syncqueue.sqlite3\u001b[0m", "\u001b[37mINFO Copied preseeded database from /usr/lib/python3/dist-packages/kolibri/dist/home/networklocation.sqlite3 to /library/kolibri/networklocation.sqlite3\u001b[0m", "\u001b[37mINFO Copied preseeded database from /usr/lib/python3/dist-packages/kolibri/dist/home/notifications.sqlite3 to /library/kolibri/notifications.sqlite3\u001b[0m"]}

CLARIF: This is the Ansible output when https://internet-in-a-box.org tries to install Kolibri 0.15.6 onto the latest daily build of Ubuntu Server 22.10

The actual "6 lines of code" to apt install kolibri from PPA are here:

https://github.com/iiab/iiab/blob/9ea5d3ff41837b38a12ca5fe2a8349ae61e31563/roles/kolibri/tasks/install.yml#L48-L115


@holta commented on Thu Aug 18 2022

Also FYI Kolibri is storing its apt signing key in a way that Debian and Ubuntu no longer support — see this apt update output which explains:

W: http://ppa.launchpad.net/learningequality/kolibri/ubuntu/dists/kinetic/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.


@holta commented on Thu Aug 18 2022

ASIDE — To recover the Ubuntu 22.10 machine to a more pristine state (so as to remove the above-mentioned apt update warning) I did the following: (just FYI)

apt-key list
rm /etc/apt/sources.list.d/ppa_learningequality_kolibri_kinetic.list
apt-key del 3194 DD81

@rtibbles commented on Thu Aug 18 2022

Note that this is the same issue as this error: https://github.com/learningequality/kolibri/issues/9583

It seems that the Python markdown library has changed how it encodes its version information which breaks certain versions of Django REST Framework.

Is the Python markdown package installed by default on Ubuntu 22.10, or has this been installed from somewhere else?


@holta commented on Thu Aug 18 2022

Is the Python markdown package installed by default on Ubuntu 22.10,

Apparently not. Regardless whether apt package markdown and/or python3-markdown is/are relevant?

or has this been installed from somewhere else?

FWIW python3-markdown appears to have been installed by samba apt packages on this particular Ubuntu 22.10 ("everything-but-the-kitchen-sink") Internet-in-a-Box testing machine:

root@box:~# apt list markdown
Listing... Done
markdown/kinetic 1.0.1-10.1 all

root@box:~# apt list python3-markdown
Listing... Done
python3-markdown/kinetic,now 3.4.1-1 all [installed,automatic]

root@box:~# apt-cache rdepends --installed python3-markdown
python3-markdown
Reverse Depends:
  samba-common-bin
  samba

@rtibbles does that help?

(Do you need anything else before this machine is wiped?)


@jredrejo commented on Thu Aug 18 2022

How does samba depend on python3-markdown? that's ridiculous. I see at https://packages.ubuntu.com/kinetic/samba that's a recommendation, so it can be uninstalled. We'll set a conflict between kolibri package and python3-markdown >= 3.4 to avoid this problem. Thanks for the report!


@holta commented on Thu Aug 18 2022

How does samba depend on python3-markdown? that's ridiculous.

No idea why samba packages drag in python3-markdown

Curious indeed (-:

radinamatic commented 2 years ago

This seems specific to 22.10, as we have performed critical workflows testing on 22.04 LTS, where Kolibri installs and runs without any issues whatsoever.

jredrejo commented 2 years ago

For cross-reference: https://github.com/iiab/iiab/issues/3343#issuecomment-1232043584

jose@jose-VirtualBox:~$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.10
DISTRIB_CODENAME=kinetic
DISTRIB_DESCRIPTION="Ubuntu Kinetic Kudu (development branch)"
jose@jose-VirtualBox:~$ dpkg -l |grep markdown
jose@jose-VirtualBox:~$ dpkg -l|grep samba
ii  libldb2:amd64                              2:2.5.2+samba4.16.4-2ubuntu1             amd64        LDAP-like embedded database - shared library
ii  samba-libs:amd64                           2:4.16.4+dfsg-2ubuntu1                   amd64        Samba core libraries
jose@jose-VirtualBox:~$ dpkg -l kolibri
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version               Architecture Description
+++-==============-=====================-============-=======================================
ii  kolibri        0.15.7~beta1-0ubuntu1 all          The offline app for universal education