Журнал LinuxFormat - перейти на главную

LXF131:cyqwin

Материал из Linuxformat
Перейти к: навигация, поиск

Cygwin и MSYS Добро пожаловать из тьмы к свету

О пользователях Windows важно помнить, что это не их вина. Вливайтесь в миссию Марка Бэйна, чтобы вывести их к свету – расскажите им о Cygwin и MSYS.

Как достойные провозвестники свободного ПО, мы всегда восхваляем преимущества Linux перед проприетарными ОС. Но иногда полный переход в Linux-окружение бывает невозможен. К примеру, на раздаче в столовой Звезды Смерти могут быть только компьютеры с Windows, и Империя не хочет (или не может) перейти на Linux, потому что зависит от приложений вроде Microsoft Access. И как же вам продолжать использовать Windows (по обязанности) и в тоже время применять функциональность Linux (типа сценариев оболочки)?

Дело в том, что существует пара прекрасных Linux-подобных окружений, которые вы можете установить в Windows: MSYS (Minimal System) и Cygwin (GNU + Cygnus + Windows). А как это может помочь вам в вашей ежедневной работе на Windows-машине? Давайте взглянем на MSYS.

Вы никоим образом не должны допускать ошибку, считая MSYS полноценным дистрибутивом Linux. Это просто Bourne Shell, перенесенный под Windows, что стало возможно благодаря порту GCC – MinGW (Minimalist GNU for Windows). На секундочку: как вам идея – Bourne Shell для Windows?!

Установка очень проста: скачайте и установите текущую версию MinGW с http://sourceforge.net/projects/mingw/files/Automated MinGW Installer, затем скачайте и установите MSYS с http://sourceforge.net/projects/ mingw/files/MSYS Base System/msys-1.0.11/MSYS- 1.0.11.exe/download.

MSYS

Ну вот, вы установили MSYS — и что с ним теперь делать? А то же самое, что и с Bourne Shell на Linux-машине. В частности, вас особо впечатлит полное отсутствие в нем хоть какого-то намека на графический интерфейс. Здесь все делается из командной строки, без каких-либо скрытых опций и дополнений.

Да, MSYS – просто голая оболочка. Посмотрим, к примеру, много ли файлов и папок в My Documents. Для этого запустите ваш новый Bourne Shell, одним из трех способов:

  • Выберите MSYS в меню Windows
  • Два раза щелкните мышью на msys.bat в C:\MSYS\1.0.
  • Вызовите MSYS набрав C:\msys\1.0\msys в командной строке Windows.

Затем начинайте печатать, как будто вы находитесь в Linux (вам будет приятно узнать, что при этом сохраняется функция автодополнения по двойному нажатию клавиши Escape):

ls -l /c/Documents\ and\ Settings/Mark/My\ Documents/| wc -l

И, конечно же, можно использовать awk (или gawk) для обработки файлов наподобие expenses.csv:

еда,25
бензин,50
еда,25
бензин,20

Замечательно то, что создавать файл сценария вы можете и в своем любимом Windows-редакторе (типа Notepad++):

 EXPENSES=”/c/Documents and Settings/Mark/My Documents/expenses.csv”
 ITEMS=”$(awk -F, ‘{
 print $1
 }’ “$EXPENSES| sort -u)for ITEM in $ITEMS
 do
 awk -F, -v ITEM=$ITEM ‘
 BEGIN {TOTAL=0}
 {if ($1==ITEM) {TOTAL+=$2}}
 END {print ITEM,TOTAL”руб”}
 ‘ “$EXPENSESdone

Его надо сохранить в C:\msys\1.0\msys\home\<ваша_учетная_запись>\expenses. При новом старте MSYS вы сможете сделать

chmod +x expenses
./expenses

Разумеется, в этом месте вам захочется применить такой инструмент Linux, как Cron, но тут-то вы и обнаружите полную минималистичность MSYS. Это, как мы говорили, абсолютно голый Linux. Однако идея, стоящая за MinGW, заключается в возможности портирования ваших Linux-инструментов на Windows, и вы найдете ряд таких инструментов (к примеру, Emacs и wget) в составе проекта MingwPORT на http://sourceforge.net/projects/mingw/files/mingwPORT/Current Releases.

Cygwin

Допустим, вы все же сочли, что MSYS для вас скудноват. Тогда, возможно, вы решите ознакомиться с Cygwin. Перед этим, однако, стоит повторить, что Cygwin – Linux-подобное окружение, а не дистрибутив Linux, собранный для работы с Windows. Он фактически состоит из DLL (динамически подгружаемой библиотеки) Windows и набора инструментов для работы с ней. И это важно помнить. Нельзя взять любое Linux-приложение и заставить его работать с помощью Cygwin. Тем не менее, инструментов достаточно, чтобы ваши труды окупились.

Вы можете скачать инсталятор Cygwin с http://www.cygwin.org/cygwin. Загрузите его и запомните, куда вы это сделали – позже нам это понадобится. Сохранив setup.exe, запустите его и следуйте инструкциям.

Для вас создастся базовая оболочка Bash, к которой можно обратиться одним из трех способов:

  • Дважды щелкнуть по иконке на рабочем столе.
  • Выбрать Cygwin Bash Shell в меню Windows.
  • Запустить C:\cygwin\Cygwin.bat.

Cygwin.bat любезно подскажет вам, как запустить Cygwin из командной строки Windows:

chdir C:\cygwin\bin
bash --login -i

Независимо от того, как вы намерены применять Cygwin, вы обнаружите, что это очень похоже на использование MSYS (вы также получаете доступ к консоли и набору команд Linux); зато базовый набор команд в Cygwin больше. Возможности Cygwin раскрываются в полной мере в том случае, если вам необходимо добавить в систему дополнительную Linux-функциональность – к примеру, задания Cron, только ради которых уже стоит задуматься о Linux. Но ни Cygwin, ни MSYS не включают Cron по умолчанию, и если вы скомандуете

crontab -l

оба вернут вам ошибку. Вот тут снова пригодится setup.exe. Проберитесь через экран выбора пакетов и, применив поиск, найдите пакет Cron. Вам также понадобится установить cygrunsrv (запуск сервисов Cygwin) и Nano (простой, но эффективный текстовый редактор Linux, про который мы говорим в этом номере). Покончив с этим, вы сможете запустить демон Cron:

cygrunsrv -I cron -p /usr/sbin/cron -a -D
net start cron

Не исключено, что вернется ошибка, но не волнуйтесь: на самом деле он запустился. Проверьте это, набрав

ps -ef| grep cron

Далее установите Nano как редактор для Cron

export EDITOR=nano

и отредактируйте свой cron-файл:

crontab -e

Теперь добавьте данные для вашего задания Cron:

* * * * * echo “$(date)” > ~/test.txt

Нажмите Ctrl+X для записи и убедитесь в появлении в вашей домашней директории нового файла – задание Cron должно создать и затем ежеминутно обновлять его.

И наконец, чтобы вы не путались, работая сразу с Windows и Linux, Cygwin предоставляет прекрасный инструмент для конвертации путей формата Windows в формат Linux (точнее, Unix) и наоборот:

cygpath --windows ~ # это должно вернуть (к примеру) C:\cygwin\home\Mark
cygpath --unix C:/ # это должно вернуть /cygdrive/c

Итак, за кратчайший срок мы перешли от Windows-сценариев (фу! Бяка!) к Windows+Linux-сценариям (ура!). Но помните – это не полноценное решение для запуска Linux-приложений под Windows. Правильно будут работать только приложения, скомпилированные с помощью MinGW или Cygwin. Тем не менее, это не какой-то доморощенный компромисс или бессмысленное упражнение в технике – это достойное решение для желающих перенести Linux-сценарии в Windows. И не давным-давно в далекой-далекой галактике, а сегодня и на Windows-компьютере рядом с вами.

Персональные инструменты
купить
подписаться
Яндекс.Метрика