UOJ ubuntu 14升级20
UOJ官网:https://uoj.ac
UOJ部署:首页 - UOJ部署指北 (universaloj.github.io)
新建UOJ项目,请按照上面文档来。本篇攻略讲旧版升级问题。
1.进入docker 容器,显示系统版本命令 lsb_release -a

2.切换apt源,文件 /etc/apt/sources.list
先备份: mv sources.list sources.list.bak
写入阿里源:vim sources.list
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
3.apt相关更新,非root用户记得 root
apt update && apt upgrade && apt autoremove
1.如果出现warning信息,软件找不到 apt -f install
2.如果出现“apt list --upgradable”提示,需要手动升级一些软件包。
apt list --upgradable 查看待升级软件
apt install + 软件名称
4.安装系统升级命令
1.运行第3步的时候,有可能会直接升级到16版本。需要通过第1步的命令确认一下
2.apt install update-manager-core
3.sudo do-release-upgrade 升级系统
遇到yn两项选择的时候,选y
遇到yn,defaut 三项选择,是和apache2有关的,直接敲回车
系统升级,14、16、18、20这样升级,并不是14直接到20了
5.当系统升级到20的时候,不少软件都会跟着升级,例如php、apache2、python、gcc等。
apache2重启动命令:service apache2 restart
php7.4需要处理的事情:
apt install php7.4-mysql
apt install php7.4-zip
apt install php7.4-mbstring
修改php.ini文件
vim /etc/php/7.4/apache2/php.ini
可暂时将 display_errors = On,开启错误显示
extension=mysqli、extension=zip、extension=mbstring 扩展打开,
没有的添加即可
重启apache2项目应该跑起来了,修改web端
app/lib/DB.php ,mv DB.php DB5.php
mv DB7.php DB.php
网站端:
将构造函数里的mysqli_connect() 修改为, new mysqli();
修改 num_rows() 方法,修改:
global $uojMySQL;
return MYSQLI_NUM_rows($uojMySQL);
修改 index.php文件,将Session_start()函数注释掉。
好了,这时候项目运行起来了。还是会有一些小错误,可以选择根据报错信息修改一下。
或者将display_errors = Off,看不见 0.0
6.评测机
ps -ef | grep judge 看一下评测机是否启动
su local_main_judger -c '~/judge_client/judge_client update'
vim /root/up 文件里,可以看到评测机的启动命令。运行下,看有什么报错
python 的requests 库需要重新安装一下,不着急。
下载新版的judge: https://github.com/vfleaking/uoj/tree/master/judger
旧版的judge可以mv掉做个备份,新版的上传服务器。
通过 docker cp xxx 容器ID:/xxxx 命令复制到容器内。
运行 su local_main_judger -c '~/judge_client/judge_client update'
新版judge 使用python 3.9版本,需要安装3.9版本的python
根据错误提示,安装相关的东西。
c库 apt install libseccomp-dev
judge_client 280(243?) 行 execute(f'touch -a {pipes.quote(path)}')注释掉。
新版本的judge代码有不少优化。
好了,现在judge启动起来了,web也没问题了,提交一个代码试试。
总结:
根据记忆中的流程,和一些笔记整理的。后续在优化

