如果你喜欢把玩各种 Emacs 插件,会不会觉得在线安装插件特别的慢,而且时时刻刻都得保持网络在线(虽然这也不是什么大问题),如果 Emacs 版本比较低的话还得解决 TLS/SSL 的连接问题。
既然这样,为什么不把 Emacs 的插件库同步到本地上来呢?
只需要一条命令就可以了
rsync -avz rsync://elpa.emacs-china.org/elpa /media/emacs_plugins
然后再修改一下 Emacs 配置中的 package-archives 变量就可以了
(setq package-archives
'(("melpa-cn" . "/media/emacs_plugins/melpa/")
("org-cn" . "/media/emacs_plugins/org/")
("gnu-cn" . "/media/emacs_plugins/gnu/")
("marmalade-cn" . "/media/emacs_plugins//marmalade/")))
如果你用的是 spacemancs,则是修改 configuration-layer--elpa-archives 变量
(setq configuration-layer--elpa-archives
'(("melpa-cn" . "/media/emacs_plugins/melpa/")
("org-cn" . "/media/emacs_plugins/org/")
("gnu-cn" . "/media/emacs_plugins/gnu/")
("marmalade-cn" . "/media/emacs_plugins//marmalade/")))
这里要注意,仓库地址必须使用绝对路径。如果觉得手工同步插件库太麻烦,也可以写个 timer 来让系统帮你自动同步:
在 /etc/systemd/system/ 目录下创建一个 rsync_emacs_china.service 文件
[Unit]
Description=Sync emacs-china elpa repos with rsync
Documentation=http://elpa.emacs-china.org/
After=network.target
[Service]
Type=simple
TimeoutStartSec=infinity
User=root
Group=root
WorkingDirectory=/root
ExecStartPre=/usr/bin/mkdir -p /media/emacs_plugins
ExecStart=/usr/bin/rsync -avz rsync://elpa.emacs-china.org/elpa /media/emacs_plugins
然后在 /etc/systemd/system/ 目录下创建一个 rsync_emacs_china.timer 文件
[Unit]
Description=Sync emacs-china elpa repos with rsync every 30 mins
Documentation=http://elpa.emacs-china.org/
[Timer]
OnBootSec=15min
OnUnitInactiveSec=30min
Unit=rsync_emacs_china.service
[Install]
WantedBy=multi-user.target
这样系统启动15分钟后,系统会自动开始同步插件库,此后每30分钟同步一次。

