CentOS 7.3 从零搭建 Anki 新版同步服务器

准备 Python3

安装repo管理器

sudo yum install yum-utils

为Python3构建环境

sudo yum-builddep python

寻找最新的稳定版本

地址:https://www.python.org/ftp/python/
我选择了 3.7 版本。

安装 wget 下载工具

sudo yum install wget

下载 python3 的源码

mkdir tmp && cd $_ && sudo wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz

下载速度惨不忍睹,挂上代理

我的 CentOS 安装在了虚拟机上。所以我直接这么写:

export http_proxy=192.168.0.100:1080
export https_proxy=192.168.0.100:1080
export use_proxy=yes

记得ss要【允许其它设备连入】,不然就会访问拒绝。挂上代理之后,速度就快多了。也可以用 aria2c 。甚至可以用迅雷下载好,通过文件共享传输到虚拟机里。VMware 可参考:[[VMware]主机与虚拟机共享文件](https://zhuanlan.zhihu.com/p/43920548))。VBOX 可参考:mac下virtualbox设置共享文件夹# virtualbox ubuntu系统挂载window上的目录。如果要省事的化,直接用 SFTP 也可以。

wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz

解压,编译 Python3

tar xf Python-3.7.3.tar.xz
cd Python-3.7.3
./configure
make
sudo make install

顺利的话,现在执行 python3 就不会报错。同时还捆绑了个 pip3

安装 git

sudo yum install git

安装 ankisyncd

mkdir anki && cd $_ &&git clone https://github.com/tsudoko/anki-sync-server.git
cd anki-sync-server
git submodule update --init
cd anki-bundled/
sudo pip3 install -r requirements.txt

这里我就比较不幸了。我发现我用普通账户可以执行 pip3 但是用 sudo 就不行。解决方式如下:

[[email protected] anki-bundled]$ whereis pip3
pip3: /usr/local/bin/pip3 /usr/local/bin/pip3.7
[[email protected] anki-bundled]$ sudo ln -s /usr/local/bin/pip3 /usr/bin/pip3

现在就可以执行下列命令了:

sudo pip3 install -r requirements.txt

果然,我们遇到了曾几何时见过的经典错误:

 Running setup.py install for pyaudio ... error

我安装十次,十次要出这个错,不管是 Ubuntu 还是 CentOS。解决起来也简单,运行:

sudo yum install portaudio-devel

这次并不顺利,又有意外:

No package portaudio-devel available.
Error: Nothing to do

不要着急,解决方法也是相当经典:添加 EPEL 源。

sudo yum install epel-release
sudo vi /etc/yum.repos.d/epel.repo
# 替换为清华大学的镜像
:%s#download.fedoraproject.org/pub#/mirrors.tuna.tsinghua.edu.cn
sudo yum install portaudio-devel

(这里相当于添加了个源,你也可以直接下载所需的包:# portaudio-devel-19-16.el7.x86_64.rpm)。

(复读)现在就可以执行下列命令了:

sudo pip3 install -r requirements.txt

接下来,执行

sudo pip3 install webob

创建用户

cd ..
python3 ./ankisyncctl.py adduser pluveto

后台运行

安装screensudo yum install screen

新建一个screen会话:screen -S anki

执行 python3 -m ankisyncd

Ctrl+A,D 退出会话(该会话仍会在后台运行)

若想恢复会话:screen -r #恢复上一次离线的会话

screen -x [会话id]而会话id可通过screen -ls查看

客户端连接

手机上我就不说了,很简单。(提示:/msync)

电脑上复杂一些:

在 Addons21 文件夹写入插件,从而接管Anki的同步服务器设置:

Anki2\addons21\custom-sync-server\__init__.py

import anki.sync, anki.hooks, aqt
addr = 'http://45.78.51.108:27701/'
anki.sync.SYNC_BASE = "%s" + addr

def resetHostNum():
    aqt.mw.pm.profile['hostNum'] = None
    
anki.hooks.addHook("profileLoaded", resetHostNum)

此致。

Written with StackEdit.

发表留言

本站启用了垃圾评论检测插件,如果误删请联系我~