关于 Emacs 编译时 GnuTLS 的作用

图片来源: Emacs logo

目录

不能顺利完成 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

编辑本页

Xin Li
Xin Li
讲师

主要研究方向为机器学习、深度学习与人工智能在各个领域的应用,特长为针对非均匀数据及偏移数据的优先采样及学习算法。了解更多

comments powered by Disqus
下一页
上一页