如何在Windows上为Emacs 25.1安装GnuTLS?


19

我刚刚将Windows 10计算机上的Emacs从24.5升级到25.1。对于Emacs 24.5,我正确设置了GnuTLS,对于25.1,我做了我想起的事情:

  1. GNU Emacs网站的下载页面获得了预构建的Emacs二进制文件。我使用的是32位Windows,因此获得了i686的i686版本。

  2. ezwinports获得了GnuTLS的副本并将zip文件提取到与Emacs相同的目录中-gnutls zip的组织方式意味着,gnutls的dll和exe都以与Emacs exe相同的目录结尾。(这次我获得的版本是3.3.11;我不记得当我拥有24.5版本的Emacs时所使用的GnuTLS版本。)

这次没有用。gnutls-available-p返回nil,包管理器只能连接到http存储库,而不能连接到https存储库,eww也不能处理https。

如何为Emacs 25.1设置GnuTLS?我是否记得24.5所做的事情?也许GNU Emacs网站上的二进制文件是在没有GnuTLS的情况下编译的,而对于24.5,我实际上是从其他地方获得的二进制文件...


我删除了原始答案,因为它没有解决您的Emacs版本。在你的问题,你也许可以阐明你复制文件到./bin
亨宁-起用莫妮卡

@henning:这就是句子“ gnutls zip的组织方式”的意思,这意味着传达gnutls的dll和exe都与Emacs exe存放在同一目录中,我将尝试对其改写明天以更清晰的方式。
Omar

它看起来更像是Emacs 25.1上的问题,而不是gnutls本身,因为今天我下载了Emacs 25.1并遇到了同样的问题。Emacs 24.1使用以下选项调用gnutls:--insecure -p 443 --protocols ssl3,而25.1使用以下选项调用:-x509cafile nil -p443。这可能与这些不同的调用选项有关。
罗马里奥

2
我没有手头的细节,但是我早些时候对此进行了简要研究。我认为Emacs 25.1期望使用libgnutls-30.dll,但是目前ezwinports仅打包了libgnutls-28.dll。
Stuart Hickinbottom

Answers:


29

@StuartHickinbottom解释了我做错了什么:libgnutls-28.dll当Emacs 25.1需要更新且不兼容的时使用libgnutls-30.dll。然后就是寻找二进制libgnutls-30.dll库和其他必需库的问题。幸运的是,Phillip Lord已经编译了所有GnuTLS库和依赖项的Windows版本,以及您可能需要Emacs的许多其他库!它们在此处可用:emacs-25-i686-deps.zip如果使用32位Windows,则获取;emacs-25-x86_64-deps.zip如果使用64位,则获取;如果使用32位Windows,则获取。然后解压缩Emacs安装的根文件夹(以便bin将zip文件的bin文件夹解压缩到Emacs安装的文件夹等)。

编辑:我想出了如何找出Emacs期望哪个版本的库:查找变量dynamic-library-alist


1
感谢您的编辑-我从不知道该变量,但是它使跟踪此类事件变得更加容易。
Stuart Hickinbottom

实际上,我没有编译二进制文件,只是压缩了它们。他们都应该工作。而且我需要改进自述文件。它太复杂了。
菲尔勋爵

然后,我想我的意思是非编译意义上的“编译”,它汇集了来自各种来源的东西列表,@ PhilLord :)
Omar

确认将为Emacs 25.2工作
洛伦佐·加蒂

1
@feklee对于Emacs-26,只需解压缩拉链就可以了-至少这是理论。是的,同意,自述文件需要更新。目前没有人。我是垃圾。
Phil Lord
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.