Puppet-библиотекарь, Windows и ошибка: нет такого файла или каталога
В Windows 2012 Server Edition, когда я запускаю установку puppet-librarian, я получаю сообщение об ошибке ниже.
Error: No such file or directory - C:/Users/Administrator/infrastructure/.tmp/librarian/cache/source/puppet/forge/forgeapi_puppetlabs_com/opentable-windowsfeature/999.999.999/cache/tmp-unpacker20150907-1308-19kvk70/opentable-windowsfeature- 999.999.999/spec/acceptance/nodesets/windows-2008R2-serverstandard-x64.yml Error: Try 'puppet help module install' for usage
Я думаю, что это общая проблема Windows, и мне потребовалось некоторое время, чтобы выяснить ошибку. Windows имеет максимальную длину 255 символов для абсолютного имени файла. Библиотекарь Puppet не дает хорошего сообщения об ошибке, чтобы указать, что это - основная причина. Максимальная длина имени файла в NTFS (Windows XP и Windows Vista)?,
2 ответа
Вероятно, проблема с длинными путями к файлам связана с тем, что puppet-библиотекарь использует PMT (Puppet Module Tool) для установки модуля. Это усугубляется тем, что библиотекарь начинает с этого пути C:/Users/Administrator/infrastructure/.tmp/librarian/cache/source/puppet/forge/forgeapi_puppetlabs_com/opentable-windowsfeature/999.999.999/
, который уже давно, а потом PMT добавляет cache/tmp-unpacker20150907-1308-19kvk70/opentable-windowsfeature-999.999.999
на путь, который раздражает длину еще больше.
PMT имеет проблемы с длинными путями. Мы исправим это, добавив в него поддержку LFN (длинное имя файла) в следующем выпуске. Проголосуйте и посмотрите PUP-4866, чтобы узнать, когда это будет исправлено.
Похоже, что puppet-библиотекарь также необходимо исправить из-за следующего вызова:
command.push(*[path.to_s, "--module_repository", module_repository, "--modulepath", path.to_s, "--module_working_dir", path.to_s, "--ignore-dependencies", target])
Мое решение состояло в том, чтобы переместить корневой каталог из "C:/Users/Administrator/ Infrastructure" в "C: / Infrastructure".