Win10:ASDF无法加载系统(ASDF_OUTPUT_TRANSLATION错误)

时间:2017-06-24 22:33:56

标签: windows-10 common-lisp sbcl pathname asdf

更新2

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

所以我宣布了环境变量ASDF_OUTPUT_TRANSLATIONS并将其设置为E:/。现在(asdf:require-system "my-system")产生了一个不同的错误:Uneven number of components in source to destination mapping: "E:/"导致我this SO主题。

不幸的是,他的解决方案对我不起作用。所以我尝试了另一个答案并将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(升级到1.3.18 AMD64 ),史莱姆2.19,Windows 10)

到目前为止我尝试了什么

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

它说:

  

对于Windows用户,从ASDF 3.1.5开始,从您的用户开始   %LOCALAPPDATA%,通常为〜/ AppData / Local /(但您可以询问   一个CMD.EXE终端回显%LOCALAPPDATA%以确保)和下面   创建一个子路径config / common-lisp / source-registry.conf.d /

这正是我所做的:

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

      

    创建一个文件,其中包含您选择的任何名称,但类型为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

    这是奇怪的部分:

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

    所以问题不在于ASDF找不到文件,它确实 - 但是(无论什么原因)它试图创建一个非常奇怪的子文件夹层次结构,最终失败,因为最后它尝试创建文件夹{ {1}}但Windows不允许包含冒号的foldernames。

    另一种方法:C:

    如果我尝试

    (push path asdf:*central-registry*)

    我得到完全相同的错误。

    我不知道该怎么做。

    更新

    由于ASDF尝试创建的奇怪路径的性质,我想也许我可以通过指定相对路径而不是绝对路径来绕过问题。 所以我试过了 > (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")
    在我的conf文件中。仍然是同样的错误。

1 个答案:

答案 0 :(得分:2)

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

我现在没有Windows机器,但是上次尝试时这都是常用的。

您现在可以设置一些临时输出翻译,以使其有效吗?