raco 设置:不存在用于收集的目录

Ben*_*man 5 racket

当我尝试通过 raco 安装软件包时,收到一条奇怪的错误消息:

raco setup: directory: #<path:/Users/ben/code/racket/benchmark/tr-pfds/pfds> does not exist for collection: "pfds"
Run Code Online (Sandbox Code Playgroud)

更奇怪的是,运行raco pkg show并没有显示关于这个“pfds”集合的任何信息:

Installation-wide:
 Package              Checksum                                     Source
 main-distribution    f07e2d4bf2708c1085be38eca18aa9eb6755e547    (catalog main-distribution)
 racket-lib           41c7b3221006758c5a840a18dcc0d265632f14c2    (catalog racket-lib)
 [178 auto-installed packages not shown]
User-specific for installation "6.1":
 Package            Checksum                                    Source
 benchmark          1237b50804bb42bd242ba7b3eb6e2b98794b40ee    (catalog benchmark)
 feature-profile    109e89701839a6d2fed9d1713aef8d21cc8b54d4    (catalog feature-profile)
 quickcheck         1afac87825c5da8b35b327f5df3f1f9e1bf3cb9d    (catalog quickcheck)
 rackunit-chk       9c6e9c346c0e83bd3bb8dd16e321a2fa3e02b42e    (catalog rackunit-chk)
Run Code Online (Sandbox Code Playgroud)

我尝试的另一件事是删除“pfds”集合,但这也不顺利:

raco6.1 pkg remove pfds
Removing pfds
raco6.1 pkg remove: package not currently installed
  package: pfds
  current scope: user
Run Code Online (Sandbox Code Playgroud)

但回想起来,这个错误对我来说很有意义,因为/Users/ben/code/racket/benchmark/tr-pfds/pfds我的机器上不存在该目录。我几周前删除了它。

有谁知道发生了什么?

Lei*_*sen 7

raco link过去用过吗?如果您raco link编辑了一个已删除的目录,有时您会看到此错误消息。

您可以尝试以下三件事:

  1. 跑步raco link --repair。理想情况下,这应该通过删除所有无效链接来修复您的安装。

  2. 运行raco link -r pkfds,这应该会删除您的pfds链接。

  3. 检查您的links.rktd文件,该文件可以在以下位置找到:

    • (Linux)~/.racket/<version>/links.rktd
    • (操作系统)~/Library/Racket/<version>/links.rktd
    • (视窗)C:\Users\<username>\AppData\Roaming\Racket\<version>\links.rktd

pfds在该文件中,您可能会看到导致问题的链接。

删除链接后,raco setup应该可以再次正常工作。

(作为附录,值得注意的是,raco link有一个来自 Racket 内部的 API 调用。)