Код выхода 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).

Проблема оказалась в том, что я установил путь с пробелом в нем.

Если вы устанавливаете с помощью графического интерфейса, он предупредит вас об этом. Я установил из командной строки, и никакое такое предупреждение не помешало мне выполнить установку.

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