Файлы DLL

Установка Git под Windows из пакетов Cygwin. Cygwin: Введение

Установка Git под Windows из пакетов Cygwin. Cygwin: Введение

Данная статья предназначается для двух
типов людей: для тех, кто не разбирается в
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 — постараюсь
помочь…


Скрипт cygwin.bat выполняется из командной строки DOS, устанавливает среду Cygwin и запускает интерпретатор bash под Windows. Cygwin прекрасно настраивает переменные Unix-окружения в соответствии с переменными окружения Windows. Например, на своей машине, я вошел в Windows, как пользователь bjohnson. Когда я запускаю Cygwin , он по умолчанию загружается под управлением пользователя bjohnson.

Ниже представлено окно с некоторыми стандартными Unix-командами в Cygwin .


В зависимости от установленных вами пакетов, вы легко можете запускать соответствующие Unix-утилиты. Если вы пользователь Unix, вам, несомненно, хотелось бы, чтобы в Windows была команда ps для просмотра выполняемых в настоящее время процессов без использования Task Manager . Если вы используете флаг -aW , вы сможете увидеть процессы Windows, как и любые запущенные процессы Cygwin . Ниже представлен список Windows-процессов, доступный в результате выполнения Cygwin команды (ps -aW | less ).

PID PPID PGID WINPID TTY UID STIME COMMAND 3193213 0 0 4291774083 ? 0 Dec 31 C:\WINDOWS\SYSTEM\KERNEL32.DLL 63753 0 0 4294903543 ? 0 Dec 31 C:\WINDOWS\SYSTEM\MSGSRV32.EXE 60569 0 0 4294906727 ? 0 Dec 31 C:\WINDOWS\SYSTEM\MPREXE.EXE 77349 0 0 4294889947 ? 0 Dec 31 C:\WINDOWS\SYSTEM\RPCSS.EXE 196093 0 0 4294771203 ? 0 Dec 31 C:\WINDOWS\SYSTEM\mmtask.tsk 191237 0 0 4294776059 ? 0 Dec 31 C:\WINDOWS\EXPLORER.EXE 237709 0 0 4294729587 ? 0 Dec 31 C:\WINDOWS\TASKMON.EXE 230713 0 0 4294736583 ? 0 Dec 31 C:\WINDOWS\SYSTEM\SYSTRAY.EXE 217533 0 0 4294749763 ? 0 Dec 31 C:\PROGRAMFILES\DIRECTCD\DIRECTCD.EXE 5.1.

Структура директорий и полномочия доступа к файлам

Cygwin монтирует ваши локальные диски в директории /cygdrive . Сюда входят разделы жесткого диска, дисководы, устройства для чтения компакт-дисков, устройства для чтения ZIP . Выполним команду df на моей машине. Получим структуру, подобную той, что приведена ниже.

Bjohnson@BRADMAN $ df Filesystem 1k-blocks Used Available Use% Mounted on C:\cygwin\bin 2096832 0 2096832 0% /usr/bin C:\cygwin\lib 2096832 0 2096832 0% /usr/lib C:\cygwin 2096832 0 2096832 0% / c: 2096832 0 2096832 0% /cygdrive/c d: 670496 670496 0 100% /cygdrive/d

После установки Cygwin я указал инсталлятору сохранить файлы в директорию C:\cygwin\ . Cygwin использовал эту директории в качестве корневой точки монтирования файловой системы . Он смонтировал C:\cygwin\ bin на /usr/bin и C:\cygwin\lib на /usr/lib . В директории /usr/bin , /bin , и /usr/local/bin были добавлены переменные окружения Cygwin (но не Windows). Директории из среды окружения Windows были импортированы в среду Cygwin , чтобы иметь к ним доступ.

Cygwin также использует разумную систему полномочий доступа для Unix-файлов. Но что это может означать для всех ваших Windows-файлов? Кто владелец файлов , и какие полномочия установлены по умолчанию? Запустим команду ls -al на несколько Windows-файлов, чтобы получить ответ.

bjohnson@BRADMAN /cygdrive/c/cyginstall $ ls -al total 273 drwxr-xr-x 1 bjohnson unknown 0 Mar 13 17:48 . drwxr-xr-x 1 bjohnson unknown 0 Dec 31 1969 .. drwxr-xr-x 1 bjohnson unknown 0 Mar 13 18:06 contrib drwxr-xr-x 1 bjohnson unknown 0 Mar 13 18:03 latest -rwxr-xr-x 1 bjohnson unknown 218112 Mar 13 17:48 setup.exe -rw-r--r-- 1 bjohnson unknown 60607 Mar 13 17:54 setup.ini

Cygwin попытается получить информацию о владельцах файла (пользователе и группе) из Windows. Пока я использовал машину под управлением Windows 98 с одним пользователем, все файлы принадлежали мне (bjohnson) с указанием в качестве группы "unknown". Это устанавливало полномочия для всех Windows-директорий и исполняемых файлов на значение 755 (чтение и выполнение для всех, запись только для владельца) и устанавливала всем файлам Windows полномочия 644 (чтение для всех, запись только для владельца). Выполнение команды chmod для Windows-файлов игнорируется.

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 в винде, возможно, стоит поставить эту штуку себе.