2017年2月7日 星期二

在 Ubuntu 16.04 上安裝 Domjudge 5.1.2 的幾個注意事項

在 Ubuntu 16.04 上安裝 Domjudge 5.1.2 的時候,會遇到 "domserver 上的 domjudge 資料庫未完整建立" 以及 "judgehost 上的 chroot 環境未完整建立" 等二個問題。解法如下:

1. 在 domserver 上建立 domjudge 資料庫:
這個問題出在 Ubuntu 16.04 上的 MySQL (Ver 14.14 Distrib 5.7.17) 採用了較嚴格的資料篩選
原則,使得 "/opt/domjudge/domserver/bin/dj-setup-database -u root -r install" 指令無法成功執行完畢 (停止在匯入日期錯誤!)。

解法的方法是在執行 "/opt/domjudge/domserver/bin/dj-setup-database -u root -r install" 之前,先修改 "/etc/mysql/mysql.conf.d/mysql.cnf" 的內容,在 [mysqld] 的下方加入一行 "sql_mode=",用以抑制 MySQL 的嚴格篩選原則,如下。
[mysqld]
sql_mode=
存檔後,重新啟動 MySQL 服務,使變更生效。
$sudo service mysql restart
2. 在 judgehost 主機上建立 chroot 環境:
這個問題出在 Ubuntu 16.04 上預設的 java run-time environment 已經是第 8 版了,而 Domjudge 5.1.2 版的 "/opt/domjudge/judgehost/bin/dj_make_chroot" 指令稿中,所指定的 java run-time environment 是第 7 版。於是 dj_make_chroot 無法成功地建立 domjudge 的 chroot 環境。

解決之道是修改 "/opt/domjudge/judgehost/bin/dj_make_chroot" 指令稿,將其中出現 2 次的 "INSTALLDEBS="openjdk-7-jre-headless locales" 都修改成 "INSTALLDEBS="default-jre-headless locales",如下:
INSTALLDEBS="default-jre-headless locales"
改好後,再執行一次即可,如下:
$sudo /opt/domjudge/judgehost/bin/dj_make_chroot

本解法的參考文件是: https://github.com/DOMjudge/domjudge/blob/master/misc-tools/dj_make_chroot.in


沒有留言:

張貼留言