Skip to content

docs: add debian prerequisites

Seth Falco requested to merge Seth/ivatar:debian-instructions into devel
  • Fixed a typo PrequisitsPrerequisites
  • Add prerequisites for running on Debian.
  • Install pillow before installing other dependencies

Issues During Development

mysqlclient

mysqlclient requires either the mariadb_config command or mysql_config command be available.

    /bin/sh: 1: mysql_config: not found
    /bin/sh: 1: mariadb_config: not found

This is why libmariadb-dev is in the prerequisites for Debian.

Easiest solution is to just install libmariadb-dev since this is available in the default repos.

python-ldap

python-ldap requires some headers that come from libldap2-dev and libsasl2-dev.

Modules/common.h:15:10: fatal error: lber.h: No such file or directory
     15 | #include <lber.h>
        |          ^~~~~~~~
  compilation terminated.
  error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1
  ----------------------------------------
  ERROR: Failed building wheel for python-ldap
  Modules/LDAPObject.c:16:10: fatal error: sasl/sasl.h: No such file or directory
     16 | #include <sasl/sasl.h>
        |          ^~~~~~~~~~~~~
  compilation terminated.
  error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1
  ----------------------------------------
  ERROR: Failed building wheel for python-ldap

This is why libldap2-dev and libsasl2-dev are in the prerequisites for Debian.

Identicons

While install dependencies, Identicons expects Pillow to be installed already.

    ERROR: Command errored out with exit status 1:
     command: /ivatar/.virtualenv/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-req-build-cr5_wd28/setup.py'"'"'; __file__='"'"'/tmp/pip-req-build-cr5_wd28/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-cehahb5b
         cwd: /tmp/pip-req-build-cr5_wd28/
    Complete output (7 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-req-build-cr5_wd28/setup.py", line 4, in <module>
        import Identicon
      File "/tmp/pip-req-build-cr5_wd28/Identicon/__init__.py", line 6, in <module>
        from PIL import Image, ImageDraw
    ModuleNotFoundError: No module named 'PIL'

So I moved the command to install pillow to be before installing dependencies.


I actually ran into more problems, but maybe they were my fault. 🤔
I ran a Debian Docker container to verify if end-to-end this is enough to get the project going, and it works perfectly fine. You can easily test this by spinning up a Debian container yourself!

On my host machine, I had issues with use_2to3 not being available, and for some reason, I had to dive into .virtualenv/lib/python3.9/site-packages/pagan directory and replace any imports for pagan with from pagan import xyz, otherwise the modules would fail to resolve. 🤔
Neither of those issues happened on the container though, so maybe I just did something stupid. ^-^'

Edited by Seth Falco

Merge request reports