CMS es un sistema para concursos de programación basado en subtareas en lugar de intentos/tiempo como DOMJudge.
cgroup2 está habilitado, y no la versión 1 también. Podemos probar con el siguiente comando:$ grep cgroup /proc/mounts cgroup2 /sys/fs/cgroup cgroup2 rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot 0 0
Si no es así, hay que deshabilitarlo, editando /etc/default/grub como se muestra y ejecutando sudo update-grub:
-GRUB_CMDLINE_LINUX_DEFAULT="systemd.unified_cgroup_hierarchy=0" +GRUB_CMDLINE_LINUX_DEFAULT="systemd.unified_cgroup_hierarchy=1 cgroup_no_v1=all"
# Install requirements sudo apt-get install -y \ build-essential \ cgroup-lite \ libcap-dev \ libcups2-dev \ libffi-dev \ libpq-dev \ libyaml-dev \ postgresql-client \ python3.12 \ python3.12-dev \ python3.12-venv \ sudo \ zip # Además, si se quieren usar otros lenguajes que no sean CPython 3, deben instalarse compiladores. # Create cmsuser user with sudo privileges useradd -ms /bin/bash cmsuser usermod -aG sudo cmsuser sudo passwd cmsuser # Set a password for sudo! # Change user and setup with python sudo su - cmsuser curl -L https://github.com/cms-dev/cms/releases/download/v1.5.1/v1.5.1.tar.gz | tar -xz cd cms sudo python3 setup.py install sudo python3 prerequisites.py --yes --cmsuser=cmsuser install # Installing dependencies and cms to a virtual environment. python3 -m venv ~/.venv . ~/.venv/bin/activate pip install -r requirements.txt pip install . # required or the program crashes pip install setuptools==68.1.2
/usr/local/etc and set the password on the database setting. Also, generate a secret_key.sudo apt-get install postgresql sudo su - postgres createuser --username=postgres --pwprompt cmsuser createdb --username=postgres --owner=cmsuser cmsdb psql --username=postgres --dbname=cmsdb --command='ALTER SCHEMA public OWNER TO cmsuser' psql --username=postgres --dbname=cmsdb --command='GRANT SELECT ON pg_largeobject TO cmsuser'
sudo -u cmsuser cmsInitDB
Nota: como la instalación ha sido realizada en un venv, los comandos cms* solo están disponibles dentro de este, por lo que se debe activar al iniciar la sesión. Por tanto, para los servicios systemD se recomienda la siguiente plantilla.
# /home/cmsuser/.config/systemd/user/cmsSUBPROGRAM.service [Unit] Description=CMS SUBPROGRAM description [Service] ExecStart=/bin/bash -c 'source /home/cmsuser/.venv/bin/activate && cmsSUBPROGRAM [PARAMS]' [Install] WantedBy=default.target