list-packages 无法显示所有包?

事情的起因是我想要使用配合lsp-mode使用flycheck,通过list-packages安装了flycheck之后,并不能正常工作。查了查发现安装的flycheck来自melpa-stable源,版本已经是几年前的了,需要安装最新版的。尽管我配置了melpa源,但是在*Packages*buffer中并不能找到flycheck包,尽管melpa源中的确包含较新的flycheck包 flycheck - MELPA

于是我猜测难道是网络原因导致部分包无法显示?我不懂原理,只是胡乱猜测,于是通过rsync拷贝了一份melpa源到我本地,并且配置Emacs使用我本地的源(通过设置package-archives变量)

重启Emacs后,list-packages显示出了一部分可用的包,并且也可以正常安装,只是显示出的包的数量远远少于本地源中的包的数量,当然也没有我想要安装的flycheck。经过确认,本地源里的确有flycheck包相关的文件。值得注意的是,显示出的包大部分都是theme类的,但是也有racket-mode这样的包。

这个情况我在Windows和Linux上都有复现,Windows使用的是官网上提供的预编译版本,Linux上使用的是我自己编译的版本,但是没有对代码做任何修改。

有没有朋友知道如何解决这个问题?

找到了问题的原因…… 之前我的配置是这样的

(setq package-archives '(("melpa" . "~/emacs_packages/melpa/")))

也许Emacs对melpa这个字符串做了什么特别处理,尽管我已经设置了本地源的路径,可是Emacs却并没有使用。

当我使用

(setq package-archives '(("local" . "~/emacs_packages/melpa/")))

时,就可以在*Packages*buffer里面看到所有的包了……

1 个赞