Windows 10 Win10:ASDF can';t加载系统(ASDF_输出_转换错误) 更新2

Windows 10 Win10:ASDF can';t加载系统(ASDF_输出_转换错误) 更新2,windows-10,common-lisp,sbcl,pathname,asdf,Windows 10,Common Lisp,Sbcl,Pathname,Asdf,我认为@faré是对的,这是一个输出翻译问题 因此,我声明了环境变量ASDF\u OUTPUT\u TRANSLATIONS,并将其设置为E://。现在(asdf:require-system“my-system”)产生了一个不同的错误:源到目标映射中的组件数量不均匀:“E:/”,这让我想到了这个主题。 不幸的是,他的解决方案对我不起作用。因此我尝试了另一个答案,并将ASDF\u OUTPUT\u TRANSLATIONS设置为(:OUTPUT TRANSLATIONS(t“E:/”))。现在我

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

因此,我声明了环境变量
ASDF\u OUTPUT\u TRANSLATIONS
,并将其设置为
E://
。现在
(asdf:require-system“my-system”)
产生了一个不同的错误:
源到目标映射中的组件数量不均匀:“E:/”
,这让我想到了这个主题。

不幸的是,他的解决方案对我不起作用。因此我尝试了另一个答案,并将
ASDF\u OUTPUT\u 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版本3.1.5,sbcl 1.3.12(升级至1.3.18 AMD64),slime 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/

我就是这么做的:

  • 回显
    %LOCALAPPDATA%
    ,其计算结果为
    C:\Users\my username\AppData\Local
  • 在下面,我创建了子文件夹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/for.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找不到文件,而是它找到了——但是(不管是什么原因)它试图创建一个非常奇怪的子文件夹层次结构,最终失败了,因为最后它试图创建文件夹
    C:
    ,但Windows不允许文件夹名包含冒号

    另一种方法:
    (推送路径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")
    
    我得到了完全相同的错误

    我不知道该怎么办

    更新 由于ASDF试图创建的奇怪路径的性质,我想我可以通过指定相对路径而不是绝对路径来绕过这个问题。 所以我试着
      <代码>(:tree“\\Users\\my username\\my systems”)

    在我的conf文件中。仍然是相同的错误。

    Ahem。看起来像是输出翻译问题

    我现在没有Windows电脑,但上次我试的时候,这些都能用


    您现在可以设置一些特别的输出翻译吗?

    另外,您可以确认最新的ASDF 3.2.1和最新的SBCL 1.3.18仍然存在问题吗?最后,ASDF-devel邮件列表是寻求ASDF帮助的更好地方。我卸载了SBCL 1.3.12并安装了1.3.18。我从头开始设置了emacs。S直到相同的错误,但我仍然有ASDF 3.1.5。升级ASDF的最佳方法是什么?(我非常感谢您的帮助。)好的,将ASDF更新为3.2.1。仍然是相同的错误。尽管如此,感谢您的帮助。我不明白c:是如何在文件名位置结束的。ASDF似乎试图为FASL文件创建位置。该位置从AppData文件夹开始,为了区分不同的LISP和源,它重新创建了到源的完整路径。现在,我在我的安装中,它成功地从“C:”中删除了冒号。为了避免这个问题(如果可以接受的话):QUICKLISP应该有帮助。你说的“QUICKLISP应该有帮助”是什么意思?我可以让QUICKLISP加载我的asd文件吗?(我已经安装了QUICKLISP)是的,将系统所在的目录放入
    本地项目中
    ,运行
    (ql:注册本地系统)
    然后
    (ql:quickload:your system)
    。好吧,这很奇怪。它说
    加载“我的系统”
    ,然后又出现了同样的错误。你能通过QUICKLISP加载其他系统吗?ASDF真的很奇怪。。。