Что такое cygwin. Устанавливаем Cygwin

Cygwin это unix подобная среда для Windows. Она часто нужна для запуска программ которые разрабатывались для unix подобных операционных систем. Многие такие программы можно установить и без Cygwin, но он обеспечивает удобное централизованную установку и управление. С помощью Cygwin вы можете легко поставить такие программы как — OpenSSL , GnuPG , ImageMagick , gvim , gcc , bash , tcsh , emacs и многие другие.
Итак перейдём к установке. Для начала надо скачать установщик . Это лишь программа которая скачает все нужные пакеты и среду, а потом их установит. Установка проходит достаточно просто:




C помощью этого меню вы можете выбрать настройки прокси если вы его используете.


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


Теперь можно выбирать пакеты для установки. Для простоты поиска они собраны в группы по их назначению. Также можете использовать поиск по названию пакета. С помощью этого меню можно установить как бинарный пакет (уже откомпиленный), так и исходный код (неоткомпиленный пакет). В колонке Bin пишется версия выбранного бинарного пакета, колонку Src (исходный код) можно выбрать если уже выбран бинарный пакет. Исходный код будет той же версии что и бинарный пакет. Для того что-бы выбрать версию пакета в колонке New надо несколько раз щёлкнуть на ней.
После того как вы выберете все пакеты которые вам необходимы то можете нажать далее и установщик скачает их и установит. При выборе пакетов я бы порекомендовал вам такие —

Вам когда-нибудь приходилось после linux’а пользоваться командной строкой Windows? Мне, да. Очень не привычно. Многие команды называются по-другому. Например, аналог ls в Windows это dir. Стилистика передачи аргументов у местного интерпретатора другая. А многих возможностей, которые дают линуксовые утилиты тут просто нет. Как-же получить аналогичную linux среду в windows? Это можно сделать установив Cygwin.

Знакомство с развернутой системой

Во-первых у cygwin по-умолчанию устанавливается свой эмулятор терминала, с которым работать по-удобнее, чем с командной строкой Windows.

Тут у нас первые проблемы. Как видите, windows утилиты, в том числе и cmd.exe печатают текст в oem-866, а эмулятор cygwin читает текст в utf-8. Если переключить кодировку на 866 кодовую страницу, то последствия этого действия еще хуже.


cygwin интерпретировал русскоязычное имя в unicode кодировке, как строку в 866 кодировке и в итоге решил создать новую директорию /home/╨Ф╨╝╨╕╤В╤А╨╕╨╣. Так что лучше все оставить как было и, при возможности обходиться cygwin утилитами. В случае, если вам нужно запустить командную оболочку без эмулятора терминала, запустите пакетный файл Cygwin.bat.
В данном случае, cygwin установлена в папке C:\cygwin64\. Узнать преобразуются пути из unix-path в windows пути нам поможет утилита cygpath.
$ cygpath -w `pwd`
C:\cygwin64\home\Дмитрий

$ cygpath -w /
C:\cygwin64

$ cygpath "C:\cygwin64"
/

$ cygpath "C:\cygwin64\home\Дмитрий"
/home/Дмитрий
А как получить доступ к диску C:, если все пути транслируются в C:\cygwin64\.
Все просто. В дирректории /cygdrive есть точки монтирования, которые по имени соответствуют томам windows.
$ cygpath "C:\"
/cygdrive/c

$ cygpath -w /cygdrive/c/somedir
C:\somedir
Cygpath так-же успешно транслирует обращения к этой точке монтирования в Windows пути.
Кстати, существование такой утилиты как cygpath показывает, почему с cygwin вы, при возможности, должны пользоваться только ее утилитами. Если, вам нужно запустить java VM, а она понимает только Windows пути, вам придется cygwin путь преобразовать при запуске:
$ java -jar `cygpath -w "/opt/some.jar"`
Из этого следует, что многие скрипты из linux’а нельзя просто взять и запустить в windows. Нужно иногда постараться перенести скрипт. Более того, не все утилиты командной строки будут работать.

Больше возможностей

SSH

Вы можете поставить клиент и сервер OpenSSH — это позволит вам получить удаленный доступ к командной оболочке bash, с другого компьютера или, даже с телефона, например, с помощью JuiceSSH . Так-же вы получите удаленный доступ к своим файлам по протоколу SFTP(хотя на винде проще расшарить каталог, доступный по SMB).

Программирование

В комплект входят известные компиляторы, такие как Clang или GCC, интерпретаторы языков Python, Perl, PHP, Ruby и др. Вы можете собрать POSIX-совместимые программы под винду.

Текстовые редакторы

Интерактивные редакторы — vim, nano, emacs.
Не интерактивные редакторы, подходящие для использования в скриптах — sed, awk.

Итог

Если вы скучаете по возможностям linux в винде, возможно, стоит поставить эту штуку себе.

Cygwin (Сигвин) представляет собой набор Unix программ и библиотек, скомпилированных под ОС Windows и размещенных в файловой системе таким же образом как и в настоящем Unix-е. Благодаря этому мы получаем полный эквивалент Unix среды начиная от bash и вплоть до компиляторов gcc, которыми без особого портирования исходного кода можно собирать проекты для выполнения в Windows (достаточно большое количество кросс-платформенных приложений используют такой подход, так как он наиболее простой и быстрый).

Установка Cygwin

Скачать Cygwin для 32х или 64х - разрядной версии можно на сайте https://cygwin.com/install.html . Установка весьма простая - можно просто нажимать "Далее" до окна выбора пакетов (Select Packages). Тут перед вами откроется база пакетов, причем некоторые из них уже будут отмечены для остановки (базовы), другие вы можете отметить сами. Для того, что бы отметить пакет на установку, нужно ввести его имя в поле "Search", затем раскрыть категории и найти этот пакет. Потом нажать "Skip", в результате чего вместо Skip должна появится версия, которая будет установлена. Для дальнейшей работы отметьте пакет wget , остальное можно пока не трогать. Пакеты можно будет доустановить или удалить в любой момент времени, просто повторно запустив установщик, но это не совсем удобно, поэтому дальше в статье я расскажу как устанавливать пакеты из командной строки (для этого нам и понадобится wget).

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

Терминал Console

Установка пакетов для python с помощью pip

Пакеты в python часто устанавливаются с помощью pip, которого нету в репозиториях сигвина.

Поэтому его нужно установить отдельно:

MAN-страницы для функций libc

Cygwin уже содержит мануал-страницы для стандартных команд, однако man для функций libc можно установить отдельно:

Кстати Cygwin в некотором роде связан со встраиваемыми системами, так как использует Newlib реализацию libc, которая как известно повсеместно применяется в разных ARM-тулчейнах.

Vim в Cygwin

Установка:

Настройка выполняется в файле.vimrc в домашней директории:

Я пользуюсь такими настройками:

set backspace=indent,eol,start

Syntax enable

set shiftwidth=4

set tabstop=8

set softtabstop=4

set expandtab

set number

set showcmd

set cursorline

filetype indent plugin on

set wildmenu

set lazyredraw

set showmatch

set incsearch

Использование "родного" терминала Cygwin Terminal

Стандартный установщик Cygwin предоставляет свой терминал mintty (запускается через иконку Cygwin Terminal). В сравнении с Console он немного уступает в функциональности (например в нем нет вкладок), но он также имеет неплохой функционал, да и телодвижений меньше. Одной из приятных возможностей выступает поддержка 256-ты разрядных цветов в терминале:

Это позволяет использовать удобные темы подсветки синтаксиса для vim, например badwolf:

Для её активации, в.vimrc надо добавить:

Выглядить это будет так:

Как сделать чтобы сохранялась история команд в bash cygwin?

В файле.bashrc нужно найти добавить:

В первой указывается размер файла истории (10 тысяч команд), во второй включается удаление дубликатов команды (если введенная команда уже есть в истории, то старая удаляется для экономии места), и в третьей включается ведение истории bash.

Как в Cygwin перейти по пути заданному в стиле Windows?

Для первращения win-подобного пути в unix-style путь можно использовать утилитку cygpath.

В результате путь превратится в "/cygdrive/d/projects/some/src" и передастся как аргумент cd.

Данная статья предназначается для двух
типов людей: для тех, кто не разбирается в
Linux, но не может поставить его на своем компе
(причины разные бывают), либо для тех, кто
мало шарит в пингвинах 🙂 и не прочь
познакомиться с ними на "нейтральной"
территории, то бишь на Win98/NT.

На сайт уже описывали Cygwin как самый лучший
эмулятор Linux под вынь, но не было сказано
ничего про установку, настройку и баги Cygwin.
Тут я расскажу об этом 🙂 На самом деле, если
вдуматься, то Cygwin - это вовсе и не эмулятор, а
просто дистрибутив Linux, написанный под Win32 😉

Хватит рассусоливать... Идем на http://www.cygwin.com ,
берем оттудова прогу-инсталлялку setup.exe. Ей
мы будем тянуть уже прекомпиленные
бинарники (в exe-расширении), припоминаешь rpm?
😉 с сайта разработчика, либо с зеркала.
РЕКОМЕНДУЮ этой прогой только скачивать
эти файлы - ставить будем вручную, т.к. если
ставишь при помощи setup.exe, не работает gcc - фиг
знает, почему... Может, разработчики уже учли
этот баг, но мне пока об этом не известно...

Итак, качаем все главные бинарники (исходники
можно не качать), и несколько
дополнительных - кто ж откажется от wget, lynx,
BitchX, Python 🙂 А вот Perl можно не качать... У меня
был ActivePerl - продвинутый Perl-эмулятор. Скачать
можно с http://www.acriveperl.com .
Глюков не наблюдал 🙂 (я расскажу, как я
внедрил его в cygwin).

Настройка

И в файле "group" в той же папке "etc":
root:x:0:root

Если ты хочешь закодировать твой пароль, а
не "password", как я сделал в моем примере,
пиши Perl-скрипт

#!/usr/bin/perl
chomp ($pass=);
print $crypt ("SA",$pass);

Где, SA - салта, по которой будет криптоваться
пароль... можно ее сделать рандомной, но в
этой статье это будет оффтопиком.

Теперь редактируем файл "c:\cygwin\cygnus.bat" -
в нем меняем PATH, просто изменив путь к
эмулятору и путь к файлу login.exe. Запустим
файл.

Авторизуемся: в моем примере "root":"password".
Вот мы и попали в сам эмулятор. Мне не
понравилось приглашение ввода. Изменим его
- переменную PS1. Открываем (создаем) файл "c:\cygwin\etc\profile"
и пишем туда:

# /etc/profile
PROFILE_LOADED=1
PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/usr/local/sbin:$PATH"
unset DOSDRIVE
unset DOSDIR
unset TMPDIR
unset TMP
export HOSTNAME=test
PS1="[\u@$HOSTNAME \W]# "
LOGNAME=$USER
export PATH PS1 USER LOGNAME

Вот... Затем перелогинимся, и все будет на
месте и красиво 🙂 Приглашение будет: # - стандартое, линуховое 🙂

Все, первичная инсталляция закончена.
Переходим к установке сервисов 🙂

В стандартную поставку входит туева хуча
сервисов. Запускать их нужно таким образом:
/usr/sbin/inetd -R /usr/sbin/in.ftpd (пример для ftpd).

SSHD лучше поставить самому - встало на ура и
рулюсь я из SecureCRT, законнекченной на 127.0.0.1 -
совсем другой вид 🙂

Что касается работы с TCP/IP, недостатков я не
заметил 🙂 Все коннектится и работает как
надо...

А теперь несколько советов:

1) Доступ ко ВСЕМ дискам открыт. Так что будь
осторожен. К примеру, диск d: находится тут -
"/cygdrive/d".

2) Что касается Perl, создай симлинк на файл
Perl.exe, к примеру, так "ln -s /cygdrive/c/perl/bin/perl.exe
/usr/bin/perl"

3) Если у тебя по какой-то причине не
устанавливается линуховое приложение -
просто поправь Си-код. Быть может,
увенчается успехом.. (именно так я скомпилил
micq).

4) Следи за обновлениями Cygwin на сайте http://www.cygwin.com
- бинарники часто обновляются.

Вопросы? Пишите мне на E-Mail - постараюсь
помочь...

Если вы иногда все же используете операционную систему от Microsoft, вам, наверное, очень нужны некоторые утилиты Linux в windows. Было бы очень удобно использовать стандартные утилиты командной строки для фильтрации вывода, сортировки, фильтрации и потокового редактирования, в Windows, где такие функции не поддерживаются.

Для реализации этого есть несколько решений. В этой статье мы рассмотрим только два из них. Первое, о котором вы, возможно, уже слышали, а может, уже и используете - Cygwin. Второе, нечто более интересное и новое - Cash. Начнем с Cygwin. В последней версии Windows 10 появилось и третье решение - возможность нативно, с помощью специальной подсистемы. Об этом читайте в отдельной статье.

Cygwin - это набор инструментов, обеспечивающий Unix подобную среду в Windows. Здесь нельзя запускать уже существующие утилиты для Linux. Для того чтобы выполнить linux команду из Windows Cygwin, ее нужно сначала перекомпилировать.

Тем не менее пересобрано уже достаточно много программного обеспечения. Cygwin даст вам Linux подобную среду со многими утилитами, к которым вы уже привыкли в Linux. Его можно использовать как для стандартных утилит таких как команда cp windows, так и для подключения к удаленному серверу по ssh.

Установка Cygwin

Как и другие программы Windows, Cygwin устанавливается с помощью установщика в формате.exe. Скачать его можно на официальном сайте.

Для установки вам придется пройти несколько шагов мастера, по умолчанию программа будет установлена в C:\Cygwin:

С установочным пакетом не поставляется полный набор окружения. Оно будет загружено в процессе установки. В этом окне нужно выбрать сервер для загрузки компонентов:

Затем необходимо выбрать пакеты, которые нужно загрузить и установить. Доступно довольно-таки много программ и они рассортированы по категориям. Если вы не знаете нужен ли вам тот или иной пакет, оставьте значение по умолчанию. Вы сможете установить их потом:

Осталось только нажать Next для начала загрузки и завершения установки.

Добавление Cygwin в Path

После завершения установки, чтобы выполнить команды linux в windows с максимальным удобством, желательно добавить папку с исполняемыми файлами Cygwin в переменную среды Path.

Вы можете запустить терминал Cygwin, кликнув по ярлыку на рабочем столе. Откроется терминал с папкой C:\Cygwin\bin

Здесь можно выполнять все нужные linux команды в windows, но вы не сможете их выполнить в другой директории или другом терминале.

Чтобы решить эту проблему, необходимо добавить папку Cygwin в переменную Path. Откройте окно свойства системы с помощью сочетания клавиш Win+Pause/Break, затем выберите пункт Дополнительные параметры системы на левой панели:

На вкладке дополнительно выберите Переменные среды :

Найдите в списке переменную Path и нажмите Изменить :

Добавьте в конец строки вот такую запись:

Обратите внимание, что все пути должны быть разделены точкой с запятой. Осталось нажать Ок и тестировать выполнение Linux команд в Windows.

Cash

Это кое-что совсем новое. Утилита с открытым исходным кодом Cash, это кроссплатформенная реализация командной оболочки Linux на JavaScript. Цель этого проекта обеспечить более гибкую, простую альтернативу Cygwin, для тех кто хочет чувствовать себя в WIndows, как и в Linux.

Установив Cash, вы сможете выполнить linux команду из windows в любом эмуляторе терминала, в том числе в стандартной командной строке Windows.

На данный момент поддерживаются только некоторые утилиты linux для windows. Вот список поддерживаемых:

  • alias
  • clear
  • export
  • false
  • mkdir
  • source
  • touch
  • unalias

Так как утилита еще находится на стадии разработки, то список команд Linux в Windows будет постоянно увеличиваться. Вы также можете проголосовать за добавление команд которые вам нужны.

Вот как все работает:

Что самое интересное, вы можете комбинировать Windows и Linux команды. Например, вы можете выполнить:

ipconfig | grep IPv4 | sort

И команда правильно отработает. Сначала выполнится ipconfig, а затем результат будет отфильтрован с помощью Grep.

Установка Cash в Windows

Я буду устанавливать Cash в Windows 10. Это делается очень просто и работает также в более старых версиях Windows. Поскольку Cash основан на JavaScript для его работы необходимо установить Node.js. Скачать Node.js можно на официальном сайте:

После того как Node.js Будет установлена, можно переходить к установке Cash. Его можно установить в нескольких режимах:

  • Ручное использование Cash - нужно выполнить cash чтобы начать запускать linux команды
  • Глобальное использование - linux команды доступны во всех терминалах windows
  • Установить только некоторые команды - вы можете выбрать компоненты для установки если не хотите ставить все

Для установки Cash глобально откройте командную строку Windows с помощью Win+R:

npm install cash-global -g

Установка может занять несколько минут, в зависимости от скорости вашего интернет-соединения. После завершения установки вы можете сразу тестировать Linux команды в Windows.

Выводы

Как я уже говорил, проект Cash еще на стадии разработки и есть вероятность что вы столкнетесь с ошибками. Не забудьте сообщить о найденных ошибках разработчикам, чтобы помочь улучшить проект. Если для вас критична стабильность лучше использовать старый добрый Cygwin.

Нам, пользователям Linux нечасто понадобиться использование unix команд в windows и такие инструменты. Мы можем использовать Linux команды напрямую в нашей системе. Но если вы по каким-либо причинам не можете установить Linux, и все же хотите использовать linux команды, это может быть отличным решением.

Об авторе

Основатель и администратор сайта сайт, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux интересуюсь всем, что связано с информационными технологиями и современной наукой.