Make e 2 не удается найти указанный файл
Обновлено: 05.07.2024
Я использую makefile в Windows, чтобы выталкивать некоторые файлы на Unix-сервере (здесь текстовый файл "blob.txt" в той же папке моего make файла). Мой скрипт makefile:
Я запустил командную строку, зайдите в папку, где есть blob.txt и makefile, и введите:
Это работает. Я действительно удивляюсь, почему.
ОТВЕТЫ
Ответ 1
почти наверняка жалуется, что Windows не может найти pscp .
Это почти наверняка, потому что значение %PATH% (или что-то другое) отличается, когда make порождает оболочку/консоль, а затем, когда вы открываете ее вручную.
Сравните значения, чтобы подтвердить это. Тогда либо использовать полный путь к pscp в рецепте Makefile или убедитесь, что значение переменной PATH устанавливается правильно для make использования.
Ответ 2
В моем случае у меня был git\bin в моем %PATH% который содержит bash.exe и sh.exe. Удаление %GIT_HOME%\bin из PATH работало для меня
Ответ 3
@user3869623 решение работает для меня. Я хотел бы поделиться некоторыми деталями, чтобы закончить картину.
Мой файл makefile находится ниже цели:
Когда я запускаю make clean , я вижу эту ошибку:
Поскольку он говорит, что что-то пошло не так с echo , поэтому я изменяю свою цель makefile ниже:
На этот раз, make clean дает мне эту ошибку:
Я удивлен, увидев bash здесь, так как я работаю в командной строке Windows.
Затем я проверил свой %PATH% , я вижу эту запись:
Там bash.exe и sh.exe в этом пути. Поэтому я удалил эту запись, и теперь она отлично работает.
НО Я ЕЩЕ НЕ ЗНАЮ, ПОЧЕМУ БЫТЬ В ЭТО?
ДОБАВИТЬ 1
Что касается того, почему C:\DevTools\Git\bin появляется в моем %PATH% , потому что я использую Sublime, и он всегда запрашивает у меня двоичные файлы Git:
Ответ 4
Я знаю, что это старый вопрос, на который был дан ответ, но я подумал, что я и мой опыт для тех, кто все еще сталкивается с этим. Я получал ту же загадочную ошибку полковника Beauvel (хотя с командой Windows MOVE, а не pscp):
Наш CI работал с тем же Makefile и отлично работал. Оказывается, CI использовал mingw32-make, и я использовал GNU make. Деинсталляция GNU make (который был установлен как часть несвязанного пакетного пакета) и aliasing mingw32-make для "make" работает отлично.
Ответ 5
Чтобы построить пользователь 3869623 ответ.
В моем случае у меня был git\bin в моем% PATH%, который содержит bash.exe и sh.exe.. Удаление% GIT_HOME%\bin из PATH мне помогло
Хотя эта рекомендация может позволить запустить make , она, вероятно, вызовет проблемы для git, особенно если make файл устанавливает программное обеспечение из репозитория git.
Лучшее решение - просто изменить %GIT_HOME%\bin на %GIT_HOME%\cmd
Ответ 6
Я не хотел удалять папку GIT bin из переменной PATH (я использую машину Windows), поскольку я использую ее довольно часто. Поэтому я искал работу. И вот он:
Добавьте <git-installation-directory>/usr/bin в свою переменную PATH. Это в основном добавляет остальные Linux-подобные команды, которые поставляются с "GIT bash" в вашу среду. После применения этого, мои make файлы снова запускались нормально. :)
Если вам интересно, какая оболочка вызывается make, просто добавьте $(info $(SHELL)) в начало вашего файла makefile. Путь/имя вызываемой оболочки печатается на консоль, как только вы запускаете make.
Ответ 7
Для тех, кто пытался удалить папку git bin из PATH и это не сработало для них, найдите переменные PATH для любых путей, содержащих bash.exe .
В моем случае я нашел переменную, C:\cygwin64\bin папкой bin cygwin C:\cygwin64\bin , удалив ее, и она сработала.
Ответ 8
Я знаю, что я супер опоздал на вечеринку, но я должен сказать, что ответ рикардо Алехоса В дополнение к Etan Reisner это отличное решение, если не лучшее решение здесь.
Я использую makefile в Windows, чтобы выталкивать некоторые файлы на Unix-сервере (здесь текстовый файл "blob.txt" в той же папке моего make файла). Мой скрипт makefile:
Я запустил командную строку, зайдите в папку, где есть blob.txt и makefile, и введите:
Это работает. Я действительно удивляюсь, почему.
почти наверняка жалуется, что Windows не может найти pscp .
Это почти наверняка, потому что значение %PATH% (или что-то другое) отличается, когда make порождает оболочку/консоль, а затем, когда вы открываете ее вручную.
Сравните значения, чтобы подтвердить это. Тогда либо использовать полный путь к pscp в рецепте Makefile или убедитесь, что значение переменной PATH устанавливается правильно для make использования.
@user3869623 решение работает для меня. Я хотел бы поделиться некоторыми деталями, чтобы закончить картину.
Мой файл makefile находится ниже цели:
Когда я запускаю make clean , я вижу эту ошибку:
Поскольку он говорит, что что-то пошло не так с echo , поэтому я изменяю свою цель makefile ниже:
На этот раз, make clean дает мне эту ошибку:
Я удивлен, увидев bash здесь, так как я работаю в командной строке Windows.
Затем я проверил свой %PATH% , я вижу эту запись:
Там bash.exe и sh.exe в этом пути. Поэтому я удалил эту запись, и теперь она отлично работает.
НО Я ЕЩЕ НЕ ЗНАЮ, ПОЧЕМУ БЫТЬ В ЭТО?
ДОБАВИТЬ 1
Что касается того, почему C:\DevTools\Git\bin появляется в моем %PATH% , потому что я использую Sublime, и он всегда запрашивает у меня двоичные файлы Git:
В моем случае у меня был git\bin в моем %PATH% который содержит bash.exe и sh.exe. Удаление %GIT_HOME%\bin из PATH работало для меня
ответил(а) 2016-03-10T23:53:00+03:00 5 лет, 8 месяцев назадЯ знаю, что это старый вопрос, на который был дан ответ, но я подумал, что я и мой опыт для тех, кто все еще сталкивается с этим. Я получал ту же загадочную ошибку полковника Beauvel (хотя с командой Windows MOVE, а не pscp):
Наш CI работал с тем же Makefile и отлично работал. Оказывается, CI использовал mingw32-make, и я использовал GNU make. Деинсталляция GNU make (который был установлен как часть несвязанного пакетного пакета) и aliasing mingw32-make для "make" работает отлично.
Для тех, кто пытался удалить папку git bin из PATH и это не сработало для них, найдите переменные PATH для любых путей, содержащих bash.exe .
В моем случае я нашел переменную, C:\cygwin64\bin папкой bin cygwin C:\cygwin64\bin , удалив ее, и она сработала.
Я не хотел удалять папку GIT bin из переменной PATH (я использую машину Windows), поскольку я использую ее довольно часто. Поэтому я искал работу. И вот он:
Добавьте <git-installation-directory>/usr/bin в свою переменную PATH. Это в основном добавляет остальные Linux-подобные команды, которые поставляются с "GIT bash" в вашу среду. После применения этого, мои make файлы снова запускались нормально. :)
Если вам интересно, какая оболочка вызывается make, просто добавьте $(info $(SHELL)) в начало вашего файла makefile. Путь/имя вызываемой оболочки печатается на консоль, как только вы запускаете make.
Я запускаю командную строку, захожу в папку, в которой находятся blob.txt и make-файл, и набираю:
Это работает . Мне действительно интересно, почему.
- 2 Проверьте значение (или эквивалентное) при запуске из и при запуске вручную. Держу пари, они отличаются включением пути до .
- Это совершенно верно и решает вопрос! Вы можете опубликовать это как ответ, если хотите!
- Это только начало происходить и со мной. Процесс make больше не может "видеть" определенные файлы в моей системе. Я установил GNU make с Chocolatey, и он работал безупречно в течение многих лет. Совершенно неожиданно сегодня такие файлы, как bash.exe и wsl.exe, скрыты от процесса make.
почти наверняка жалуется, что Windows не может найти .
Это почти наверняка потому, что значение (или что-то еще) равно другой когда make создает оболочку / консоль, а затем когда вы открываете ее вручную.
Сравните значения, чтобы подтвердить это. Затем либо используйте полный путь к в рецепте make-файла, либо убедитесь, что значение правильно установлено для использования .
- arf Прошу прощения, но на самом деле это не решает ошибку . Я создал команду в моем make-файле, и она содержит путь к папке, в которой находится pscp .
- 1 расширяет значение переменной make . Попробуйте вместо этого использовать переменную пути оболочки. или или что угодно.
В моем случае в моем был git \ bin, содержащий bash.exe и sh.exe.
Удаление из сработало для меня.
Я не хотел удалять папку bin GIT из переменной PATH (я использую машину с Windows), так как я использую ее довольно часто. Итак, я искал обходной путь, и вот он:
Добавьте / usr / bin в вашу переменную PATH. Это в основном добавляет в вашу среду остальные команды, подобные Linux, которые поставляются с "GIT bash". После этого мои make-файлы снова работали нормально. :)
Если вам интересно, какая оболочка запускается программой make, просто добавьте в начало вашего make-файла. Путь / имя вызываемой оболочки выводится на консоль, как только вы запускаете make.
- Я знаю, что очень опаздываю на вечеринку, но я должен сказать, что ответ Рикардо Алехоса в дополнение к ответу Этана Рейснера - отличное решение, если не лучшее решение здесь. Это связано с тем, что если вы используете bash.exe или какую-либо версию bash через материал git, вам действительно следует сохранить все эти программы (по крайней мере, bin) в переменной среды PATH. Я не потерял никакой функциональности ни в одной из вещей, которые я делаю между Mac, Linux (дистрибутив debian) и Windows 10.
Я знаю, что это старый вопрос, на который был дан ответ, но подумал, что я и мой опыт для тех, кто все еще сталкивается с этим. Я получал ту же загадочную ошибку, полковник Бовель (правда, с командой Windows MOVE, а не с pscp):
Наш CI запускал тот же Makefile и работал отлично. Оказалось, что CI использовал mingw32-make, а я использовал GNU make. Удаление GNU make (которое было установлено как часть несвязанного массового пакета) и присвоение псевдонима mingw32-make для make работает отлично.
Решение @ user3869623 работает для меня. Для полноты картины я хотел бы поделиться некоторыми своими подробностями.
Мой make-файл содержит цель ниже:
Когда я запускаю , я вижу эту ошибку:
Поскольку в нем говорится, что что-то пошло не так с , я меняю цель make-файла на ниже:
На этот раз дает мне эту ошибку:
Я удивлен, увидев здесь , поскольку я работаю в командной строке Windows.
Потом проверил свой , вижу такую запись:
На этом пути есть и . Я удалил эту запись, и теперь она работает нормально.
НО Я ВСЕ ЕЩЕ НЕ ЗНАЮ, ПОЧЕМУ BASH ЗАНЯТ В ЭТО .
ДОБАВИТЬ 1
Что касается того, почему появляется в моем , потому что я использую Sublime, и он всегда запрашивает у меня двоичные файлы Git:
- Некоторые версии смотрят на вашу переменную , чтобы решить, какую оболочку запустить. У других, вероятно, есть оболочка, совместимая с , жестко запрограммированная во избежание поломки Makefile для пользователей с забавными нестандартными оболочками. Для протокола, какой вы используете?
- @tripleee Спасибо за ваш комментарий. Я использую для окон.
Чтобы основываться на ответе пользователя3869623.
В моем случае у меня был git \ bin в моем% PATH%, который содержит bash.exe и sh.exe .. Удаление% GIT_HOME% \ bin из PATH сработало для меня
Хотя эта рекомендация может разрешить запуск , это, вероятно, вызовет проблемы для git, особенно если make-файл устанавливает программное обеспечение из репозитория git.
Лучшее решение - просто заменить на .
Для тех, кто пытался удалить папку git bin из , но у них это не сработало, поищите в переменных любые пути, содержащие .
В моем случае я нашел переменную, ссылающуюся на папку cygwin bin , удалил ее, и она сработала.
У меня есть docker-compose.yaml файл, который выглядит следующим образом:
И мой Makefile выглядит так
Когда я запускаю это из командной строки GitBash:
Я получаю следующий результат
docker-compose run terraform init
process_begin: Ошибка CreateProcess (NULL, docker-compose run terraform init, . ).
make (e = 2): система не может найти указанный файл.
make: *** [init] Ошибка 2
Пожалуйста, дайте мне знать, если я могу предоставить больше информации
Обновить
Я подтвердил, что:
- docker-compose установлен
- docker-compose.exe существует в моей переменной окружения PATH (см. ниже)
Моя переменная окружения PATH:
Обновление 2
Если я изменю make-файл, чтобы он явно указывал путь к файлу docker-compose.exe , он работает:
Обновление 3 - решение
Так что мой полный Makefile на самом деле выглядел так:
Запуск make .env создает .env file , который включает переменную PATH env
Удаление строки PATH из этого файла решит это для меня :)
2 ответа
Если ваш Makefile каким-то образом манипулирует переменной PATH , так что каталог, в котором установлен docker-compose , больше не находится в нем, это может вызвать симптомы такого рода.
Для устранения неполадок попробуйте добавить
(с отступом на вкладке, конечно) непосредственно перед ошибочной командой, и проверьте, подтверждает ли результат ваши ожидания.
(В этом контексте знак доллара необходимо удвоить, чтобы передать буквальный знак доллара из make в базовую оболочку.)
Это означает, что docker-compose не найден при выполнении docker-compose run terraform init в Makefile.
Если вы не выполните make , просто docker-compose , вы также не сможете найти docker-compose .
Б) Если вы установили docker-compose , вам нужно знать, где вы его устанавливаете. Для моего сайта я установил его в: C:\Program Files\Docker\Docker\Resources\bin , поэтому перед выполнением make init я добавлю это в PATH:
Кроме того, если вы хотите окончательно добавить путь docker-compose в env, вы можете сослаться на это, чтобы сделать это.
Читайте также: