Код выхода 127 в cygwin64
После многих лет без проблем несколько программ в моей установке cygwin64 на 64-битной Windows 7 Professional не работают, и вместо этого, похоже, немедленно завершают работу с кодом 127, что обычно означает "команда не найдена" в Bash. В частности, такие программы, как vim
, emacs
, и даже clear
проявлять это поведение, в то время как другие любят vi
, echo
, touch
, а также date
похоже, работает нормально.
Сначала я подумал, что что-то могло пойти не так с предыдущим циклом обновлений пакетов, поэтому я запустил другое обновление, используя интерфейс командной строки cygwin setup, но, похоже, это не помогло.
Из того, что я могу сказать, затронутые программы вообще не работают. Даже не --version
флаги для работы программы, что заставляет меня думать, что может быть что-то не так с самим cygwin или общей зависимостью:
$ vim --version
$ echo $?
127
(Я могу предоставить конкретные номера версий для различных пакетов, если это поможет, но, поскольку эта проблема существовала как до, так и после самых последних обновлений, я сомневаюсь, что это имеет большое значение.)
Я дважды проверил свою переменную PATH, и она начинается с /usr/local/bin:/usr/bin:
, как и ожидалось. Возможно, есть какие-то новые зависимости в этих программах, которые не были должным образом разрешены менеджером пакетов cygwin или которые, возможно, не были автоматически добавлены в мой PATH?
Я упускаю что-то еще очевидное?
3 ответа
Это выглядит как clear
был виновником. Я диагностировал это, пытаясь запустить его с полным путем:
$ /usr/bin/clear
$ echo $?
127
Я тогда заглянул внутрь /usr/bin
и обнаружил, что clear
как-то вообще пропал. Итак, используя настройку Cygwin GUI, я принудительно переустановил ncurses
, пакет, который содержит clear
и все вроде бы сейчас в рабочем состоянии.
Само собой разумеется, что vim
а также emacs
оба используют clear
следовательно, проблемы касались и этих программ.
То же самое случилось со мной после того, как я обновил cygwin, vim не запускается, код 127. Добавление clear.exe ничего не сделало.
strace vim +q
дал sigalstack не может быть расположен в dll cygwin1.dll Добрые люди в списке рассылки cygwin сказали, что мое обновление, вероятно, не завершено, потому что я не закрыл все мои процессы cygwin. На самом деле у меня были запущены sshd и cygrunsrv, я их убил и переустановил базу cygwin (зайдите в установку и вручную выберите переустановить базу cygwin), это все исправило. Удачи друзья
Для всех, кто приезжает сюда из Google - у меня был опыт, когда программы выходили с кодом ошибки 127 на Cygwin (в частности, gcc).
Проблема оказалась в том, что я установил путь с пробелом в нем.
Если вы устанавливаете с помощью графического интерфейса, он предупредит вас об этом. Я установил из командной строки, и никакое такое предупреждение не помешало мне выполнить установку.