Как я заново открыл для себя Cygwin
Разработка кроссплатформенных приложений – дело непростое. В особенности оно непростое благодаря Windows, в котором все не как у людей. Тут тебе ни нормального терминала, ни нормальных консольных утилит, вообще ничего нет! В очередной раз столкнувшись с этой проблемой, я решил снова попробовать Cygwin. И знаете, оказывается, он действительно делает из Windows нечто, чем почти можно пользоваться!
Скачать инсталлятор Cygwin можно отсюда. На самом деле, это не столько инсталлятор, сколько пакетный менеджер, который при запуске прямо-таки спрашивает, какие пакеты вы хотели бы поставить. Ребята! Пакетный менеджер! Под винду! Инсталлятор создает кэш в каталоге, из которого он будет запущен. Поэтому перед запуском лучше создать какую-нибудь специальную папочку на рабочем столе и положить инсталлятор в нее.
Какие пакеты на мой взгляд необходимо поставить:
- openssh – мастхев;
- inetutils, bind-utils, ping, nc и nc6 – мастхев;
- wget, curl – мастхев;
- python и/или python3 – считаю, что мастхев;
- vim, gvim – для правки небольших файлов лишним не будет;
- diffutils, pwgen, unzip, rzync – пусть будут на всякий случай;
- gcc и/или clang, cmake, gdb – если нужно;
- screen, tmux, mc – для любителей;
- git – под очень большим вопросом, см ниже;
Обратите внимание! Чтобы в Cygwin установить pip, поставьте галочку напротив пакета python-setuptools и/или python3-setuptools. После установки в терминале скажите:
easy_install-2.7 pip
... и/или:
easy_install-3.4 pip
..., смотря какую версию или версии Python вы поставили.
Итак, после установки Cygwin можно открыть терминал:
Ребята! Нормальный терминал, который ресайзится, позволяет копировать и вставлять текст, и вот это все! Под винду! Со всем хорошо знакомыми и привычными командами id, ls, pwd, cat, ssh, scp, и другими. С человеческим окружением – .bashrc, ~/.ssh/config, и так далее. Плюс к этому, в отличие от позорной поделки под названием PowerShell, Cygwin не тащит за собой .NET Framework. Мы даже можем открыть несколько терминалов и переключаться между ними при помощи сочетания Ctr + Tab. Это почти как табы! Понятное дело, старый-добрый Alt + Tab тоже работает.
Выше я не советовал устанавливать Git, и вот почему. Дело в том, что в Cygwin он заметно тормозит. Тут рекомендуют выполнить команды:
git config --global core.preloadindex true
git config --global core.fscache true
git config --global gc.auto 256
Но это, к сожалению, не решает проблему полностью. Так на большом проекте команда git status может выполняться секунд 20. В Linux на точно таком же репозитории команда отрабатывает мгновенно. Git for Windows с включенным флагом core.fscache (который можно поставить прямо в инсталляторе) работает заметно лучше, поэтому советую использовать его.
Еще вы можете обнаружить, что курсор очень трудно разглядеть, когда он находится над черным терминалом. В панели управления можно поменять, как выглядит курсор, расположенный над текстом – это решает проблему.
Также расстроило, что среди доступных пакетов не удалось обнаружить Nmap.
В остальном же Cygwin прекрасен и делает жизнь под Windows почти что сносной. Еще с его помощью можно установить Zsh, Gimp, Emacs, Mutt, Irssi, Texlive, Apache, MySQL и PostgreSQL. Плюс чуть ли не весь KDE можно установить. Правда, на такие эксперименты я не отваживался.