如何使用Emacs调试与Melpa的连接

4

我正在尝试在我的init文件中通过melpa添加软件包。 它曾经可以运行,但今天停止了。为了调试,我从“emacs -q”开始,并在我的scratch缓冲区中输入以下内容:

(require 'package)
(add-to-list 'package-archives
             '("melpa" . "https://melpa.org/packages/"))
(package-initialize)

前两行似乎可以正常工作。第三行会给我一个错误和堆栈跟踪:

(wrong-type-argument arrayp nil)
package--add-to-archive-contents(nil "melpa")
package-read-archive-contents()

这是我的设置有问题吗?我使用的是GNU Emacs 24.5.1,melpa的url是否有误?


从快速查看(我第一次)package.el代码,我的猜测是你的~/.emacs.d/elpa/archives/melpa/archive-contents文件可能已经损坏,而且它找不到一个元素的数组。 我认为可以安全地删除该文件,因为它只是一个本地缓存,会被重新建立。 - Greg Hendershott
看起来它解决了问题。谢谢!如果您将您的评论改为答案,我会接受它。 - sockmonk
很高兴听到这个消息。已添加回答。 - Greg Hendershott
1个回答

8
尽管我对此不太熟悉,但我快速浏览了package.el代码。 我的猜测是您的~/.emacs.d/elpa/archives/melpa/archive-contents文件已经"损坏"。因此,package--add-to-archive-contents未能从该文件中获得它期望获得的元素的array。 我认为archive-contents文件只是一个本地缓存。如果您删除它,它将会被重建,然后问题就解决了。

谢谢,这个方法很有效。我删除了gnu和melpa-stable目录并重新启动,它就好了。但我仍然不确定这个文件是怎么损坏的?因为我从来没有碰过那个文件。 - sqwale

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接