Difference between revisions of "Ej-suid-update-scripts"
(Created page with "Навигация: Главная страница/Система ejudge/Использование/Общая архитектура системы...") |
(...) |
||
Line 1: | Line 1: | ||
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Общая архитектура системы]]/[[ej-suid-update-scripts]] | Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Общая архитектура системы]]/[[ej-suid-update-scripts]] | ||
− | + | Программа доступна с версии [[Изменения в версии 3.9.0|3.9.0]]. | |
+ | |||
+ | Для запуска программ на языках, требующих виртуальной машины, | ||
+ | такой как jvm, mono, dotnet или valgrind, | ||
+ | в ejudge использовались вспомогательные | ||
+ | скрипты <code>rundotnet</code>, <code>runjava</code>, <code>runmono</code>, | ||
+ | <code>runvg</code>. Эти скрипты находились в том же каталоге, | ||
+ | в котором находятся скрипты компиляции <code>gcc</code> | ||
+ | и прочие (<code>EJUDGE_CONTESTS_HOME_DIR/compile/scripts</code>, | ||
+ | например, <code>/home/judges/compile/scripts</code>), | ||
+ | и кроме того, для работы им требовались конфигурационные файлы | ||
+ | <code>gcc.cfg</code>, которые находятся | ||
+ | в <code>EJUDGE_LANG_CONFIG_DIR</code>, например | ||
+ | <code>/home/judges/compile/conf/lang.d</code>. | ||
+ | |||
+ | При выполнении программ это не очень хорошо по следующим причинам: | ||
+ | * требуется доступ к каталогу /home/judges/compile | ||
+ | * скрипты запуска используют дополнительные конфигурационные файлы | ||
+ | |||
+ | Чтобы решить эти проблемы для запуска программ на языках, | ||
+ | требующих виртуальные машины, используются скрипты | ||
+ | <code>rundotnet2</code>, <code>runjava2</code>, <code>runmono2</code>, | ||
+ | <code>runvg2</code>, которые размещаются в каталоге | ||
+ | <code>EJUDGE_SCRIPT_DIR/lang</code>, например, | ||
+ | <code>/opt/ejudge/libexec/ejudge/lang</code>. Конфигурационные | ||
+ | настройки соответствующих языков программирования находятся | ||
+ | в самих скриптах, то есть для работы им не требуются никакие | ||
+ | дополнительные конфигурационные файлы. | ||
+ | |||
+ | Но пользователь, под которым система ejudge компилируется и инсталлируется, | ||
+ | может отличаться от пользователя, под которым система работает, | ||
+ | и под которым конфигурируются языки программирования. Файлы | ||
+ | в каталоге <code>/opt/ejudge</code> могут иметь владельца, например, | ||
+ | root, а языки программирования конфигурируются под пользователем | ||
+ | ejudge. Пользователь ejudge может не иметь доступа на запись в | ||
+ | каталог <code>EJUDGE_SCRIPT_DIR/lang</code>. | ||
+ | |||
+ | Программа [[ej-suid-update-scripts]] копирует скрипты запуска виртуальных | ||
+ | машин в каталог <code>EJUDGE_SCRIPT_DIR/lang</code> и устанавливает | ||
+ | им правильные права доступа. Программа запускается автоматически | ||
+ | программой [[ejudge-configure-compilers]] при сохранении скриптов. | ||
+ | |||
+ | Использование: | ||
+ | |||
+ | ej-suid-update-scripts all |
Latest revision as of 06:51, 23 December 2021
Навигация: Главная страница/Система 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