3.3 安装系统
还有一份专门为开发者准备的维护者安装方法, 请参考附录: 开发者信息, 并跳过本节其余内容
Domjudge 的安装系统包括一个 configure 脚本和 makefiles, 但是安装的时候, 你必须更加小心, 而不是仅仅执行 ./configure && make && make install.
Domjudge 需要同时安装在服务器和 judgehost 上, 这就要求整个系统可以被部分安装; 在安装系统中, 这些部分分别是: domserver, judgehost 和 docs(文档)
domjudge 可以安装成两种不同的目录结构:
单目录树 (Single directory tree)
使用此方法, 所有和 Domjudge 相关的文件和程序都将安装在同一个目录树中, 该目录树的前缀由
configure的prefix选项指定, 例如:./configure --prefix=$HOME/domjudge --with-baseurl=https://domjudge.example.com/这将会给
domserve,judgehost,docs在$HOME/domjudge中分别创建一个子目录. 可以使用--with-domserver\_root=DIR等选项更改这些默认值, 详细请参考configure --help; 默认的目录前缀是/opt/domjudge除了这些安装文件, 还有一些用于存放日志文件, 临时文件, 提交的源码和测试数据的目录:
- log: 包含了所有的日志文件
- tmp: 包含了所有的临时文件
- submissions: (可选) 仅仅作为备份, 数据库中的文件更具有权威性; 注意: 未使用此功能, 在 web 服务器上, 该文件夹必须是 可写 的
- judgings: 在 judgehost(评测机) 中; 每一个提交都对应该文件夹中的一个子文件夹
这是默认的安装方式, 对于一般情景而言, 这或许是最实用的安装方式, 因为它最大限度地保证了所有的文件都在同一个地方, 并且很容易就能找到
符合 FHS 标准
此方法安装的 Domjudge 目录结构符合 文件系统层级结构标准(FHS); 可以通过
configure的--enable-fhs选项启用, 此时, 目录结构的前缀是/usr/local; 文件将会放到例如PREFIX/share/domjudge,PREFIX/bin,PREFIX/var/log,PREFIX/etc/domjudge中, 并且缓存文件将被放置在/temp中; 你可能需要通过configure的--sysconfdir=/etc和--localstatedir=/var选项更改这些默认目录
注意: configure 的选项 --with-baseurl 虽然不是必须的, 但强烈建议你设置此选项, 因为它允许你通过预设的 URL 来构建 submit client 和队伍手册; 单当你使用 OpenID 的时候, 该选项是必须的; 如果有需要, 稍后可以在 domserver 上的 etc/domserver-static.php 和源码中的 etc/submit-config.h 中更新该设置以重建 submit-client
运行 configure 后就可以开始编译安装系统了; domserver, judgehost 和 docs 都可以单独安, 例如:
make domserver && sudo make install-domserver
make judgehost && sudo make install-judgehost
make docs && sudo make install-docs
注意: root 权限是必须的, 它用来设置密码文件和一些目录的权限和用户和用户组的所有权; 如果你非 root 权限执行, 程序将发出警告, 你必须手动执行这些操作; 虽然 Domjudge 的安装需要 root 权限, 但你不应该在 root 用户下运行 Domjudge 程序和守护进程: 因为 runguard 是唯一需要 root 权限的部分(通过 sudo 获取权限); 此外, 以 root 权限运行还会产生一些问题, 参见 runguard: root privileges not dropped
关于 make 的目标(make target)列表, 请不带参数执行 make