Quicklisp归档文件大小错误:如何正常加载cl-heap库?
解决Quicklisp加载cl-heap时的文件大小不匹配问题
这个问题本质是Quicklisp下载的cl-heap归档文件损坏或不完整了——系统校验文件大小的时候,发现实际下载的文件只有12,288字节,远小于预期的26,979字节,所以抛出了错误。下面给你几个逐步排查的解决方案:
方案1:清理损坏的缓存文件,重新下载
Quicklisp会把下载的包归档存在本地缓存里,先删掉那个损坏的文件再重试:
- 在Common Lisp环境里执行这段代码,直接删除缓存的损坏文件:
(delete-file (merge-pathnames "dists/quicklisp/archives/cl-heap-0.1.6.tgz" (user-homedir-pathname))) - 或者直接通过系统文件管理器/命令行删除:
- Linux/macOS终端:
rm ~/quicklisp/dists/quicklisp/archives/cl-heap-0.1.6.tgz - Windows命令提示符:
del %USERPROFILE%\quicklisp\dists\quicklisp\archives\cl-heap-0.1.6.tgz
- Linux/macOS终端:
- 之后重新运行
(quicklisp:quickload 'cl-heap),让Quicklisp重新拉取完整的归档文件。
方案2:手动替换正确的归档文件
如果自动下载还是出问题,你可以手动获取正确的文件:
- 找到cl-heap在Quicklisp官方仓库的对应版本归档(大小为26,979字节的
cl-heap-0.1.6.tgz) - 把下载好的文件放到Quicklisp的归档目录里,覆盖之前的损坏文件(路径就是方案1里提到的
~/quicklisp/dists/quicklisp/archives/或Windows对应的路径) - 再次运行
(quicklisp:quickload 'cl-heap),这次系统校验应该能通过。
方案3:更新Quicklisp的索引信息
有时候是因为本地的Quicklisp dist索引过时,导致校验信息不匹配:
- 在Lisp环境里运行:
(ql:update-dist "quicklisp") - 等待索引更新完成后,再尝试加载cl-heap。
方案4:手动安装源码到local-projects
如果上面的方法都不行,直接用源码安装是最稳妥的:
- 找到cl-heap的官方Git仓库,将源码克隆到你的Quicklisp
local-projects目录下(默认路径是~/quicklisp/local-projects/) - 克隆完成后,运行
(quicklisp:quickload 'cl-heap)——Quicklisp会优先加载本地项目目录里的包,跳过远程下载和校验步骤。
内容的提问来源于stack exchange,提问作者Venkon
相关产品推荐
相关产品推荐

