Опубликован: 20.02.2007 | Уровень: специалист | Доступ: платный
Лекция 5:

Cygwin

< Лекция 4 || Лекция 5: 123 || Лекция 6 >
Выполнение приложений

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

Выполнение Windows приложений

Вы можете не только выполнять Unix/Cygwin-приложения, но и запускать родные Windows-приложения из командной строки, как это показано ниже.


Кое-что вы можете делать и с графическими приложениями.

Создание программ в Windows

Что можно сделать еще? Если вы установите GCC, GDB, make, и Binutils, то сможете получить бесплатную Windows-среду для разработки C/C++ приложений. Это конечно не Microsoft's Visual Studio, но зато и не так дорого. Вот пример компиляции и выполнения простой программы на C.


Выполнение Perl-скриптов

Хотя Perl-программы доступны для Windows, многие из них не бесплатны. Cygwin дает возможность свободного исполнения Perl-скриптов на вашей Windows-машине. Чтобы показать, что это возможно, я написал пример скрипта, который берет числа (по любому основанию от 2 до 16) и преобразует их в числа с другим основанием (от 2 до 16). В этом примере я преобразовал число 435 в десятичной системе счисления в шестнадцатеричную систему.


Полезные Unix-утилиты

Теперь у вас есть доступ к миллионам полезных Unix-утилит внутри Windows, многие из которых могут быть полезны системным администраторам или специалистам по сетевой безопасности. Вот лишь некоторые из них.

  • grep. Поиск файлов на основе регулярных выражений.
  • sed. Потоковый редактор, удобный для выполнения операций поиска и замены.
  • strings. Извлечение отображаемых ASCII строк из двоичных файлов; хорош для документов Word в случае, если у вас не установлен MS Office.
  • strace. Трассировка системных вызовов и сигналов; показывает, какие системные вызовы и сигналы порождает и получает приложение.
  • md5sum. Обеспечивает проверку контрольной суммы файла для обеспечения гарантии авторизации и защиты от подделки.
  • diff. Сравнивает два файла.
  • patch. Использует результаты работы команды diff, чтобы сделать файл file1 таким же, как file2.
Примечание. Вы можете обратиться на http://cygwin.com/ported.html, чтобы найти другие Cygwin -пакеты, доступные для загрузки. Вы можете найти такие популярные приложения, как Apache, smbclient (упоминавшийся в лекции "Системные средства с открытым программным кодом: основы" ), и даже утилиты записи CD-дисков (включая mkisofs, упоминавшуюся в лекции "VMware" , которая позволяет создавать ISO-образы компакт дисков).
XFree86 для Cygwin

Вы можете даже запустить X Window внутри Cygwin. Во-первых, вам следует обратиться к http://cygwin.com/xfree/ и выбрать зеркало для скачивания двоичных файлов X Window. Вы можете использовать NcFTP под Cygwin (если он установлен) для доступа к зеркалу и перехода к директории cygwin/xfree/binaries/4.20 и загрузки всех файлов во временную директорию (мы используем /home/bjohnson/xfree/ ). Как только загрузка завершится, вам понадобится распаковать программу, которую вы скачали, а затем выполнить скрипт Xinstall.sh. Ниже приведены команды подготовки к инсталляции XFree86 для Cygwin.

bjohnson@BRADMAN ~/xfree$ ls
FILES       Xetc.tgz    Xfsrv.tgz   Xnest.tgz   extract.exe.gz
Install     Xf100.tgz   Xhtml.tgz   Xprog.tgz   gnu-tar
README  Xfcyr.tgz   Xinstall.sh Xprt.tgz    md5.sum
RELNOTES    Xfenc.tgz   Xjdoc.tgz   Xps.tgz startup-scripts.tgz
Xbin.tgz    Xfnts.tgz   Xlib.tgz    Xvfb.tgz
Xdoc.tgz    Xfscl.tgz   Xman.tgz    Xxserv.tgz

bjohnson@BRADMAN ~/xfree
$ gunzip extract.exe.gz

bjohnson@BRADMAN ~/xfree
$ cp extract.exe /bin/

bjohnson@BRADMAN ~/xfree
$ ./Xinstall.sh

После запроса подтверждения XFree86 начнет распаковывать требуемые файлы.

Installing the mandatory parts of the binary distribution
== Extracting /home/bjohnson/xfree/Xbin.tgz ==
== Extracting /home/bjohnson/xfree/Xlib.tgz ==
== Extracting /home/bjohnson/xfree/Xman.tgz ==

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

Checking for optional components to install ...
Do you want to install Xfsrv.tar.gz (font server) (y/n) [y]
== Extracting /home/bjohnson/xfree/Xfsrv.tar.gz ==
Do you want to install Xnest.tar.gz (Nested X server) (y/n) [y]
== Extracting/home/bjohnson/xfree/Xnest.tar.gz ==

После завершения инсталляции необходимо разархивировать в /usr/X11R6/bin файл startup-scripts.tgz из директории, в которую загружались файлы.

bjohnson@BRADMAN ~/xfree
$ cd /usr/X11R6/bin/

bjohnson@BRADMAN /usr/X11R6/bin/
$ tar zxf /home/bjohnson/xfree/startup-scripts.tgz

Вы закончили! Теперь наберите в командной строке /usr/X11R6/bin/startxwin.sh, и вы должны увидеть примерно то же самое, что изображено на рис. 5.3.

Вы сможете найти множество X Window-программ, которые устанавливаются вместе с XFree86 в директории /usr/X11R6/bin. Некоторые другие X Window-пакеты также доступны, но XFree86 для Cygwin - относительно новый продукт. Также можно загрузить оконный менеджер вроде KDE, Gnome, или Window Maker, каждый из которых доступен для Cygwin (См. http://cygwin.com/xfree/).

Windows под Cygwin

увеличить изображение
Рис. 5.3. Windows под Cygwin

Пример из жизни. Использование Unix в среде Windows

Кен работает в компании, разрабатывающей программное обеспечение. Когда он учился в колледже, то преимущественно пользовался Solaris и IRIX, а в этой компании используются только станции Windows 2000. Кену удалось убедить системных администраторов разрешить ему инсталлировать Cygwin, чтобы он мог использовать некоторые полезные средства Unix: bash, diff, sleep, vi, lynx, grep, less, md5sum и NcFTP. Кроме того, он использовал утилиты Cygwin cvs и sshd, чтобы установить безопасное хранилище Concurrent Versions System ( CVS ) для контроля версий кода, над которым он и его отдел работают. Он также использует Rsync, чтобы следить за хранилищем CVS на другом сервере, на случай, если что-то произойдет с его машиной. Интерпретатор Cygwin's Perl и операционная оболочка GNU также дают Кену возможность компилировать Unix-код <Cygwin-ized> в системе Windows. Одно из увлечений Кена - сетевая безопасность. Он надеется взять Unix-утилиты, такие, как nmap, и использовать подсистему Cygwin, чтобы иметь возможность работать с ними в Windows.

Кен понимает, что, скорее всего, системы Windows будут доминировать в корпоративной рабочей среде. Помогая в разработке многих Unix-приложений, которые также могут запускаться в Windows с помощью Cygwin, он надеется построить мост между двумя сообществами так, чтобы средства Windows и Unix могли безболезненно работать в комбинации в одной системе (и без дополнительных затрат).

< Лекция 4 || Лекция 5: 123 || Лекция 6 >
Сергей Хлюкин
Сергей Хлюкин
Россия, Москва, Московский Государственный Открытый Университет, 2007
Игорь Касаткин
Игорь Касаткин
Россия, Москва