<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.ejudge.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Massiv</id>
	<title>EjudgeWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.ejudge.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Massiv"/>
	<link rel="alternate" type="text/html" href="https://www.ejudge.ru/wiki/index.php/Special:Contributions/Massiv"/>
	<updated>2026-04-21T04:24:39Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://www.ejudge.ru/wiki/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D0%B0&amp;diff=5482</id>
		<title>Добавление нового языкового процессора</title>
		<link rel="alternate" type="text/html" href="https://www.ejudge.ru/wiki/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D0%B0&amp;diff=5482"/>
		<updated>2014-03-29T15:32:09Z</updated>

		<summary type="html">&lt;p&gt;Massiv: /* lang_ids.cfg */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Расширение]]/[[Добавление нового языкового процессора]].&lt;br /&gt;
&lt;br /&gt;
Руководство по добавлению поддержки языков программирования, приведенное здесь, относится к системе ejudge версии не ниже 2.3.8.&lt;br /&gt;
&lt;br /&gt;
[[Языковой процессор]] (ЯП) &amp;amp;mdash; это либо компилятор, либо интерпретатор некоторого языка программирования.&lt;br /&gt;
&lt;br /&gt;
Поскольку система ejudge поддерживает несколько вариантов одного и того же языка программирования (например, Free Pascal, Borland Kylix, и т. д.), правильнее говорить не о поддержке языков программирования, а о поддержке языковых процессоров.&lt;br /&gt;
&lt;br /&gt;
Добавление поддержки нового ЯП в систему ejudge выполняется в несколько шагов.&lt;br /&gt;
# Определение параметров добавляемого ЯП&lt;br /&gt;
# Написание настроечного скрипта (lang-version.in)&lt;br /&gt;
# Написание скрипта компиляции (lang.in)&lt;br /&gt;
# Переконфигурация поддерживаемых ЯП с помощью программы ejudge-configure-compilers&lt;br /&gt;
# Перезапуск системы ejudge&lt;br /&gt;
&lt;br /&gt;
== Определение параметров ЯП ==&lt;br /&gt;
&lt;br /&gt;
Параметры ЯП, необходимые для его поддержки в системе ejudge, перечислены ниже:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| &amp;lt;tt&amp;gt;arch&amp;lt;/tt&amp;gt;&lt;br /&gt;
| архитектура ЯП&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;insecure&amp;lt;/tt&amp;gt;&lt;br /&gt;
| флаг поддержки безопасного режима&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;short_name&amp;lt;/tt&amp;gt;&lt;br /&gt;
| краткое название ЯП(как правило, определяется автоматически)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;long_name&amp;lt;/tt&amp;gt;&lt;br /&gt;
| полное название ЯП&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;src_sfx&amp;lt;/tt&amp;gt;&lt;br /&gt;
| стандартный суффикс файла с исходным текстом для данного ЯП&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;exe_sfx&amp;lt;/tt&amp;gt;&lt;br /&gt;
| стандартный суффикс исполняемого файла для данного ЯП&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;version&amp;lt;/tt&amp;gt;&lt;br /&gt;
| версия ЯП&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;arg&amp;lt;/tt&amp;gt;&lt;br /&gt;
| аргумент, указанный при конфигурировании ЯП программами ejudge-setup или ejudge-configure-compilers&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Основной параметр ЯП &amp;amp;mdash; это &amp;lt;i&amp;gt;архитектура&amp;lt;/i&amp;gt; (&amp;lt;tt&amp;gt;arch&amp;lt;/tt&amp;gt;). Под архитектурой понимается системное окружение, в котором запускается тестируемая программа. Система ejudge поддерживает следующие архитектуры:&lt;br /&gt;
* [[arch:linux|linux]] &amp;amp;mdash; статически скомпонованная исполняемая программа&lt;br /&gt;
* [[arch:linux-shared|linux-shared]] &amp;amp;mdash; динамически скомпонованная исполняемая программа (в том числе и скрипты)&lt;br /&gt;
* [[arch:java|java]] &amp;amp;mdash; байт-код java&lt;br /&gt;
* [[arch:msil|msil]] &amp;amp;mdash; байт-код .NET&lt;br /&gt;
* [[arch:dos|dos]] &amp;amp;mdash; приложения DOS&lt;br /&gt;
&lt;br /&gt;
Архитектура linux является архитектурой по умолчанию. Если ЯП имеет архитектуру linux, то параметр &amp;lt;tt&amp;gt;arch&amp;lt;/tt&amp;gt; для этого ЯП должен либо отсутствовать, либо иметь пустое значение.&lt;br /&gt;
&lt;br /&gt;
Второй параметр ЯП &amp;amp;mdash; это флаг, корректно ли работает&lt;br /&gt;
тестируемая программа для данного ЯП при запуске в [[безопасный режим|безопасном режиме]]. Если ЯП имеет архитектуру linux, java или dos, то тестируемые программы для такого ЯП, как правило, корректно работают в безопасном режиме, при этом поддерживаются&lt;br /&gt;
все ограничения безопасности. Если ЯП имеет архитектуру msil, то безопасный режим для него не поддерживаются. Программы для такого ЯП могут тестироваться, но при этом никаких ограничений безопасности на работу программы накладываться не будет. Если ЯП имеет архитектуру linux-shared, то безопасный режим для такого ЯП поддерживается, однако тестируемая программа в безопасном режиме может работать некорректно или не работать вообще.&lt;br /&gt;
&lt;br /&gt;
В любом случае, если есть сомнения в работоспособности программы в безопасном режиме, требуется проверка на простых программах, как работающих со стандартными потоками, так и работающих с файлами.&lt;br /&gt;
&lt;br /&gt;
Если добавляемый ЯП не поддерживает безопасный режим, то параметр ЯП &amp;lt;tt&amp;gt;insecure&amp;lt;/tt&amp;gt; должен быть равен 1.&lt;br /&gt;
Если безопасный режим поддерживается, то параметр должен отсутствовать или иметь пустое значение.&lt;br /&gt;
&lt;br /&gt;
Из ЯП поддерживаемых системой ejudge в стандартной поставке в версии 2.3.8, небезопасными являются ЯП [[lang:gcj|gcj]] (GNU Java), [[lang:gfortran|gfortran]] (GNU Fortran), [[lang:mcs|mcs]] (Mono C#), [[lang:mzscheme|mzscheme]] (MzScheme), [[lang:php|php]] (PHP), [[lang:vbnc|vbnc]] (Mono Visual Basic), [[lang:yabasic|yabasic]] (YaBasic).&lt;br /&gt;
&lt;br /&gt;
Параметр &amp;lt;tt&amp;gt;short_name&amp;lt;/tt&amp;gt; &amp;amp;mdash; это краткое название ЯП. Краткое название используется в таблице посылок пользователей и ряде других мест. Краткое название ЯП &amp;amp;mdash; это, по сути, идентификатор ЯП. Он должен представлять собой одно слово, не длинее 32 знаков, состоящее из заглавных и строчных латинских букв, цифр и знаков +, -, _. Как правило, краткое название ЯП определяется автоматически из имени скрипта компиляции и настройки. Например, если скрипт компиляции (точнее, шаблон скрипта компиляции) имеет имя &amp;lt;tt&amp;gt;foo.in&amp;lt;/tt&amp;gt;, то по умолчанию кратное название ЯП будет равно &amp;lt;tt&amp;gt;foo&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Обратите внимание, что в unix-системах имена файлов чувствительны к регистру букв. Значение параметра &amp;lt;tt&amp;gt;short_name&amp;lt;/tt&amp;gt; также чувствительно к регистру букв.&lt;br /&gt;
&lt;br /&gt;
Параметр &amp;lt;tt&amp;gt;long_name&amp;lt;/tt&amp;gt; &amp;amp;mdash; это развернутое (полное) название ЯП. Например, краткое имя ЯП может быть &amp;lt;tt&amp;gt;foo&amp;lt;/tt&amp;gt;, а полное &amp;amp;mdash; &amp;amp;quot;GNU Foo Interpreter&amp;amp;quot;. Обратите внимание, что в полное название ЯП не входит номер версии.&lt;br /&gt;
&lt;br /&gt;
Параметр &amp;lt;tt&amp;gt;src_sfx&amp;lt;/tt&amp;gt; &amp;amp;mdash; это стандартный суффикс исходных файлов для данного ЯП. Например, если для ЯП GNU Foo исходные файлы называются &amp;lt;tt&amp;gt;file.foo&amp;lt;/tt&amp;gt;, то суффиксом исходных файлов будет строка &amp;lt;tt&amp;gt;.foo&amp;lt;/tt&amp;gt; (обратите внимание, что &amp;amp;quot;точка&amp;amp;quot; входит в суффикс).&lt;br /&gt;
&lt;br /&gt;
Параметр &amp;lt;tt&amp;gt;exe_sfx&amp;lt;/tt&amp;gt; определяет стандартный суффикс для исполняемых файлов для данного ЯП. Как правило, суффикс исполняемых файлов зависит от архитектуры ЯП. Так, для архитектур linux и linux-shared стандартный суффикс исполняемых файлов не требуется, поэтому параметр &amp;lt;tt&amp;gt;exe_sfx&amp;lt;/tt&amp;gt; может быть опущен или иметь пустое значение. Для архитектур dos и msil стандартный суффикс исполняемых файлов &amp;amp;mdash; &amp;lt;tt&amp;gt;.exe&amp;lt;/tt&amp;gt;, а для архитектуры java &amp;amp;mdash; &amp;lt;tt&amp;gt;.jar&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Параметры &amp;lt;tt&amp;gt;arch&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;insecure&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;short_name&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;long_name&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;src_sfx&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;exe_sfx&amp;lt;/tt&amp;gt; описывают свойства собственно ЯП, поэтому для данного ЯП не меняются от инсталляции к инсталляции системы ejudge.&lt;br /&gt;
&lt;br /&gt;
Параметры &amp;lt;tt&amp;gt;version&amp;lt;/tt&amp;gt; и &amp;lt;tt&amp;gt;arg&amp;lt;/tt&amp;gt; описывают свойства инсталляции данного ЯП в конкретной системе, поэтому их значения могут меняться от инсталляции к инсталляции.&lt;br /&gt;
&lt;br /&gt;
Параметр &amp;lt;tt&amp;gt;version&amp;lt;/tt&amp;gt; определяет версию ЯП. Если значение этого параметра пусто, то считается, что соответствующий ЯП не был обнаружен в системе. Поэтому значение этого параметра не должно быть пустым. Версия ЯП определяется настроечным скриптом, как правило, с помощью запуска ЯП со специальными опциями и обработки полученного вывода.&lt;br /&gt;
&lt;br /&gt;
Параметр &amp;lt;tt&amp;gt;arg&amp;lt;/tt&amp;gt; содержит аргумент конфигурации ЯП, переданный в скрипты настройки ejudge-setup или ejudge-configure-compilers. Например, если запустить программу ejudge-configure-compilers с опцией --with-foo=/usr/local/bin/foo, то параметр /usr/local/bin/foo будет передан скрипту конфигурации ЯП foo-version. Кроме того, этот параметр может быть установлен и в интерактивном режиме в программах ejudge-setup и ejudge-configure-compilers. Как правило, этот параметр задает путь к ЯП в файловой системе, и полезен в случаях, когда ЯП размещается в нестандартных местах.&lt;br /&gt;
&lt;br /&gt;
== Структура файлов для поддержки ЯП ==&lt;br /&gt;
&lt;br /&gt;
Предположим, что система ejudge проинсталлирована в каталог /opt/ejudge, а каталог для данных установлен в /home/ejudge.&lt;br /&gt;
Тогда в каталоге /home/ejudge/compile размещаются конфигурационные файлы и скрипты для сервера компиляции программ.&lt;br /&gt;
&lt;br /&gt;
=== compile.cfg ===&lt;br /&gt;
&lt;br /&gt;
Файл /home/ejudge/compile/conf/compile.cfg &amp;amp;mdash; основной конфигурационный файл сервера компиляции [[compile]]. В файле&lt;br /&gt;
содержится информация, необходимая для компиляции для всех поддерживаемых в данной инсталляции ЯП.&lt;br /&gt;
Например, для ЯП foo секция описания ЯП может выглядить следующим образом:&lt;br /&gt;
 [language]&lt;br /&gt;
 id = 99&lt;br /&gt;
 short_name = &amp;quot;foo&amp;quot;&lt;br /&gt;
 long_name = &amp;quot;GNU Foo Interpreter&amp;quot;&lt;br /&gt;
 src_sfx = &amp;quot;.foo&amp;quot;&lt;br /&gt;
 cmd = &amp;quot;foo&amp;quot;&lt;br /&gt;
Здесь &amp;lt;tt&amp;gt;id&amp;lt;/tt&amp;gt; &amp;amp;mdash; это числовой идентификатор ЯП, уникальный для всех ЯП в данной инсталляции. Остальная информация о ЯП берется из параметров ЯП, описанных в предыдущем разделе.&lt;br /&gt;
&lt;br /&gt;
Файл /home/ejudge/compile/conf/compile.cfg автоматически записывается при каждом вызове программы ejudge-configure-compilers. Все изменения, внесенные в него вручную, теряются при каждом запуске ejudge-configure-compilers.&lt;br /&gt;
&lt;br /&gt;
Версия ЯП и флаг, что соответствующий ЯП в системе обнаружен, не содержатся в этом конфигурационном файле, а считываются непосредственно из конфигурационного файла ЯП при каждом запуске программы compile.&lt;br /&gt;
&lt;br /&gt;
=== lang_ids.cfg ===&lt;br /&gt;
&lt;br /&gt;
Идентификаторы &amp;lt;tt&amp;gt;id&amp;lt;/tt&amp;gt; ЯП, поддерживаемых в стандартной поставке, хранятся в файле&lt;br /&gt;
${prefix}/libexec/ejudge/lang/lang_ids.cfg. Если информация о новом ЯП в этом файле отсутствует, его идентификатор назначается автоматически: берется первый еще не использованный в файле compile.cfg. Пользователь может&lt;br /&gt;
скопировать файл lang_ids.cfg в каталог ${prefix}/compile/scripts и вносить в него произвольные изменения. Модифицировать файл ${prefix}/libexec/ejudge/lang/lang_ids.cfg не рекомендуется, так как он будет перезаписан при обновлении системы.&lt;br /&gt;
&lt;br /&gt;
=== Каталог lang.d ===&lt;br /&gt;
&lt;br /&gt;
Каталог /home/ejudge/compile/conf/lang.d содержит файлы конфигурационных настроек всех поддерживаемых системой ejudge ЯП. Для ЯП foo конфигурационный файл называется &amp;lt;tt&amp;gt;foo.cfg&amp;lt;/tt&amp;gt;. Его содержимое может быть примерно таким:&lt;br /&gt;
 version=&amp;quot;3.14&amp;quot;&lt;br /&gt;
 arg=&amp;quot;/usr/local/bin/foo&amp;quot;&lt;br /&gt;
 long_name=&amp;quot;GNU Foo Interpreter&amp;quot;&lt;br /&gt;
 src_sfx=&amp;quot;.foo&amp;quot;&lt;br /&gt;
 arch=&amp;quot;linux-shared&amp;quot;&lt;br /&gt;
 FOOPATH=&amp;quot;/usr/local/bin/foo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Файл записывается в синтаксисе /bin/sh. Этот файл используется как программами системы ejudge, такими как compile, super-serve, так и непосредственно скриптами foo и foo-version. Он генерируется скриптом foo-version, запускаемым в специальном режиме.&lt;br /&gt;
&lt;br /&gt;
Помимо параметров ЯП, описанных выше, файл может содержать определения произвольных переменных, необходимых для работы скриптов foo или foo-version. На примере выше это переменная &amp;lt;tt&amp;gt;FOOPATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Каталог in ===&lt;br /&gt;
&lt;br /&gt;
В каталоге in находятся заготовки для скриптов конфигурации и компиляции ЯП. В каталоге /opt/ejudge/libexec/ejudge/lang/in находятся заготовки скриптов для ЯП, поддерживаемых в стандартной поставке системы ejudge. В каталоге /home/ejudge/compile/scripts/in находятся заготовки скриптов пользователя. Последний каталог более приоритетен, то есть если заготовка скрипта обнаружена в каталоге /home/ejudge/compile/scripts/in, системный каталог проверяться не будет. Поэтому, если необходимо модифицировать поставляемый скрипт, его нужно предварительно скопировать в этот каталог, затем модифицировать. Модифицировать файлы непосредственно в каталоге /opt/ejudge/libexec/ejudge/lang/in не рекомендуется, так как эти файлы перезаписываются при обновлении системы ejudge.&lt;br /&gt;
&lt;br /&gt;
=== Каталог scripts ===&lt;br /&gt;
&lt;br /&gt;
В каталоге /home/ejudge/compile/scripts находятся обработанные заготовки скриптов, готовые к использованию всеми программами системы ejudge. Заготовки скриптов обрабатываются и копируются из каталогов /opt/ejudge/libexec/ejudge/lang/in и /home/ejudge/compile/scripts/in в этот каталог программой ejudge-configure-compilers.&lt;br /&gt;
&lt;br /&gt;
=== Заготовки скриптов ===&lt;br /&gt;
&lt;br /&gt;
Для ЯП foo должны быть написаны заготовки скриптов foo.in и foo-version.in. Заготовки скриптов должны быть помещены в каталог /home/ejudge/compile/scripts/in. Заготовки скриптов по смыслу соответствуют заготовкам файлов Makefile.in, config.h.in в системе GNU autotools. То есть в заготовках скриптов выполняется замена переменных вида &amp;lt;tt&amp;gt;@var@&amp;lt;/tt&amp;gt; на их значения.&lt;br /&gt;
&lt;br /&gt;
Поддерживаемые подстановки перечислены в таблице&lt;br /&gt;
{|&lt;br /&gt;
! подстановка&lt;br /&gt;
! соотв. опция configure&lt;br /&gt;
! значение для рассм. примера&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;@lang_config_dir@&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;--enable-lang-config-dir&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;/home/ejudge/compile/conf/lang.d&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;@prefix@&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;--prefix&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;/opt/ejudge&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;@exec_prefix@&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;--exec-prefix&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;/opt/ejudge&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;@libexecdir@&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;--libexecdir&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;/opt/ejudge/libexec&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;@local_dir@&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;--enable-local-dir&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;/var/lib/ejudge&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;@contests_home_dir@&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;--enable-contests-home-dir&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;/home/ejudge&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Настроечный скрипт ==&lt;br /&gt;
&lt;br /&gt;
=== Интерфейс ===&lt;br /&gt;
&lt;br /&gt;
Настроечный скрипт должен поддерживать несколько режимов запуска. Режимы задаются с помощью опций командной строки.&lt;br /&gt;
Все режимы работы рассматриваются на примере настроечного скрипта foo-version&lt;br /&gt;
&lt;br /&gt;
==== -r &amp;amp;mdash; режим конфигурирования ====&lt;br /&gt;
&lt;br /&gt;
 foo-version [-v] -r [ARG]&lt;br /&gt;
&lt;br /&gt;
В режиме конфигурирования должна быть проверена поддержка ЯП в данной инсталляции. На стандартный поток вывода должно быть напечатано новое содержимое конфигурационного файла ЯП foo.cfg. Кроме того, если указана опция -v, на стандартный поток ошибок должна быть напечатана дополнительная информация о процессе конфигурирования. При успешном конфигурировании код завершения должен быть равен 0, а при неудаче &amp;amp;mdash; 1. В параметре &amp;lt;tt&amp;gt;ARG&amp;lt;/tt&amp;gt; передается путь, который указал пользователь в опции &amp;lt;tt&amp;gt;--with-foo=ARG&amp;lt;/tt&amp;gt; при конфигурировании в пакетном режиме, либо путь, введенный им при конфигурировании в диалоговом режиме.&lt;br /&gt;
&lt;br /&gt;
Так, если ЯП foo поддерживается в данной инсталляции, сценарий запуска может быть следующим:&lt;br /&gt;
&lt;br /&gt;
 bash$ foo-version -v -r /usr/local/bin/foo&lt;br /&gt;
 version=&amp;quot;3.14&amp;quot;&lt;br /&gt;
 arg=&amp;quot;/usr/local/bin/foo&amp;quot;&lt;br /&gt;
 long_name=&amp;quot;GNU Foo Interpreter&amp;quot;&lt;br /&gt;
 src_sfx=&amp;quot;.foo&amp;quot;&lt;br /&gt;
 arch=&amp;quot;linux-shared&amp;quot;&lt;br /&gt;
 FOOPATH=&amp;quot;/usr/local/bin/foo&amp;quot;&lt;br /&gt;
 checking whether GNU Foo is available... yes, /usr/local/bin/foo, 3.14&lt;br /&gt;
 bash$&lt;br /&gt;
&lt;br /&gt;
Последняя строка (checking...) выводится на стандартный поток ошибок.&lt;br /&gt;
&lt;br /&gt;
Если ЯП foo не поддерживается в данной инсталляции, сценарий запуска может быть следующим:&lt;br /&gt;
&lt;br /&gt;
 bash$ foo-version -v -r&lt;br /&gt;
 version=&lt;br /&gt;
 arg=&lt;br /&gt;
 long_name=&amp;quot;GNU Foo Interpreter&amp;quot;&lt;br /&gt;
 src_sfx=&amp;quot;.foo&amp;quot;&lt;br /&gt;
 arch=&amp;quot;linux-shared&amp;quot;&lt;br /&gt;
 FOOPATH=&amp;quot;/bin/false&amp;quot;&lt;br /&gt;
 checking whether GNU Foo is available... no&lt;br /&gt;
 bash$&lt;br /&gt;
&lt;br /&gt;
Последняя строка (checking...) выводится на стандартный поток ошибок.&lt;br /&gt;
&lt;br /&gt;
==== -l &amp;amp;mdash; режим получения списка ====&lt;br /&gt;
&lt;br /&gt;
 foo-version -l&lt;br /&gt;
&lt;br /&gt;
В режиме получения списков ЯП на стандартный поток вывода должна быть напечатана строка информации о ЯП.&lt;br /&gt;
Строка информации печатается независимо от того, поддерживается ли данный ЯП в данной инсталляции.&lt;br /&gt;
Код завершения всегда должен быть равен 0. &lt;br /&gt;
&lt;br /&gt;
Так, для ЯП foo сценарий запуска может быть следующим:&lt;br /&gt;
&lt;br /&gt;
 bash$ foo-version -l&lt;br /&gt;
 GNU Foo Interpreter [http://gnufoo.org]&lt;br /&gt;
 bash$&lt;br /&gt;
&lt;br /&gt;
Режим получения списка ЯП используется программой ejudge-configure-compilers при запуске ее с опцией --list.&lt;br /&gt;
&lt;br /&gt;
==== -p &amp;amp;mdash; печать пути к ЯП ====&lt;br /&gt;
&lt;br /&gt;
 foo-version -p&lt;br /&gt;
&lt;br /&gt;
В режиме печати пути к ЯП на стандартный поток вывода должен быть напечатан путь к ЯП. Код завершения должен быть равен 0. Если ЯП не поддерживается в данной инсталляции, вывод должен быть пуст, а код завершения равен 1. В этом случае на стандартный поток ошибок может выводиться диагностическое сообщение.&lt;br /&gt;
&lt;br /&gt;
Так, если ЯП foo поддерживается в данной инсталляции, сценарий запуска может быть следующим:&lt;br /&gt;
&lt;br /&gt;
 bash$ foo-version -p&lt;br /&gt;
 /usr/local/bin/foo&lt;br /&gt;
 bash$&lt;br /&gt;
&lt;br /&gt;
Режим печати используется программой super-serve в некоторых специальных случаях.&lt;br /&gt;
&lt;br /&gt;
==== -f &amp;amp;mdash; печать полного имени и версии ====&lt;br /&gt;
&lt;br /&gt;
 foo-version -f&lt;br /&gt;
&lt;br /&gt;
В режиме печати полного названия ЯП на стандартный поток вывода должно быть напечатано полное имя ЯП и номер версии ЯП. В случае, если ЯП не поддерживается на данной системе (в данной инсталляции), стандартный поток вывода должен быть пуст, а код возврата равен 1. На стандартный поток ошибок при этом может выводиться диагностическое сообщение.&lt;br /&gt;
&lt;br /&gt;
Так, если ЯП foo поддерживается в данной инсталляции, сценарий запуска может быть следующим:&lt;br /&gt;
&lt;br /&gt;
 bash$ foo-version -f&lt;br /&gt;
 GNU Foo Interpreter 3.14&lt;br /&gt;
 bash$&lt;br /&gt;
&lt;br /&gt;
Если ЯП foo не поддерживается, то следующим:&lt;br /&gt;
&lt;br /&gt;
 bash$ foo-version -f&lt;br /&gt;
 This language is not supported.&lt;br /&gt;
 bash$&lt;br /&gt;
&lt;br /&gt;
в этом случае сообщение выводится на стандартный поток ошибок.&lt;br /&gt;
&lt;br /&gt;
Режим печати версии используется программой super-serve в процессе настройки ЯП при редактировании турнира.&lt;br /&gt;
&lt;br /&gt;
==== печать версии ====&lt;br /&gt;
&lt;br /&gt;
 foo-version&lt;br /&gt;
&lt;br /&gt;
В режиме печати версий, который задаётся запуском скрипта без параметров, на стандартный поток вывода должен быть напечатан номер версии ЯП. В случае, если ЯП не поддерживается на данной системе (в данной инсталляции), стандартный поток вывода должен быть пуст, а код возврата равен 1. На стандартный поток ошибок при этом может выводиться диагностическое сообщение.&lt;br /&gt;
&lt;br /&gt;
Так, если ЯП foo поддерживается в данной инсталляции, сценарий запуска может быть следующим:&lt;br /&gt;
&lt;br /&gt;
 bash$ foo-version&lt;br /&gt;
 3.14&lt;br /&gt;
 bash$&lt;br /&gt;
&lt;br /&gt;
Если ЯП foo не поддерживается, то следующим:&lt;br /&gt;
&lt;br /&gt;
 bash$ foo-version&lt;br /&gt;
 This language is not supported.&lt;br /&gt;
 bash$&lt;br /&gt;
&lt;br /&gt;
в этом случае сообщение выводится на стандартный поток ошибок.&lt;br /&gt;
&lt;br /&gt;
Режим печати версии используется программой super-serve в процессе настройки ЯП при редактировании турнира.&lt;br /&gt;
&lt;br /&gt;
=== Реализация ===&lt;br /&gt;
&lt;br /&gt;
Рассмотрим реализацию скрипта конфигурирования ЯП foo [[foo-version.in]]. За образец для этого (гипотетического) скрипта взят скрипт для конфигурирования ЯП Ruby.&lt;br /&gt;
&lt;br /&gt;
== Скрипт компиляции ==&lt;br /&gt;
&lt;br /&gt;
Скрипт компиляции принимает в качестве параметров имя файла с исходным текстом программы для ЯП и имя файла результата.&lt;br /&gt;
Задача скрипта компиляции &amp;amp;mdash; получить на выходе файл, готовый к запуску в окружении, задаваемом архитектурой языка.&lt;br /&gt;
&lt;br /&gt;
Для компилируемых языков результатом работы скрипта компиляции является бинарный исполняемый файл. Для интерпретируемых языков результатом работы скрипта компиляции является скрипт, готовый к запуску. Как правило, для интерпретируемых языков для этого достаточно записать в начало файла конструкцию&lt;br /&gt;
 #! INTERP-PATH ARGS&lt;br /&gt;
и установить бит &amp;lt;tt&amp;gt;x&amp;lt;/tt&amp;gt; разрешения выполнения файла. Здесь INTERP-PATH &amp;amp;mdash; это полный путь к интерпретатору соответствующего языка.&lt;br /&gt;
&lt;br /&gt;
Далее скрипт компиляции рассматривается на примере гипотетического интерпретируемого языка foo.&lt;br /&gt;
&lt;br /&gt;
=== Интерфейс ===&lt;br /&gt;
&lt;br /&gt;
Интерфейс скрипта компиляции очень простой&lt;br /&gt;
&lt;br /&gt;
 foo SRC-FILE DST-FILE&lt;br /&gt;
&lt;br /&gt;
Здесь SRC-FILE &amp;amp;mdash; имя входного файла, DST-FILE &amp;amp;mdash; имя выходного файла. Система ejudge формирует имена входного и выходного файлов с использованием суффиксов исходного файла и файла результата, как указано в конфигурационном файле ЯП. Таким образом, никакой дополнительной обработки имен входного и выходного файла выполнять не требуется.&lt;br /&gt;
&lt;br /&gt;
Дополнительно в переменной окружения EJUDGE_FLAGS могут задаваться флаги для ЯП. Администратор турнира имеет возможность устанавливать флаги при редактировании турнира. Поэтому скрипт компиляции должен поддерживать задание дополнительных опций с помощью еременной окружения EJUDGE_FLAGS.&lt;br /&gt;
&lt;br /&gt;
=== Реализация ===&lt;br /&gt;
&lt;br /&gt;
Пример реализации скрипта компиляции [[foo.in]]. За образец для этого (гипотетического) скрипта взят скрипт для компиляции ЯП Ruby.&lt;br /&gt;
&lt;br /&gt;
== Переконфигурация поддерживаемых ЯП ==&lt;br /&gt;
&lt;br /&gt;
После того, как скрипты foo-version.in и foo.in помещены в каталог /home/ejudge/compile/scripts/in достаточно запустить программу ejudge-configure-compilers. Если скрипты написаны правильно, версия ЯП должна быть определена корректно, после чего язык готов к использованию.&lt;br /&gt;
&lt;br /&gt;
В турнир язык может быть добавлен при редактировании настроек турнира с помощью CGI-программы [[serve-control]].&lt;br /&gt;
&lt;br /&gt;
== Перезапуск ejudge ==&lt;br /&gt;
&lt;br /&gt;
После выполнения всех шагов не забудьте перезапустить ejudge, чтобы сервер компиляции compile считал новый конфигурационный файл.&lt;/div&gt;</summary>
		<author><name>Massiv</name></author>
		
	</entry>
	<entry>
		<id>https://www.ejudge.ru/wiki/index.php?title=%D0%9D%D0%B5%D0%BE%D0%B1%D1%85%D0%BE%D0%B4%D0%B8%D0%BC%D1%8B%D0%B5_%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B_%D0%B8_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B8&amp;diff=5460</id>
		<title>Необходимые сторонние программы и библиотеки</title>
		<link rel="alternate" type="text/html" href="https://www.ejudge.ru/wiki/index.php?title=%D0%9D%D0%B5%D0%BE%D0%B1%D1%85%D0%BE%D0%B4%D0%B8%D0%BC%D1%8B%D0%B5_%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B_%D0%B8_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B8&amp;diff=5460"/>
		<updated>2013-12-03T13:43:02Z</updated>

		<summary type="html">&lt;p&gt;Massiv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Инсталляция]]/[[Инсталляция из исходных текстов]]/[[Необходимые сторонние программы и библиотеки]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;make&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;gcc&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;glibc-devel&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;glibc-static&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;bison&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;flex&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;gawk&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;sed&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;zlib&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;zlib-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;ncurses&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;ncurses-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;expat&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;expat-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;gettext&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;gettext-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;libzip&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;libzip-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;mysql-libs&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;mysql&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;mysql-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;libcurl&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;libcurl-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;libuuid&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;libuuid-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для систем Fedora все необходимые программы и библиотеки могут быть установлены с помощью команды yum install:&lt;br /&gt;
 yum install make gcc glibc-devel glibc-static bison flex gawk sed zlib zlib-devel ncurses ncurses-devel expat expat-devel libzip libzip-devel gettext gettext-devel mysql-libs mysql mysql-devel libcurl libcurl-devel libuuid libuuid-devel&lt;br /&gt;
&lt;br /&gt;
Дополнительные компиляторы и интерпретаторы языков программирования:&lt;br /&gt;
* &amp;lt;b&amp;gt;gcc-c++&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;libstdc++-static&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;fpc&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;ruby&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;python&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;python3&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;php&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;php-common&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;php-cli&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;perl&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;drscheme&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;gprolog&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;mono-core&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;mono-basic&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;gcc-java&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;java-1.6.0-openjdk&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;java-1.6.0-openjdk-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;gcc-gfortran&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 yum install gcc-c++ libstdc++-static fpc ruby python python3 php php-common php-cli perl gprolog ghc mono-core mono-basic gcc-gfortran libgfortran-static gcc-go libgo-static mono-extras mono-locale-extras valgrind nasm&lt;br /&gt;
&lt;br /&gt;
Прочее&lt;br /&gt;
 yum install firefox vim screen wget ncftp mc fuse-sshfs patch kernel-tools kernel-devel gcc strace subversion gdb&lt;br /&gt;
&lt;br /&gt;
Для сборки плагинов, в частности, плагина для работы с MySQL/MariaDB&lt;br /&gt;
 yum install libssl&lt;/div&gt;</summary>
		<author><name>Massiv</name></author>
		
	</entry>
	<entry>
		<id>https://www.ejudge.ru/wiki/index.php?title=%D0%9D%D0%B5%D0%BE%D0%B1%D1%85%D0%BE%D0%B4%D0%B8%D0%BC%D1%8B%D0%B5_%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B_%D0%B8_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B8&amp;diff=5459</id>
		<title>Необходимые сторонние программы и библиотеки</title>
		<link rel="alternate" type="text/html" href="https://www.ejudge.ru/wiki/index.php?title=%D0%9D%D0%B5%D0%BE%D0%B1%D1%85%D0%BE%D0%B4%D0%B8%D0%BC%D1%8B%D0%B5_%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B_%D0%B8_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B8&amp;diff=5459"/>
		<updated>2013-12-03T13:42:32Z</updated>

		<summary type="html">&lt;p&gt;Massiv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Инсталляция]]/[[Инсталляция из исходных текстов]]/[[Необходимые сторонние программы и библиотеки]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;make&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;gcc&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;glibc-devel&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;glibc-static&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;bison&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;flex&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;gawk&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;sed&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;zlib&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;zlib-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;ncurses&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;ncurses-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;expat&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;expat-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;gettext&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;gettext-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;libzip&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;libzip-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;mysql-libs&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;mysql&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;mysql-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;libcurl&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;libcurl-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;libuuid&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;libuuid-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для систем Fedora все необходимые программы и библиотеки могут быть установлены с помощью команды yum install:&lt;br /&gt;
 yum install make gcc glibc-devel glibc-static bison flex gawk sed zlib zlib-devel ncurses ncurses-devel expat expat-devel libzip libzip-devel gettext gettext-devel mysql-libs mysql mysql-devel libcurl libcurl-devel libuuid libuuid-devel&lt;br /&gt;
&lt;br /&gt;
Дополнительные компиляторы и интерпретаторы языков программирования:&lt;br /&gt;
* &amp;lt;b&amp;gt;gcc-c++&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;libstdc++-static&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;fpc&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;ruby&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;python&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;python3&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;php&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;php-common&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;php-cli&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;perl&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;drscheme&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;gprolog&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;mono-core&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;mono-basic&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;gcc-java&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;java-1.6.0-openjdk&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;java-1.6.0-openjdk-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;gcc-gfortran&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 yum install gcc-c++ libstdc++-static fpc ruby python python3 php php-common php-cli perl gprolog ghc mono-core mono-basic gcc-gfortran libgfortran-static gcc-go libgo-static mono-extras mono-locale-extras valgrind nasm&lt;br /&gt;
&lt;br /&gt;
Прочее&lt;br /&gt;
 yum install firefox vim screen wget ncftp mc fuse-sshfs patch kernel-tools kernel-devel gcc strace subversion gdb&lt;br /&gt;
&lt;br /&gt;
Для сборки плагинов, в частности плагина для работы с MySQL/MariaDB&lt;br /&gt;
 yum install libssl&lt;/div&gt;</summary>
		<author><name>Massiv</name></author>
		
	</entry>
	<entry>
		<id>https://www.ejudge.ru/wiki/index.php?title=%D0%9D%D0%B5%D0%BE%D0%B1%D1%85%D0%BE%D0%B4%D0%B8%D0%BC%D1%8B%D0%B5_%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B_%D0%B8_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B8&amp;diff=5458</id>
		<title>Необходимые сторонние программы и библиотеки</title>
		<link rel="alternate" type="text/html" href="https://www.ejudge.ru/wiki/index.php?title=%D0%9D%D0%B5%D0%BE%D0%B1%D1%85%D0%BE%D0%B4%D0%B8%D0%BC%D1%8B%D0%B5_%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B_%D0%B8_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B8&amp;diff=5458"/>
		<updated>2013-12-03T13:20:41Z</updated>

		<summary type="html">&lt;p&gt;Massiv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Инсталляция]]/[[Инсталляция из исходных текстов]]/[[Необходимые сторонние программы и библиотеки]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;make&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;gcc&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;glibc-devel&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;glibc-static&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;bison&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;flex&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;gawk&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;sed&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;zlib&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;zlib-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;ncurses&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;ncurses-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;expat&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;expat-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;gettext&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;gettext-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;libzip&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;libzip-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;mysql-libs&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;mysql&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;mysql-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;libcurl&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;libcurl-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;libuuid&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;libuuid-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для систем Fedora все необходимые программы и библиотеки могут быть установлены с помощью команды yum install:&lt;br /&gt;
 yum install make gcc glibc-devel glibc-static bison flex gawk sed zlib zlib-devel ncurses ncurses-devel expat expat-devel libzip libzip-devel gettext gettext-devel mysql-libs mysql mysql-devel libcurl libcurl-devel libuuid libuuid-devel&lt;br /&gt;
&lt;br /&gt;
Дополнительные компиляторы и интерпретаторы языков программирования:&lt;br /&gt;
* &amp;lt;b&amp;gt;gcc-c++&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;libstdc++-static&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;fpc&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;ruby&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;python&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;python3&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;php&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;php-common&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;php-cli&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;perl&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;drscheme&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;gprolog&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;mono-core&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;mono-basic&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;gcc-java&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;java-1.6.0-openjdk&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;java-1.6.0-openjdk-devel&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;gcc-gfortran&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 yum install gcc-c++ libstdc++-static fpc ruby python python3 php php-common php-cli perl gprolog ghc mono-core mono-basic gcc-gfortran libgfortran-static gcc-go libgo-static mono-extras mono-locale-extras valgrind nasm&lt;br /&gt;
&lt;br /&gt;
Прочее&lt;br /&gt;
 yum install firefox vim screen wget ncftp mc fuse-sshfs patch kernel-tools kernel-devel gcc strace subversion gdb&lt;br /&gt;
&lt;br /&gt;
Для сборки плагинов, в частности плагина для работы с MySQL/MariaDB&lt;br /&gt;
yum install libssl&lt;/div&gt;</summary>
		<author><name>Massiv</name></author>
		
	</entry>
	<entry>
		<id>https://www.ejudge.ru/wiki/index.php?title=%D0%9F%D0%B0%D1%82%D1%87_%D0%BA_%D1%8F%D0%B4%D1%80%D1%83_Linux:_%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B5_Fedora_Linux&amp;diff=5444</id>
		<title>Патч к ядру Linux: установка в системе Fedora Linux</title>
		<link rel="alternate" type="text/html" href="https://www.ejudge.ru/wiki/index.php?title=%D0%9F%D0%B0%D1%82%D1%87_%D0%BA_%D1%8F%D0%B4%D1%80%D1%83_Linux:_%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B5_Fedora_Linux&amp;diff=5444"/>
		<updated>2013-11-30T20:37:23Z</updated>

		<summary type="html">&lt;p&gt;Massiv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ядро Linux многие создатели дистрибутивов собирают самостоятельно с какими-либо патчами. Никто не может гарантировать, что любые патчи совместимы. Ванильное ядро (vanilla kernel) с сайта kernel.org считается эталонным.&lt;br /&gt;
Как правило, патч для работы ejudge применяется к ванильному ядру, которое нужно скачать с kernel.org. Посмотрите, для какой  версии ядра предлагается патч (иногда есть несколько на выбор).&lt;br /&gt;
&lt;br /&gt;
Установите пакеты&lt;br /&gt;
 &lt;br /&gt;
 # yum install -y ncurses-devel gcc make rpm-build redhat-rpm-config kernel-devel&lt;br /&gt;
&lt;br /&gt;
В /usr/src/kernels будет Ваше текущее ядро&lt;br /&gt;
&lt;br /&gt;
 # cd /usr/src/kernels/&lt;br /&gt;
&lt;br /&gt;
Скачайте архив c ftp://ftp.kernel.org/pub/linux/kernel/&lt;br /&gt;
&lt;br /&gt;
 # wget ftp://ftp.kernel.org/pub/linux/kernel/v3.x/linux-3.11.7.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Распакуйте его &lt;br /&gt;
&lt;br /&gt;
 # tar -xvzf linux-3.11.7.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Скачайте патч&lt;br /&gt;
&lt;br /&gt;
 # wget http://www.ejudge.ru/download/linux-3.11.7-3.11.7-cher1.diff&lt;br /&gt;
&lt;br /&gt;
Примените его &lt;br /&gt;
&lt;br /&gt;
 # patch -p1 &amp;lt; linux-2.6.26.3-2.6.26.3-cher1.diff&lt;br /&gt;
&lt;br /&gt;
Можно и желательно так же скопировать конфигурационный файл от текущего ядра, он находится в папке /boot/ и начинается с &amp;quot;config-&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # cp /boot/config-ВЕРСИЯ-ЯДРА ./.config&lt;br /&gt;
&lt;br /&gt;
Заодно можно донастроить конфигурационный файл, вызвав:&lt;br /&gt;
&lt;br /&gt;
 # make menuconfig&lt;br /&gt;
&lt;br /&gt;
Затем выбрать пункт &amp;quot;Load Alternate Config File&amp;quot; ввести &amp;quot;.config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Если ядро из дистрибутива поддерживает не всё оборудование, которое есть на Вашей машине, попробуйте включить в конфигурацию ядра его поддержку.&lt;br /&gt;
&lt;br /&gt;
Не стоит забывать после окончания настройки сохранить .config через пункт &amp;quot;Save Alternate Config File&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Теперь можно приступать к компиляции. &lt;br /&gt;
&lt;br /&gt;
 # make rpm &lt;br /&gt;
&lt;br /&gt;
После этого инсталлируйте получившийся RPM-пакет&lt;br /&gt;
&lt;br /&gt;
Проверьте настройки загрузчика и перезагрузитесь в ядро с патчем.&lt;/div&gt;</summary>
		<author><name>Massiv</name></author>
		
	</entry>
	<entry>
		<id>https://www.ejudge.ru/wiki/index.php?title=%D0%9F%D0%B0%D1%82%D1%87_%D0%BA_%D1%8F%D0%B4%D1%80%D1%83_Linux:_%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B5_Fedora_Linux&amp;diff=5443</id>
		<title>Патч к ядру Linux: установка в системе Fedora Linux</title>
		<link rel="alternate" type="text/html" href="https://www.ejudge.ru/wiki/index.php?title=%D0%9F%D0%B0%D1%82%D1%87_%D0%BA_%D1%8F%D0%B4%D1%80%D1%83_Linux:_%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B5_Fedora_Linux&amp;diff=5443"/>
		<updated>2013-11-30T20:36:16Z</updated>

		<summary type="html">&lt;p&gt;Massiv: Created page with &amp;quot;Ядро Linux многие создатели дистрибутивов собирают самостоятельно с какими-либо патчами. Никто н...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ядро Linux многие создатели дистрибутивов собирают самостоятельно с какими-либо патчами. Никто не может гарантировать, что любые патчи совместимы. Ванильное ядро (vanilla kernel) с сайта kernel.org считается эталонным.&lt;br /&gt;
Как правило, патч для работы ejudge применяется к ванильному ядру, которое нужно скачать с kernel.org. Посмотрите, для какой  версии ядра предлагается патч (иногда есть несколько на выбор).&lt;br /&gt;
&lt;br /&gt;
Установите пакеты&lt;br /&gt;
&lt;br /&gt;
yum install -y ncurses-devel gcc make rpm-build redhat-rpm-config kernel-devel&lt;br /&gt;
&lt;br /&gt;
В /usr/src/kernels будет Ваше текущее ядро&lt;br /&gt;
&lt;br /&gt;
#cd /usr/src/kernels/&lt;br /&gt;
&lt;br /&gt;
Скачайте архив c ftp://ftp.kernel.org/pub/linux/kernel/&lt;br /&gt;
&lt;br /&gt;
#wget ftp://ftp.kernel.org/pub/linux/kernel/v3.x/linux-3.11.7.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Распакуйте его &lt;br /&gt;
&lt;br /&gt;
#tar -xvzf linux-3.11.7.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Скачайте патч&lt;br /&gt;
&lt;br /&gt;
 # wget http://www.ejudge.ru/download/linux-3.11.7-3.11.7-cher1.diff&lt;br /&gt;
&lt;br /&gt;
Примените его &lt;br /&gt;
&lt;br /&gt;
 # patch -p1 &amp;lt; linux-2.6.26.3-2.6.26.3-cher1.diff&lt;br /&gt;
&lt;br /&gt;
Можно и желательно так же скопировать конфигурационный файл от текущего ядра, он находится в папке /boot/ и начинается с &amp;quot;config-&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # cp /boot/config-ВЕРСИЯ-ЯДРА ./.config&lt;br /&gt;
&lt;br /&gt;
Заодно можно донастроить конфигурационный файл, вызвав:&lt;br /&gt;
&lt;br /&gt;
 # make menuconfig&lt;br /&gt;
&lt;br /&gt;
Затем выбрать пункт &amp;quot;Load Alternate Config File&amp;quot; ввести &amp;quot;.config&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Если ядро из дистрибутива поддерживает не всё оборудование, которое есть на Вашей машине, попробуйте включить в конфигурацию ядра его поддержку.&lt;br /&gt;
&lt;br /&gt;
Не стоит забывать после окончания настройки сохранить .config через пункт &amp;quot;Save Alternate Config File&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Теперь можно приступать к компиляции. &lt;br /&gt;
&lt;br /&gt;
# make rpm &lt;br /&gt;
&lt;br /&gt;
После этого инсталлируйте получившийся RPM-пакет&lt;br /&gt;
&lt;br /&gt;
Проверьте настройки загрузчика и перезагрузитесь в ядро с патчем.&lt;/div&gt;</summary>
		<author><name>Massiv</name></author>
		
	</entry>
	<entry>
		<id>https://www.ejudge.ru/wiki/index.php?title=%D0%9F%D0%B0%D1%82%D1%87_%D0%BA_%D1%8F%D0%B4%D1%80%D1%83_Linux:_%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0&amp;diff=5442</id>
		<title>Патч к ядру Linux: установка</title>
		<link rel="alternate" type="text/html" href="https://www.ejudge.ru/wiki/index.php?title=%D0%9F%D0%B0%D1%82%D1%87_%D0%BA_%D1%8F%D0%B4%D1%80%D1%83_Linux:_%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0&amp;diff=5442"/>
		<updated>2013-11-30T19:25:46Z</updated>

		<summary type="html">&lt;p&gt;Massiv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Патч к ядру Linux: установка в системе Debian Linux]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Патч к ядру Linux: установка в системе Fedora Linux]]&lt;/div&gt;</summary>
		<author><name>Massiv</name></author>
		
	</entry>
	<entry>
		<id>https://www.ejudge.ru/wiki/index.php?title=%D0%9F%D0%B0%D1%82%D1%87_%D0%BA_%D1%8F%D0%B4%D1%80%D1%83_Linux:_%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0&amp;diff=5441</id>
		<title>Патч к ядру Linux: установка</title>
		<link rel="alternate" type="text/html" href="https://www.ejudge.ru/wiki/index.php?title=%D0%9F%D0%B0%D1%82%D1%87_%D0%BA_%D1%8F%D0%B4%D1%80%D1%83_Linux:_%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0&amp;diff=5441"/>
		<updated>2013-11-30T19:25:33Z</updated>

		<summary type="html">&lt;p&gt;Massiv: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Патч к ядру Linux: установка в системе Debian Linux]]&lt;br /&gt;
[[Патч к ядру Linux: установка в системе Fedora Linux]]&lt;/div&gt;</summary>
		<author><name>Massiv</name></author>
		
	</entry>
</feed>