更新2
我认为@faré是对的,这是一个输出翻译问题。
因此,我声明了环境变量ASDF_OUTPUT_TRANSLATIONS并将其设置为E:/。现在,(asdf:require-system "my-system")产生了一个不同的错误:Uneven number of components in source to destination mapping: "E:/",它导致了this这样的主题。
不幸的是,他的解决方案对我无效。因此,我尝试了另一个答案,并将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加载它。
(升级到1.3.18 AMD64,sbcl 2.19,Windows 10)
到目前为止我尝试过的
遵循ASDF手册:"4.1配置ASDF以查找您的系统“
上面写着:
对于Windows用户,从ASDF3.1.5开始,从%LOCALAPPDATA%开始,它通常是~/AppData/Local/ (但您可以在CMD.EXE终端echo %LOCALAPPDATA%中确定),并在下面创建一个子路径配置/公共-lisp/source-Regiy.conf.d/
我就是这么做的:
%LOCALAPPDATA%,其计算值为C:\Users\my-username\AppData\LocalC:\Users\my-username\AppData\Local\config\common-lisp\source-registry.conf.d\ )该手册继续说:
这里创建一个具有您选择的任意名称的文件,但是使用conf类型,例如
50-luser-lisp.conf;在这个文件中,添加下面一行,告诉.asd递归扫描/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:,但是它不允许包含冒号的文件夹名。
另一种方法:(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")
在我的文件里。还是同样的错误。
发布于 2017-06-27 00:11:50
啊哈。看上去像是输出翻译问题。
我现在没有Windows机器,但我上次尝试的时候,这一切都是正常的。
你能为现在设置一些特别的输出翻译吗?
https://stackoverflow.com/questions/44741544
复制相似问题