关于 Emacs 编译时 GnuTLS 的作用

目录
不能顺利完成 Emacs 编译的几个原因
找不到 GnuTLS
若在当前环境下找不到 GnuTLS, 默认在对 Emacs 进行编译时会遇到错误。 解决方法是在 Emacs 编译前进行以下配置。
./configure --with-gnutls=no
缺少其他依赖项
如果除 GnuTLS 以外也缺少其他的依赖项, make
时同样会失败。
根据错误信息,在配置时添加不包括这些依赖项的选项。
写入权限受限
用户目录以外没有写入权限时也经常造成编译出错, 此时进行下面这样的配置。
bash configure --prefix=$HOME/.local --with-gif=no --with-gnutls=no
上面的例子 make
之后 Emacs 会被安装到 $HOME/.local
路径下。
由不完整安装带来的问题
由于在 Emacs 中打开 https
超链接时,
会调用提供 SSL、TLS、DTLS 协议支持的 GnuTLS,
在配置时排除掉 GnuTLS 安装的 Emacs 中只能打开 http
超链接。
这不仅安全性降低,同时功能性方面也很大地缩水。
安全性降低
例如,Emacs 在初始化时需要从一些在线源比如 Melpa.org 下载各种插件,
这时 Emacs 配置文件中的 https
链接均不能访问。
如果将配置文件中 https
链接全部替换为 http
链接是可以暂时解决问题的,
但安全性会有所降低。
功能性缩水
例如,使用 Emacs 插件 google-translate
实现翻译功能时,
即使将保存各种插件的 elpa 路径下所有与 google-translate
相关的 *.el
中出现的 https
改为 http
,
翻译服务中仍有部分功能需强制使用 https
,从而导致翻译异常。
这里顺便提一下,修改 *.el
中的配置后需删除此前已存在的 *.elc
以使修改生效。
安装 GnuTLS
为解决以上问题,最便捷的方法为安装 GnuTLS 至当前环境。 以 OpenSUSE 为例,执行以下语句安装 GnuTLS。
sudo zypper install gnutls
GnuTLS 安装完成后,重新配置 Emacs 编译选项时
去掉 --with-gnutls=no
项并完成编译和安装即可。
其它
错误信息
checking for library containing tputs... no
configure: error: The required function 'tputs' was not found in any library.
The following libraries were tried (in order):
libtinfo, libncurses, libterminfo, libcurses, libtermcap
Please try installing whichever of these libraries is most appropriate
for your system, together with its header files.
For example, a libncurses-dev(el) or similar package.
make: *** No targets specified and no makefile found. Stop.
make: *** No rule to make target 'install'. Stop.
解决方法
(以 OpenSUSE 为例)
sudo zypper install ncurses-devel