2

После нескольких лет без проблем несколько программ в моей установке 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 ответа3

4

То же самое случилось со мной после того, как я обновил Cygwin, vim не запускается, код 127. Добавление clear.exe ничего не сделало.

strace vim +q дал sigalstack, который не может быть найден в dll cygwin1.dll. Добрые люди из списка рассылки cygwin сказали, что мое обновление, вероятно, не завершилось, потому что я не закрыл все процессы cygwin. На самом деле у меня были запущены sshd и cygrunsrv, я их убил и переустановил базу cygwin (зайдите в установку и вручную выберите переустановить базу cygwin), это все исправило. Удачи друзья

2

Похоже, clear что виновник. Я диагностировал это, пытаясь запустить его по полному пути:

$ /usr/bin/clear
$ echo $?
127

Затем я заглянул внутрь /usr/bin и обнаружил, что clear вообще почему-то отсутствует. Итак, используя настройку Cygwin с графическим интерфейсом, я принудительно переустановил ncurses , пакет, который содержит clear , и теперь все, кажется, в рабочем состоянии.

Само собой разумеется, что и vim и emacs используют clear , поэтому проблемы касаются и этих программ.

1

Для любого, кто прибывает сюда из Google - у меня был опыт, когда программы выходили с кодом ошибки 127 на Cygwin (в частности, gcc).

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .