Win10: ASDF не может загрузить систему (ошибка ASDF_OUTPUT_TRANSLATION)

Обновление 2

Я думаю, что @ faré прав, это проблема перевода вывода.

Итак, я объявил переменную среды ASDF_OUTPUT_TRANSLATIONS и установите его E:/, Сейчас (asdf:require-system "my-system") выдает другую ошибку: Uneven number of components in source to destination mapping: "E:/" что привело меня к этой 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-версия 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 echo %LOCALAPPDATA%, чтобы убедиться) и под ним создайте конфигурация подпути /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 не допускает имена, содержащие двоеточие.

Другой подход: (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. Все та же ошибка.

1 ответ

Гм. Это похоже на проблему вывода-перевода.

У меня сейчас нет машины с Windows, но все это работало в прошлый раз, когда я пытался.

Можете ли вы на данный момент настроить некоторые специальные выходные-переводы, чтобы они работали?

Другие вопросы по тегам