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