Sep
10

Установка и настройка cygwin

Author osya    Category Без рубрики     Tags ,

В данной статье разберем типичные ошибки и особенности настройки cygwin в связке с EmacsW32

Установка cygwin

После установки Cygwin необходимо добавить путь к папке bin в Cygwin к переменной окружения PATH в Windows.
В процессе работы с cygwin возникает ряд проблем, решение которых будет рассмотрено ниже:

Настройка цветов в консоли

Для того, чтобы вывод команд ls, grep и др. в консоли был цветным необходимо:

1. Поместить в директорию $HOME (у меня это C:\Documents and Settings\<username>\Application Data) файлы .bash_profile и .bashrc

2. В файле .bashrc раскомментировать строки, определяющие соответствующие цветовые параметры. Например,

# Some shortcuts for different directory listings
 alias ls='ls -hF --color=tty'                 # classify files in colour

Ошибки cygwin postinstall

После окончания установки пакетов (также это может возникнуть после удаления или обновления пакетов) возникает ошибка:

Package: base-passwd
passwd-grp.sh exit code 1
Package: No package
passwd-grp.sh exit code 1

Эта ошибка возникает в скрипте /etc/postinstall/passwd-grp.sh.

Ошибка возникает из-за того, что файлы passwd и/или group из директории etc существуют. При переустановке пакетов cygwin не удаляет файлы passwd и/или group. И это, в общем-то правильно. Так как в этих файлах может содержаться информация о других пользователях. Поэтому, в скрипте passwd-grp.sh условия if не выполняются и переменных created_passwd и created_group остаются равными “no”. Следовательно, в последних двух строках скрипта результат выполнения будет “ложь”.
Это сообщение об ошибке можно просто игнорировать. А можно перед начало обновления пакетов удалить файлы passwd и group. Тогда эта ошибка не возникнет.

Emacs warning: When using ‘cygwin’ program ‘patch’ can’t be found

Если при запуске Emacs возникает warning “When using ‘cygwin’ program ‘patch’ can’t be found”, то для устранения этой ошибки надо установить утилиту patch в cygwin.

Emacs warning (w32shell): When using ‘cygwin’ program ‘find’ will be Windows’ find, should be unix’ find

Если при запуске Emacs возникает Warning  (w32shell): When using ‘cygwin’ program ‘find’ will be Windows’ find, should be unix’ find, то это означает, что в функции w32shell-check-wanted-progs из модуля w32shell.el вызов функции w32shell-find-is-unix-find вернул nil. Функция w32shell-find-is-unix-find определена в этом же модуле w32shell.el. Она ищет программы find и findstr. Если пути к этим программам не совпадают, то возвращается t (истина). В противном случае возвращается nil. Возврат функцией  w32shell-find-is-unix-find значения nil может означать, что пути к программам find и findstr совпадают (например, c:/WINDOWS/system32/). Для поиска программ функция w32shell-find-is-unix-find вызывает функцию executable-find, которая определена в модуле files.el. А executable-find вызывает функцию locate-file, передавая ей в качестве пути переменную exec-path. Значит, ошибка может быть из-за того, что на момент вызова функции w32shell-check-wanted-progs переменная exec-path еще не инициализирована соответствующими строчками из файла .emacs (в переменную exec-path должен быть добавлен путь к c:/cygwin/bin). Если это так, то для решения проблемы необходимо переместить строки инициализации переменной exec-path в файле .emacs ближе к началу файла. У меня строка инициализации переменной exec-path выглядит так:

(setq exec-path (cons "c:/cygwin/bin" exec-path))

Post comment