Cygwin и что это такое

  • Автор теми Wii
  • Дата створення

Wii

New Member
Решил создать темку о лучшем эмуляторе *unix под вынь.
Что такое cygwin?
Это полноценный эмулятор юникс системы под вынь.
Для чего это?
Для комплияции программ и общего ознакомления с юниксом.
+ небольшой FAQ по использованию (нагло стырено с )
Cygwin: что это такое?

Cygwin - это аббревиатура от 'Cygnus', группы разработчиков свободного ПО в рамках проекта 'RedHat' и 'Windows', всеми нами любимой операционной системы. Спешу развеять очень популярную точку зрения, будто бы cygwin - это эмулятор UNIX под Windows: это не так! Cygwin - это лишь мощный, очень развитый и, самое главное, бесплатный набор программных средств переноса (портирования) UNIX'ового ПО под Windows и кросс-компиляции (создания бинарного кода на одной платформе под другую) UNIX'овго софта. Лично для меня, cygwin, прежде всего, это мощнейший компилятор gcc с отшлифованными под Windows хидерами и либами.

Cygwin нынче становится весьма популярным: многие производители свободного ПО под UNIX поддерживать '--target=cygwin' в конфигах своих программ, благо, это не столь трудоёмко. А cygwin, в свою очередь, расширяет совместимость с UNIX, поддерживая не только posix, но и другие, более узкоспецифичные стандарты UNIX-систем.

Cygwin: где смотреть?

- официальная страница cygwin'а, на которой Вы сможете найти достаточное количество информации о текущем состоянии проекта, об обновлениях cygwin'овских релизов, а также официальный список ftp-серверов, периодично зеркалящих cygwin.

Cygwin: что и как устанавливать?
gcc: какой он?

Точно такой же, как и в UNIX. Сочный, мощный, безглючный. Однако, не такой быстрый. Дело в том, что запуск препроцессора, компилятора, ассемблера и линковщика требует определённого времени на загрузку и пролинковку в памяти библиотеки cygwin1.dll, требумую каждым из этих компонентов gcc. Отмечу, что в Windows 2000 это требует на порядок меньше времени, чем в Windows 98. Скорость компиляции в Windows 2000 очень близка к скорости компиляции в UNIX. Но сок остаётся соком: генерируемый бинарный код cygwin'ным gcc остаётся вне конкуренции по компактности и эффективности!

Если Вы когда-либо писали или компилировали программы под UNIX, Вы не будете испытывать никаких трудностей в работе с cygwin. Только помните, что cygwin'ный gcc может не поддерживать некоторые опции, которыми Вы пользуетесь в UNIX'е, хотя количество таких недоразумений сведено к минимуму. На моём веку, например, таких проблем не возникало. В любом случае, если возникают какие-то проблемы, все мы дружно знаем лучший способ их решения: 'man gcc'!

Если же Вам не доводилось прежде заниматься программированием под UNIX и Вы привыкли жать <F9> для того, чтобы скомпилировать Вашу программу, расстраиваться не стоит. Попробуйте 'man gcc' в bash'е cygwin'а: вполне достойное и увлекательное чтиво.
Данная статья предназначается для двух типов людей: для тех, кто не разбирается в Linux, но не может поставить его на своем компе (причины разные бывают), либо для тех, кто мало шарит в пингвинах и не прочь познакомиться с ними на "нейтральной" территории, то бишь на Win98/NT.

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

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

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

Настройка
Я приучил эмулятор к авторизации по DES-шифрованию, но не мог создать много групп... Поэтому создаем (если нет) папку "c:\cygwin\etc" и в ней файл "passwd". В нем:
root:DMNKyNJswdvq2:500:0:root:/root:/bin/bash

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

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

#!/usr/bin/perl
chomp ($pass=<STDIN>);
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

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

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

В стандартную поставку входит туева хуча сервисов. Запускать их нужно таким образом: /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 на сайте - бинарники часто обновляются.
Данная статья предназначается для двух типов людей: для тех, кто не разбирается в Linux, но не может поставить его на своем компе (причины разные бывают), либо для тех, кто мало шарит в пингвинах и не прочь познакомиться с ними на "нейтральной" территории, то бишь на Win98/NT.

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

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

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

Настройка
Я приучил эмулятор к авторизации по DES-шифрованию, но не мог создать много групп... Поэтому создаем (если нет) папку "c:\cygwin\etc" и в ней файл "passwd". В нем:
root:DMNKyNJswdvq2:500:0:root:/root:/bin/bash

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

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

#!/usr/bin/perl
chomp ($pass=<STDIN>);
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

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

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

В стандартную поставку входит туева хуча сервисов. Запускать их нужно таким образом: /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 на сайте - бинарники часто обновляются.
 
Зверху