ошибка самоцветов в windows - "openpath: pathname too long" - PullRequest
4 голосов
/ 01 декабря 2011

Я недавно начал получать эту ошибку при запуске gems или bundler. Единственное, что я могу вспомнить, что я недавно изменил, это обновить мою версию git.

Я использую MINGW32 в качестве оболочки, и это прекрасно работает уже более года.

Я позаботился о том, чтобы git был в моем PATH, и теперь не уверен, что искать дальше.

Что бы я мог предпринять для решения этой проблемы?

Вот пример вывода, который я получаю. В этом примере показан гем heroku, но я получаю те же результаты при запуске bundle install

$ heroku console
openpath: pathname too long (ignored)
        Directory ""
        File "chcp"
openpath: pathname too long (ignored)
        Directory ""
        File "git"
c:/Ruby192/lib/ruby/gems/1.9.1/gems/heroku-2.14.0/lib/heroku/helpers.rb:111:in ``': No such file or directory -  git --version  (Errno::ENOENT)
        from c:/Ruby192/lib/ruby/gems/1.9.1/gems/heroku-2.14.0/lib/heroku/helpers.rb:111:in `has_git?'
        from c:/Ruby192/lib/ruby/gems/1.9.1/gems/heroku-2.14.0/lib/heroku/helpers.rb:116:in `git'
        from c:/Ruby192/lib/ruby/gems/1.9.1/gems/heroku-2.14.0/lib/heroku/command/base.rb:192:in `git_remotes'
        from c:/Ruby192/lib/ruby/gems/1.9.1/gems/heroku-2.14.0/lib/heroku/command/base.rb:170:in `extract_app_in_dir'
        from c:/Ruby192/lib/ruby/gems/1.9.1/gems/heroku-2.14.0/lib/heroku/command/base.rb:162:in `extract_app'
        from c:/Ruby192/lib/ruby/gems/1.9.1/gems/heroku-2.14.0/lib/heroku/command/run.rb:72:in `console'
        from c:/Ruby192/lib/ruby/gems/1.9.1/gems/heroku-2.14.0/lib/heroku/command.rb:114:in `run'
        from c:/Ruby192/lib/ruby/gems/1.9.1/gems/heroku-2.14.0/bin/heroku:14:in `<top (required)>'
        from c:/Ruby192/bin/heroku:19:in `load'
        from c:/Ruby192/bin/heroku:19:in `<main>'

а вот строка 111 в файле helpers.rb, ссылка на которую приведена выше.

def has_git?
  %x{ git --version } #this is 111
  $?.success?
end

1 Ответ

4 голосов
/ 06 января 2012

Это сообщение об ошибке исходит из файла dln_find.c в Ruby, который выдает эту ошибку, когда пытается создать в системе путь, длина которого превышает значение MAXPATHLEN.

В соответствии с этой ссылкой MSDN максимальная длина пути для ряда функций в Windows API составляет всего 248 символов - таким образом, я бы предположил, что MAXPATHLEN определено как 248 в Ruby-forWindows-источники.(С другой стороны, источники dln_find.c определяют его как 1024, если он не определен иначе.)

Существует несколько способов решить эту проблему в программе, если вы были программистом, ноРешение на уровне пользователя, вероятно, заключается в том, что вам нужно использовать каталог с более коротким именем.

(Итак, какой каталог должен быть короче? Ну, есть подсказка, что сообщение об ошибке говорит вам, какой файл он пытаетсядля загрузки, то есть chcp и git. Возможно, ваше обновление git изменило имя своего каталога на что-то слишком длинное, и вам нужно переместить его куда-нибудь с более коротким именем? Или ... похоже, этот код поиска может бытьперебирая каждую запись в вашей переменной окружения PATH, проверяя ее и выдавая "слишком длинную" ошибку, если какая-либо конкретная возможность слишком длинная - возможно, ваш PATH поврежден или имеет новую очень длинную запись?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...