# 3.2 准备工作

关于硬件和软件要求的详细列表，请参阅[前一章有关比赛安排的详细内容](../2-contest-planning)

## Debian 和 ReadHat 的安装命令

为了方便起见，在 **Debian GUN/Linux 及其衍生版(如 Ubuntu)** 中，下面的命令可以在Domserver上安装上文提及的所有软件依赖。

```
sudo apt install gcc g++ make zip unzip mariadb-server \
        apache2 php php-cli libapache2-mod-php php-zip \
        php-gd php-curl php-mysql php-json php-xml php-intl php-mbstring \
        acl bsdmainutils ntp phpmyadmin python-pygments \
        libcgroup-dev linuxdoc-tools linuxdoc-tools-text \
        groff texlive-latex-recommended texlive-latex-extra \
        texlive-fonts-recommended texlive-lang-european
# 如需启用命令行提交客户端，还需要加上一下内容：
sudo apt install libcurl4-gnutls-dev libjsoncpp-dev libmagic-dev
# 如需使用 nginx，将 apache2, libapache2-mod-php 换成 nginx, php-fpm, apache2-utils
```

注意：根据不同发行版，您可能需要手动启用PHP模块。例如在 Ubuntu 中，执行 `sudo phpenmod json` 以启用 JSON模块。

下面的命令用以在 **RedHat 及其衍生版(如 CentOS、Fedora)** 中安装依赖。

```
sudo yum install gcc gcc-c++ make zip unzip mariadb-server \
        httpd php-gd php-cli php-intl php-mbstring php-mysql php-xml \
        python-pygments ntp linuxdoc-tools libcgroup-devel \
        texlive-collection-latexrecommended texlive-wrapfig
# 如需启用命令行提交客户端，还需要加上一下内容：
sudo yum install libcurl-devel jsoncpp-devel file-devel
```

注意：仍需要手动安装 TeX Live 软件包 `expdlist, moreverb` 和 `svn` 以重建队伍手册。此外，`phpmyadmin` 可以从 [Fedora EPEL源](https://fedoraproject.org/wiki/EPEL) 中获得。`jsoncpp-devel` 在 Fedora 中有，但在 RHEL/CentOS 中则没有。

虽然 Libmagic 并非必需安装，但是强烈建议安装以检测二进制文件的提交。通过 `--enable-static-linking` 编译参数，可以将静态库链接到 “提交程序”(`submit`) 的二进制文件中，然后就不需要在提交程序所在的团队设备上安装这些静态库。

在 judgehost 上，以下软件应该就足够了。最后两行是安装一些可能需要的编译器的例子(C、C++、Java(OpenJDK)、Haskell、Pascal)，如有需要可以修改它。

对于 Debian：

```
sudo apt install make sudo debootstrap libcgroup-dev lsof \
        php-cli php-curl php-json php-xml php-zip procps \
        gcc g++ openjdk-8-jre-headless \
        openjdk-8-jdk ghc fp-compiler
```

对于 RedHat：

```
sudo yum install make sudo libcgroup-devel lsof \
        php-cli php-mbstring php-xml php-process procps-ng \
        gcc gcc-c++ glibc-static libstdc++-static \
        java-1.7.0-openjdk-headless java-1.7.0-openjdk-devel \
        ghc-compiler fpc
```

注意：RedHat 7 没有 `fpc`。
