Ej-suid-update-scripts
Навигация: Главная страница/Система ejudge/Использование/Общая архитектура системы/ej-suid-update-scripts
Программа доступна с версии 3.9.0.
Для запуска программ на языках, требующих виртуальной машины,
такой как jvm, mono, dotnet или valgrind,
в ejudge использовались вспомогательные
скрипты rundotnet, runjava, runmono,
runvg. Эти скрипты находились в том же каталоге,
в котором находятся скрипты компиляции gcc
и прочие (EJUDGE_CONTESTS_HOME_DIR/compile/scripts,
например, /home/judges/compile/scripts),
и кроме того, для работы им требовались конфигурационные файлы
gcc.cfg, которые находятся
в EJUDGE_LANG_CONFIG_DIR, например
/home/judges/compile/conf/lang.d.
При выполнении программ это не очень хорошо по следующим причинам:
- требуется доступ к каталогу /home/judges/compile
- скрипты запуска используют дополнительные конфигурационные файлы
Чтобы решить эти проблемы для запуска программ на языках,
требующих виртуальные машины, используются скрипты
rundotnet2, runjava2, runmono2,
runvg2, которые размещаются в каталоге
EJUDGE_SCRIPT_DIR/lang, например,
/opt/ejudge/libexec/ejudge/lang. Конфигурационные
настройки соответствующих языков программирования находятся
в самих скриптах, то есть для работы им не требуются никакие
дополнительные конфигурационные файлы.
Но пользователь, под которым система ejudge компилируется и инсталлируется,
может отличаться от пользователя, под которым система работает,
и под которым конфигурируются языки программирования. Файлы
в каталоге /opt/ejudge могут иметь владельца, например,
root, а языки программирования конфигурируются под пользователем
ejudge. Пользователь ejudge может не иметь доступа на запись в
каталог EJUDGE_SCRIPT_DIR/lang.
Программа ej-suid-update-scripts копирует скрипты запуска виртуальных
машин в каталог EJUDGE_SCRIPT_DIR/lang и устанавливает
им правильные права доступа. Программа запускается автоматически
программой ejudge-configure-compilers при сохранении скриптов.
Использование:
ej-suid-update-scripts all