Инсталиране на Git на Windows от пакети Cygwin. Какво е Cygwin Cygwin стартира програма в Windows

Тази статия е предназначена за двама
типове хора: за тези, които не разбират
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":
корен:x:0:корен

Ако искате да шифровате паролата си и
не "парола", както направих в моя пример,
напишете скрипт на Perl

#!/usr/bin/perl
chomp ($pass= );
печат $crypt("SA",$pass);

Къде, SA - солта, която ще се използва за криптиране
парола... можете да я направите произволна, но
Тази статия ще бъде извън темата.

Сега редактирайте файла "c:\cygwin\cygnus.bat" -
в него променяме PATH, просто променяйки пътя към
емулатор и пътя до файла login.exe. Да стартираме
файл.

Нека влезем: в моя пример, "root": "парола".
Така че стигнахме до самия емулатор. Аз не
Хареса ми подканата за въвеждане. Нека го променим
- променлива PS1. Отворете (създайте) файла "c:\cygwin\etc\profile"
и напиши там:

# /etc/profile
PROFILE_LOADED=1
PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/usr/local/sbin:$PATH"
деактивиране на DOSDRIVE
деактивиране на DOSDIR
деактивиране на TMPDIR
деактивиране на TMP
експортиране HOSTNAME=тест
PS1="[\u@$HOSTNAME \W]# "
LOGNAME=$ПОТРЕБИТЕЛ
експортиране на ПЪТ PS1 ПОТРЕБИТЕЛСКО ИМЕ

Ето... След това ще влезем отново и всичко ще бъде включено
място и красиво :) Поканата ще бъде: # - стандартна, Linux :)

Това е всичко, първоначалната инсталация е завършена.
Нека да преминем към инсталиране на услуги :)

Стандартната доставка включва туя хуча
услуги. Трябва да ги стартирате така:
/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) Ако по някаква причина нямате
инсталиране на Linux приложение -
просто коригирайте C кода. Може би,
ще успее.. (така компилирах
micq).

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

въпроси? Пишете ми по имейл - ще опитам
помогне...

Разработването на междуплатформени приложения не е лесно. Особено трудно е благодарение на Windows, в който всичко не е като при хората. Тук нямате нито нормален терминал, нито нормални конзолни помощни програми, абсолютно нищо! Отново изправен пред този проблем, реших да опитам Cygwin отново. И познайте какво, оказва се, че всъщност прави Windows нещо, което почти можете да използвате!

Можете да изтеглите инсталатора на Cygwin от тук. Всъщност това не е толкова инсталатор, колкото мениджър на пакети, който при стартиране директно пита кои пакети искате да инсталирате. Момчета! Мениджър на пакети! Под Windows!Инсталаторът създава кеш в директорията, от която ще се стартира. Ето защо, преди да започнете, е по-добре да създадете специална папка на работния плот и да поставите инсталатора в нея.

Какви пакети според мен трябва да бъдат инсталирани:

  • openssh- мастев;
  • inetutils, bind-utils, пинг, ncИ nc6- мастев;
  • wget, къдрица- мастев;
  • питони/или python3— Мисля, че е задължително;
  • vim, gvim— за редактиране на малки файлове няма да е излишно;
  • дифутили, pwgen, разархивирайте, rzync- нека са за всеки случай;
  • gccи/или дрънкане, cmake, gdb- ако е необходимо;
  • екран, tmux, mc- за влюбени;
  • git- под много голямвъпрос, вижте по-долу;

Забележка!За да инсталирате pip в Cygwin, поставете отметка в квадратчето до пакета python-setuptools и/или python3-setuptools. След инсталирането кажете в терминала:

easy_install-2.7 пип

easy_install-3.4 pip

..., в зависимост от версията или версиите на Python, които сте инсталирали.

И така, след като инсталирате Cygwin, можете да отворите терминал:

Момчета! Нормален терминал, който преоразмерява, ви позволява да копирате и поставяте текст и това е всичко! Под Windows!С всички добре познати и познати команди 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 вярно
git config --global gc.auto 256

Но това, за съжаление, не решава проблема напълно. И така, в голям проект командата git status може да се изпълни за 20 секунди. В Linux, в точно същото хранилище, командата се изпълнява незабавно.

Тези, които обичат да работят в конзола, подобна на Linux конзола, могат да инсталират Cygwin, среда, подобна на Unix, където ще бъдат налични стандартни конзолни програми от Linux.

Инсталирането на Cygwin е доста просто. По време на инсталационния процес в един от режимите можете да поставите отметка в квадратчетата отсреща софтуерни пакетикойто искате да инсталирате. Избрах пакети nano, git и още нещо.

След инсталирането на работния плот се появява пряк път на Cygwin за стартиране на средата.

Стартирайте Cygwin от всяка папка

Тъй като използвам TotalCommander, за мен е удобно да стартирам програми веднага от директорията, от която се нуждая. Нека създадем удобен bat файл за стартиране на Cygwin.

Веднага, без много да мислите, копирайте низа „Object“ от свойството на този пряк път в новия файл, който създадохме C:\bin\bash.bat
Пълното съдържание на файла ще изглежда така:

@start "" C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico -

Моля, обърнете внимание, че пътят до exe файла може да е различен за вас. Инсталирах Cygwin в директорията C:\cygwin.
Освен това, ако все още не сте добавили директорията C:\bin към вашата променлива на средата PATH, трябва да го направите.

Настройване на стартирането на Cygwin

След известна работа с Cygwin открих, че въпреки че мога да стартирам Cygwin от всяка директория, като просто напиша думата bash, самата среда за стартиране винаги се отваря в домашната директория на вашия потребител. (Домашната директория е зададена в променливата на средата HOME).

Това не изглежда много удобно, защото ако напиша команда bash, докато съм в директорията D:\xyz, тогава очаквам, че работещият Cygwin също ще бъде в директорията D:\xyz.

Ако обърнете внимание, ще видите, че прекият път на работния плот стартира помощната програма mintty.exe. Веднага разбираме, че трябва да се запознаем със списъка с входящи атрибути за тази команда.
Отворете Cygwin и влезте

Човек мента

След като внимателно проучихме ръководството, ние сме доволни от някои възможности, за които не сме подозирали, а именно: възможността да зададете размера и координатите на прозореца на Cygwin, който да се стартира.

Отворете нашия bat файл и променете съдържанието му на следното:

@start "" C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico --size 120.77 --position -4.0 -

В този случай зададох размера на прозореца на Cygwin, от който се нуждаех, и позицията на външния вид на прозореца (необходима е отрицателна стойност от -4, така че ръбът на прозореца да е извън границата на монитора и да не се вижда).

Сега прозорецът ми винаги ще се показва в удобните за мен координати и няма да се измества с +8 пиксела в x, y при всяко ново стартиране.

Но какво да кажем за директорията за стартиране на Cygwin?

В крайна сметка отиването в желаната директория от домашната ви директория е ужасно неудобно!

Решението е намерено! За да зададем текущата директория при стартиране на Cygwin, можем да използваме скрипта за автоматично стартиране, за да стартираме bash средата.

Така че трябва да подобрим нашия файл bash.bat, така че да създава файл за автоматично стартиране за стартиране на bash конзолата

Стартираме Cygwin, въвеждаме командата „man bash“ и четем документацията в търсене на това, от което се нуждаем. Откриваме няколко опции за имена на файлове за домашната директория на потребителя, които се стартират при влизане в bash.
Файлове, стартирани при влизане в bash:

~/.bash_profile ~/.bash_login ~/.profile

Файлът се стартира при стартиране на bash, без да сте влезли в системата

~/.bashrc

Важна забележка: Стартовият файл ~/.bash_login (или който и да е друг) трябва да бъде написан в UTF-8 кодировка! И не трябва да използва знаци \r. (Например, командата pwd не работеше за мен, когато файлът съдържаше знака \r в края, което е типично за системата Windows).

Както се оказа, извеждането на UTF-8 текст от CMD не е толкова лесно, но е възможно!
Ето пример как се прави това:

Cmd /u /c chcp 65001 | echo някакъв текст > "име на файл"

Нека подобрим нашия файл C:\bin\bash.bat, сега той има съдържанието:

@echo изключен SET файл=.bash_login cmd /u /c chcp 65001 | echo #!/bin/bash > "%HOME%\%file%" cmd /u /c chcp 65001 | echo cd "%CD:\=/%" >> "%HOME%\%file%" @start "" C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico --size 120.77 -- позиция -4,0 -

Веднъж стартирана, bash конзолата изпълнява съдържанието на файла ~/.bash_login. Този файл трябва да е във формат UTF-8. За да направим това, извикваме CMD с флага /u, който ни казва, че стартираната конзола трябва да върне резултата във формат UTF-8.

Както можете да видите, предаваме две команди, разделени с | . Този знак ни позволява да напишем двете команди, от които се нуждаем, на един ред.

Първата команда chcp 65001 задава кодирането на UTF-8 работеща конзола. (За да разберете какво текущо кодиране е зададено в конзолата, просто извикайте командата chcp без параметри.)

Втори отбор ехо текст > "%HOME%\%file%"отпечатва съответния текст във файл с име "%HOME%\%file% ", където имената на променливите се разширяват в пътя към началната директория и името на файла .bash_login.

Моля, обърнете внимание на необичайния достъп до променливата CD, която съдържа текущата директория на cmd конзолата. Ако една променлива обикновено се разширява чрез писане

Тогава в нашия случай използваме нотацията

%CD:\=/%

Това ви позволява незабавно да замените всички наклонени черти в стил Windows \ с наклонени черти в стил Linux / .

Не забравяйте да поставите всички имена на файлове и директории двойни кавички, така че това ще ви позволи да натискате директории, съдържащи интервали.

Поради факта, че се използва UTF-8, този дизайн успешно ви позволява да отваряте Cygwin в директории с руски имена.

По този начин всеки път, когато стартирате командата bash в конзолата, ще се стартира скриптът C:\bin\bash.bat, който ще презапише стартовия файл на bash средата в Cygwin. Сега можем лесно и удобно да стартираме bash конзолата от всяка директория и веднага да стигнем до същата директория в bash конзолата.

Радваме се и се наслаждаваме на резултата!

Нека обобщим

  1. Инсталирахме Cygwin
  2. Създаден файл C:\bin\bash.bat със съдържание @echo off SET file=.bash_login cmd /u /c chcp 65001 | echo #!/bin/bash > "%HOME%\%file%" cmd /u /c chcp 65001 | echo cd "%CD:\=/%" >> "%HOME%\%file%" @start "" C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico --size 120.77 -- позиция -4,0 - (Забележка: пътят C:\bin\ трябва да се съдържа в променливата на средата PATH)
    Благодарение на това постигнахме:
    • стартирайте Cygwin терминал на определена позиция на екрана ( --position опция)
    • стартиране на прозорец с определен размер (параметърът --size)
    • стартирайте Cygwin от всяка директория, като напишете bash в конзолата
    • в същото време стартираният Cygwin се намира в същата директория, от която е стартиран!

Скриптът cygwin.bat се изпълнява от командна линия DOS, инсталира средата Cygwin и стартира bash интерпретатора под Windows. Cygwin върши страхотна работа при настройването на променливите на средата на Unix да съвпадат Windows среда. Например на моята машина влязох в Windows като потребител bjohnson. Когато стартирам Cygwin, той се зарежда като потребител bjohnson по подразбиране.

По-долу има прозорец с някои стандартни Unix команди в Cygwin.


В зависимост от пакетите, които сте инсталирали, можете лесно да стартирате съответните Unix помощни програми. Ако сте потребител на Unix, несъмнено бихте искали Windows да има команда ps за преглед на текущи процеси, без да използвате диспечера на задачите. Ако използвате флага -aW, ще можете да видите Windows процеси, като всички работещи процеси на Cygwin. По-долу е даден списък с процеси на Windows, достъпни чрез изпълнение на командата Cygwin (ps -aW | по-малко).

PID PPID PGID WINPID TTY UID STIME КОМАНДА 3193213 0 0 4291774083 ? 0 31 декември C:\WINDOWS\SYSTEM\KERNEL32.DLL 63753 0 0 4294903543 ? 0 31 декември C:\WINDOWS\SYSTEM\MSGSRV32.EXE 60569 0 0 4294906727 ? 0 31 декември C:\WINDOWS\SYSTEM\MPREXE.EXE 77349 0 0 4294889947 ? 0 31 декември C:\WINDOWS\SYSTEM\RPCSS.EXE 196093 0 0 4294771203 ? 0 31 декември C:\WINDOWS\SYSTEM\mmtask.tsk 191237 0 0 4294776059 ? 0 31 декември C:\WINDOWS\EXPLORER.EXE 237709 0 0 4294729587 ? 0 31 декември C:\WINDOWS\TASKMON.EXE 230713 0 0 4294736583 ? 0 31 декември C:\WINDOWS\SYSTEM\SYSTRAY.EXE 217533 0 0 4294749763 ? 0 31 декември C:\PROGRAMFILES\DIRECTCD\DIRECTCD.EXE 5.1.

Структура на директорията и разрешения за файлове

Cygwin монтира вашия локални дисковев директорията /cygdrive. Това включва секции харддиск, флопи устройства, CD четци, ZIP четци. Нека изпълним командата df на моята машина. Получаваме структура, подобна на тази по-долу.

Bjohnson@BRADMAN $ df Файлова система 1k-блокове Използвани Налични Използване% Монтирани на 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. Променливите на средата Cygwin (но не и Windows) са добавени към директориите /usr/bin, /bin и /usr/local/bin. Директориите от средата на Windows бяха импортирани в средата на Cygwin, за да има достъп до тях.

Cygwin също използва интелигентна система за разрешения за Unix файлове. Но какво може да означава това за всичките ви файлове на Windows? Кой е собственикът на файловете и какви разрешения са зададени по подразбиране? Нека изпълним командата ls -al на няколко файла на Windows, за да получим отговора.

bjohnson@BRADMAN /cygdrive/c/cyginstall $ ls -al total 273 drwxr-xr-x 1 bjohnson unknown 0 13 мар 17:48 . drwxr-xr-x 1 bjohnson неизвестен 0 31 декември 1969 .. drwxr-xr-x 1 bjohnson неизвестен 0 13 март 18:06 принос drwxr-xr-x 1 bjohnson неизвестен 0 13 март 18:03 най-новото -rwxr-xr-x 1 bjohnson неизвестен 218112 13 март 17:48 setup.exe -rw-r--r-- 1 bjohnson неизвестен 60607 13 март 17:54 setup.ini

Cygwin ще се опита да получи информация за собствениците на файла (потребител и група) от Windows. Докато използвах машината Windows контрол 98 с един потребител, всички файлове принадлежаха на мен (bjohnson) с групата, посочена като "неизвестен". Това задава разрешенията за всички директории и изпълними файлове на Windows на 755 (четене и изпълнение за всички, писане само за собственика) и задава всички Windows файловеразрешения 644 (четене за всички, писане само за собственика). производителност chmod командиза Windows файлове се игнорира.