1

更新 2

我认为@faré 是对的,这是一个输出翻译问题。

所以我声明了环境变量ASDF_OUTPUT_TRANSLATIONS并将其设置为E:/. 现在(asdf:require-system "my-system")产生了一个不同的错误:Uneven number of components in source to destination mapping: "E:/"这使我想到了这个SO-topic。

不幸的是,他的解决方案对我不起作用。所以我尝试了另一个答案并设置ASDF_OUTPUT_TRANSLATIONS(:output-translations (t "E:/")). 现在我得到另一个错误:

Invalid source registry (:OUTPUT-TRANSLATIONS (T "E:/")).
One and only one of
    :INHERIT-CONFIGURATION or
    :IGNORE-INHERITED-CONFIGURATION
is required.
(will be skipped)

原始过帐

我有一个简单的系统定义,但无法让 ASDF 加载它。
(asdf-version 3.1.5, sbcl 1.3.12 (升级到 AMD64 1.3.18 ), slime 2.19, Windows 10)

到目前为止我尝试过的

按照 ASDF 手册:“4.1 配置 ASDF 以查找您的系统”

那里说:

对于 Windows 用户,从 ASDF 3.1.5 开始,从您的 %LOCALAPPDATA% 开始,这通常是 ~/AppData/Local/(但您可以在 CMD.EXE 终端 echo %LOCALAPPDATA% 中询问以确保)并在下面创建子路径 config/common-lisp/source-registry.conf.d/

这正是我所做的:

  1. 回声%LOCALAPPDATA%评估为C:\Users\my-username\AppData\Local
  2. 在下面我创建了子文件夹 config\common-lisp\source-registry.conf.d\ (总共:C:\Users\my-username\AppData\Local\config\common-lisp\source-registry.conf.d\

手册继续:

在那里创建一个具有您选择的任何名称但类型为 conf 的文件,例如50-luser-lisp.conf;在此文件中,添加以下行以告诉 ASDF 递归扫描 /home/luser/lisp/ 下的所有子目录以查找 .asd 文件: (:tree "/home/luser/lisp/") 就足够了。您可以将 /home/luser/lisp/ 替换为要安装源代码的任何位置。

source-registry.conf.d文件夹中,我创建了文件my.conf并将其放入(:tree "C:/Users/my-username/my-systems/")。此文件夹包含一个my-system.asd

奇怪的部分来了:

如果我现在输入(asdf:require-system "my-system")REPL,我会收到以下错误:
无法创建目录C:\Users\my-username\AppData\Local\common-lisp\sbcl-1.3.12-win-x86\C\Users\my-username\my-systems\C:\

所以问题不在于 ASDF 没有找到该文件,它确实找到了——但是(不管是什么原因)它试图创建一个非常奇怪的子文件夹层次结构,最终失败,因为最后它试图创建文件夹C:但 Windows 没有' t 允许包含冒号的文件夹名称。

另一种方法:(push path asdf:*central-registry*)

如果我尝试

> (push #P"C:/Users/my-username/my-systems/" asdf:*central-registry*)
(#P"C:/Users/my-username/my-systems/"
 #P"C:/Users/my-username/AppData/Roaming/quicklisp/quicklisp/")

> (asdf:require-system "my-system")

我得到完全相同的错误。

我不知道该怎么办。

更新

由于 ASDF 试图创建的奇怪路径的性质,我想也许我可以通过指定相对路径而不是绝对路径来绕过这个问题。所以我尝试
  (:tree "\\Users\\my-username\\my-systems")
了我的conf文件。还是同样的错误。

4

1 回答 1

2

咳咳。它看起来像一个输出翻译问题。

我现在没有 Windows 机器,但是我上次尝试时这一切都可以正常工作。

您现在可以设置一些临时输出翻译来使其正常工作吗?

于 2017-06-27T00:11:50.523 回答