- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
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”руб”} ‘ “$EXPENSES” done
Его надо сохранить в 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-компьютере рядом с вами.