2014-07-22 58 views
0

我想在我的大学改编和管理的Scientific Linux 6.5(Carbon)版本上安装DOMJudge。我不得不使用基于RHEL的Linux版本来获得我大学对该机器的支持,因此切换到基于Debian的Linux不是一种选择。DOMJudge安装:编译脚本没有生成适当的权限

我得到尽可能让网站启动并运行并获得陪审团界面。当我尝试提出解决的“Hello World”例子问题,judgehost吐奶以下编译器错误(下面的文字是完整的,没有冒号后的内容):

Compiling failed: no executable was created; compiler output:

经调查PREFIX/lib/domjudge/judge/compile.sh并进入为提交而创建的判断目录,我发现编译后的二进制文件被赋予了权限,它们根本不允许它被编译脚本看到,从而导致脚本窒息在编译后检查二进制文件的存在。下面是当它被compile.sh产生被授予二进制文件的权限和所有权:

$ ls -al /usr/local/var/lib/domjudge/judgings/domjudge/c2-s1-j11/compile total 1440 drwxrwxrwx. 2 domjudge domjudge 4096 Jul 22 15:07 . drwx------. 3 domjudge domjudge 4096 Jul 22 15:07 .. -rw-rw-r--. 1 domjudge domjudge 106 Jul 22 15:07 helloworld.cpp -rwxr-x---. 1 domjudge-run root 1461083 Jul 22 15:07 program

我judgedaemon用户domjudge和我的chroot用户domjudge运行。

我的问题是这样的:我怎样才能得到compile.sh设置适当的二进制权限,以便它是所有用户可读?如果我吠叫错误的树,并且这个问题在我的DOMJudge配置中显示出更大的问题,请告诉我。我在尝试让DOMJudge在Scientific Linux上工作时遇到了很多挫折,我毫不怀疑我在这方面做了些什么。

注意:我试图忽略compile.sh中的检查来完成脚本,但一旦编译完成,当试图将二进制文件复制到chroot监牢时,judaemon会打嗝,因为它再次不会拥有对文件的读取权限。所以它看起来像我必须解决权限问题的其余的judaemon工作。

+0

我想设置DOMjudge。我正处于设置的初始阶段。到目前为止,我已经下载并提取了domjudge-5.3.2.tar.gz。现在,当我尝试运行./configure命令时,会引发以下错误:configure:error:找不到JSONcpp头(提交客户端时需要)。我正在使用(Red Hat 4.4.7-11)。在尝试使用命令安装libjsoncpp-dev:sudo yum install libjsoncpp-dev时,它失败,说'没有包libjsoncpp-dev可用。 错误:无事可做'。我没有办法继续。请帮忙。 –

+0

我建议联系domjudge-devel邮件列表,因为这是我最终解决问题的方式。由于您试图安装的DOMJudge版本至少有3年的版本,并且有一个主版本比我刚刚设置的版本更新,所以我认为我的解决方案和我的知识对您没有太大的帮助。祝你好运! – randomguywithoutaname

+0

当然。谢谢。 –

回答

0

回答我自己的问题,以便任何人在将来遇到这个问题。

在domjudge-devel邮件列表上询问了解了这个问题。看起来这是一个特定于我大学管理的映像上安全策略的问题。黑客修复这个问题是把下面的行成的lib /法官compile_*.sh文件编译的命令后,立即:

chmod -R a+rX .

Java是比较麻烦一些,需要两个那些语句,一个接编译命令和创建可执行程序后的命令。

请注意,这是一个黑客修复;对问题更正确的解决方案可能需要使用DOMJudge代码本身以适应具有任意安全策略的RHEL Linux安装,如果上述破解修复不是选项,这是对读者的练习。

相关问题