Giti installimine Windowsi Cygwini pakettidest. Mis on Cygwin? Cygwin käivitab programmi Windowsis

See artikkel on mõeldud kahele
inimtüübid: neile, kes ei mõista
Linux, kuid ei saa seda arvutisse installida
(põhjuseid on erinevaid), või neile, kes
teab natuke pingviinidest 🙂 ja poleks selle vastu
tutvuge nendega "neutraalselt"
territooriumil, st Win98/NT-l.

Sait on juba kirjeldanud Cygwini kui parimat
võta Linuxi emulaator välja, aga seda ei öeldud
midagi Cygwini installimise, konfigureerimise ja vigade kohta.
Siin ma räägin teile sellest :) Tegelikult, kui
Kui järele mõelda, siis Cygwin pole üldse emulaator, aga
Lihtsalt Linuxi levitamine, kirjutatud Win32 jaoks 😉

Lõpetage rändamine... Läheme aadressile http://www.cygwin.com,
Võtame sealt installiprogrammi setup.exe. Talle
tõmbame juba eelkoostatud
binaarid (exe laiendis), kas sa mäletad rpm?
😉 arendaja veebisaidilt või peeglist.
SOOVITAN seda programmi ainult alla laadida
Installime need failid käsitsi, kuna Kui
installite kasutades setup.exe, gcc ei tööta – joon
teab miks... Võib-olla on arendajad juba sellega arvestanud
see on viga, aga ma ei tea sellest veel...

Niisiis, laadige alla kõik peamised binaarfailid (allikad
te ei pea alla laadima) ja mitu
täiendav - kes keelduks wgetist, ilvesest,
BitchX, Python :) Aga sa ei pea Perli alla laadima... Mul on
seal oli ActivePerl – täiustatud Perli emulaator. Lae alla
saadaval aadressil http://www.acriveperl.com.
Ma ei täheldanud ühtegi tõrget :) (Ma räägin teile, kuidas ma
rakendas seda cygwinis).

Seaded

Ja "grupi" failis samas kaustas "etc":
root:x:0:root

Kui soovite oma parooli krüpteerida, ja
mitte "parool", nagu ma oma näites tegin,
kirjutage Perli skript

#!/usr/bin/perl
chomp ($pass= );
print $crypt("SA",$pass);

Kus, SA - salta, mida kasutatakse krüptimiseks
parool... võid selle juhuslikuks muuta, aga
See artikkel jääb teemast välja.

Nüüd redigeerige faili "c:\cygwin\cygnus.bat" -
selles me muudame PATH, muutes lihtsalt teed
emulaator ja faili login.exe tee. Käivitame
faili.

Logime sisse: minu näites "root": "parool".
Nii jõudsime emulaatori enda juurde. Ma ei
Mulle meeldis sisestusviip. Muudame seda
- muutuv PS1. Avage (loo) fail "c:\cygwin\etc\profile"
ja kirjuta sinna:

# /etc/profile
PROFILE_LOADED=1
PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/usr/local/sbin:$PATH"
tühistada DOSDRIVE
tühistada DOSDIR
tühistada TMPDIR
tühistada TMP
eksport HOSTNAME=test
PS1="[\u@$HOSTNAME \W]#"
LOGNAME=$USER
eksportida PATH PS1 KASUTAJA LOGINIME

Siin... Siis logime uuesti sisse ja kõik läheb sisse
koht ja ilus :) Kutse saab olema: # - standard, Linux :)

See on kõik, esialgne installimine on lõppenud.
Liigume edasi teenuste paigaldamise juurde :)

Tavatarne sisaldab thuja hucha
teenuseid. Peate neid käivitama järgmiselt:
/usr/sbin/inetd -R /usr/sbin/in.ftpd (ftpd näide).

Parem on SSHD ise installida - see töötas pauguga ja
Sõidan SecureCRT-st, legaalne 127.0.0.1 -
täiesti erinev välimus :)

Mis puutub töösse TCP/IP-ga, siis mul pole puudusi
Märkasin :) Kõik ühendab ja toimib nagu
vajalik...

Ja nüüd mõned näpunäited:

1) Juurdepääs KÕIGILE ketastele on avatud. Nii olgu
ettevaatlik. Näiteks draiv d: asub siin -
"/cygdrive/d".

2) Seoses Perliga loo failile sümlink
Näiteks Perl.exe, nii et "ln -s /cygdrive/c/perl/bin/perl.exe
/usr/bin/perl"

3) Kui teil seda mingil põhjusel pole
Linuxi rakenduse installimine -
lihtsalt parandage C-kood. Võib olla,
õnnestub.. (nii ma koostasin
micq).

4) Jälgige Cygwini värskendusi veebisaidil http://www.cygwin.com
- binaarfaile värskendatakse sageli.

Küsimused? Kirjuta mulle e-mailile - ma proovin
appi...

Platvormiüleste rakenduste arendamine ei ole lihtne. Eriti keeruline on see tänu Windowsile, milles kõik pole nii nagu inimestel. Siin pole teil tavalist terminali ega tavalisi konsooliutiliite, mitte midagi! Selle probleemiga taas silmitsi seistes otsustasin Cygwini uuesti proovida. Ja arvake ära, selgub, et see teeb Windowsist tegelikult midagi, mida saate peaaegu kasutada!

Cygwini installiprogrammi saate alla laadida siit. Tegelikult pole see niivõrd installija kui paketihaldur, mis käivitamisel küsib otse, milliseid pakette soovite installida. Poisid! Paketihaldur! Windowsi all! Installer loob vahemälu kataloogis, kust see käivitatakse. Seetõttu on parem enne alustamist luua töölauale spetsiaalne kaust ja installija sinna panna.

Milliseid pakette minu arvates tuleb installida:

  • openssh- masthev;
  • inetutils, bind-utils, ping, nc Ja nc6- masthev;
  • wget, lokk- masthev;
  • püüton ja/või python3— Ma arvan, et see peab olema;
  • vim, gvim— väikeste failide redigeerimiseks ei ole see üleliigne;
  • diffutils, pwgen, lahti pakkima, rzync- olgu need igaks juhuks;
  • gcc ja/või kõlisema, cmmake, gdb- vajadusel;
  • ekraan, tmux, mc- armastajatele;
  • git- all väga suur küsimus, vt allpool;

Märge! Pipi installimiseks Cygwinis märkige ruut paketi python-setuptools ja/või python3-setuptools kõrval. Pärast installimist öelge terminalis:

lihtne_install-2,7 pip

lihtne_install-3,4 pip

... olenevalt sellest, millise Pythoni versiooni või versioonid installisite.

Nii et pärast Cygwini installimist saate avada terminali:

Poisid! Tavaline terminal, mis muudab suurust, võimaldab teil teksti kopeerida ja kleepida ning see on kõik! Windowsi all! Kõigi tuntud ja tuttavate käskudega id, ls, pwd, cat, ssh, scp ja teised. Inimkeskkonnaga – .bashrc, ~/.ssh/config jne. Lisaks ei lohista Cygwin erinevalt häbiväärsest häkkimisest nimega PowerShell .NET Frameworki. Saame isegi avada mitu terminali ja nende vahel vahetada, kasutades kiirklahvi Ctr + Tab. See on peaaegu nagu sakid! Muidugi töötab ka vana hea Alt + Tab.

Eespool ma ei soovitanud Giti installida ja siin on põhjus. Fakt on see, et Cygwinis aeglustub see märgatavalt. Soovitatav on käivitada järgmised käsud:

git config --global core.preloadindex true
git config --global core.fscache true
git config --global gc.auto 256

Kuid kahjuks ei lahenda see probleemi täielikult. Nii et suure projekti puhul saab käsu git status käivitada 20 sekundiga. Linuxis käivitatakse see käsk koheselt samas hoidlas.

Need, kellele meeldib töötada Linuxi konsooliga sarnases konsoolis, saavad installida Cygwini, Unixi-laadse keskkonna, kus on saadaval Linuxi standardsed konsooliprogrammid.

Cygwini installimine on üsna lihtne. Ühes režiimis installiprotsessi ajal saate märkida vastas olevad märkeruudud tarkvarapaketid mida soovite installida. Valisin paketid nano, git ja midagi muud.

Pärast installimist ilmub töölauale Cygwini otsetee keskkonna käivitamiseks.

Käivitage Cygwin mis tahes kaustast

Kuna kasutan TotalCommanderit, on mul mugav käivitada programme kohe vajalikust kataloogist. Loome Cygwini käivitamiseks mugava nahkhiirefaili.

Kopeerige kohe ilma pikema mõtlemiseta string "Object" selle otsetee atribuudist uude loodud faili C:\bin\bash.bat
Faili täielik sisu näeb välja selline:

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

Pange tähele, et exe-faili tee võib teie jaoks olla erinev. Installisin Cygwini kataloogi C:\cygwin.
Samuti, kui te pole veel kataloogi C:\bin oma PATH keskkonnamuutujasse lisanud, peaksite seda tegema.

Cygwini käivitamise seadistamine

Pärast Cygwiniga töötamist avastasin, et kuigi ma saan Cygwini käivitada mis tahes kataloogist lihtsalt sõna bash tippides, avaneb käivituskeskkond ise alati teie kasutaja kodukataloogis. (Kodukataloog määratakse keskkonnamuutujas HOME).

See ei tundu eriti mugav, sest kui ma kirjutan bashi käsu kataloogis D:\xyz, siis eeldan, et ka töötav Cygwin on kataloogis D:\xyz.

Kui pöörate tähelepanu, näete, et töölaua otsetee käivitab utiliidi mintty.exe. Saame kohe aru, et peame tutvuma selle käsu sissetulevate atribuutide loendiga.
Avage Cygwin ja sisenege

Mees piparmündine

Pärast juhendi hoolikat uurimist oleme rahul mõne võimalusega, mida me ei kahtlustanud, nimelt: võimalus määrata käivitatava Cygwini akna suurust ja koordinaate.

Avage meie nahkhiirefail ja muutke selle sisu järgmiseks:

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

Sel juhul määrasin endale vajaliku Cygwini akna suuruse ja akna välimuse asukoha (negatiivne väärtus -4 on vajalik selleks, et akna serv jääks monitori piirist välja ja ei oleks nähtav).

Nüüd kuvatakse minu aken alati mulle sobivates koordinaatides ega nihku x, y iga uue käivitamisega +8 piksli võrra.

Aga kuidas on lood Cygwini käivituskataloogiga?

Lõppude lõpuks on kodukataloogist soovitud kataloogi minek kohutavalt ebamugav!

Lahendus on leitud! Praeguse kataloogi määramiseks Cygwini käivitamisel saame kasutada bashi käivituskeskkonna automaatkäivitusskripti.

Seega peame täiustama oma faili bash.bat, et see looks käivitatava bash-konsooli jaoks automaatkäivitusfaili

Käivitame Cygwini, sisestame käsu “man bash” ja loeme dokumentatsiooni, et otsida vajalikku. Leiame kasutaja kodukataloogi jaoks mitu failinimede valikut, mis käivitatakse bashi sisselogimisel.
Failid käitatakse bashi sisselogimisel:

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

Fail käivitatakse, kui bash käivitatakse ilma sisse logimata

~/.bashrc

Oluline märkus: Käivitusfail ~/.bash_login (või mõni muu) peab olema kirjutatud UTF-8 kodeeringus! Ja ei tohiks kasutada \r märke. (Näiteks käsk pwd ei töötanud minu jaoks, kui faili lõpus oli Windowsi süsteemile omane märk \r).

Nagu selgub, pole UTF-8 teksti väljastamine CMD-st nii lihtne, kuid see on võimalik!
Siin on näide selle kohta, kuidas seda tehakse:

Cmd /u /c chcp 65001 | korda teksti >"failinimi"

Täiustame oma faili C:\bin\bash.bat, nüüd on sellel sisu:

@echo off SET-fail=.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 -- suurus 120,77 -- positsioon -4,0 -

Pärast käivitamist käivitab bash-konsool faili ~/.bash_login sisu. See fail peab olema UTF-8 vormingus. Selleks kutsume CMD-d lipuga /u, mis ütleb meile, et käivitatud konsool peaks tagastama tulemuse UTF-8 formaadis.

Nagu näete, edastame kaks käsku, mida eraldab | . See märk võimaldab meil kirjutada kaks vajalikku käsku ühele reale.

Esimene käsk chcp 65001 määrab kodeeringuks UTF-8 jooksukonsool. (Selleks, et teada saada, milline on konsoolis praegune kodeering, helistage lihtsalt käsule chcp ilma parameetriteta.)

Teine meeskond kajatekst > "%HOME%\%file%" prindib vastava teksti faili nimega "%HOME%\%file% ", kus muutujate nimed on laiendatud kodukataloogi teeks ja failinimeks .bash_login .

Pange tähele ebatavalist juurdepääsu CD-muutujale, mis sisaldab cmd-konsooli praegust kataloogi. Kui muutujat tavaliselt laiendatakse kirjutamise teel

Siis kasutame meie puhul tähistust

%CD:\=/%

See võimaldab teil kohe asendada kõik Windowsi stiilis kaldkriipsud \ Linuxi stiilis kaldkriipsudega / .

Ärge unustage sisestada kõiki failide ja kataloogide nimesid topelt jutumärgid, nii et see võimaldab teil tabada tühikuid sisaldavaid katalooge.

Tänu sellele, et kasutatakse UTF-8, võimaldab see disain edukalt avada Cygwini venekeelsete nimedega kataloogides.

Seega iga kord, kui käivitate konsoolis käsu bash, käivitatakse skript C:\bin\bash.bat, mis kirjutab üle Cygwini bash-keskkonna käivitusfaili. Nüüd saame bash-konsooli lihtsalt ja mugavalt käivitada mis tahes kataloogist ja pääseda kohe bash-konsoolis samasse kataloogi.

Rõõmustame ja naudime tulemust!

Võtame selle kokku

  1. Paigaldasime Cygwini
  2. Loodud fail C:\bin\bash.bat, mille sisu on @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 -- suurus 120,77 -- positsioon -4,0 - (Märkus: tee C:\bin\ peab sisalduma keskkonnamuutujas PATH)
    Tänu sellele oleme saavutanud:
    • käivitada Cygwini terminal määratud ekraaniasendis (-positsiooni valik)
    • käivitage teatud suurusega aken (parameeter --size)
    • käivitage Cygwin mis tahes kataloogist, tippides konsooli bash
    • samal ajal asub käivitatud Cygwin samas kataloogis, kust see käivitati!

Skript cygwin.bat käivitatakse alates käsurida DOS, installib Cygwini keskkonna ja käivitab Windowsi all bash-tõlgi. Cygwin teeb Unixi keskkonnamuutujate sobitamiseks suurepärast tööd Windowsi keskkond. Näiteks logisin oma masinas Windowsi sisse kasutajana bjohnson. Cygwini käivitamisel käivitub see vaikimisi kasutajana bjohnson.

Allpool on aken mõnede standardsete Unixi käskudega Cygwinis.


Olenevalt installitud pakettidest saate hõlpsasti käivitada vastavad Unixi utiliidid. Kui olete Unixi kasutaja, sooviksite kahtlemata, et Windowsil oleks ps-käsk, et vaadata praegu töötavaid protsesse ilma tegumihaldurit kasutamata. Kui kasutate lippu -aW, näete Windowsi protsessid, nagu kõik töötavad Cygwini protsessid. Allpool on loend Windowsi protsessidest, mis on saadaval käsu Cygwin käivitamisel (ps -aW | less ).

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

Kataloogi struktuur ja failiõigused

Cygwin kinnitab teie kohalikud kettad kataloogis /cygdrive. See hõlmab jaotisi kõvaketas, disketiseadmed, CD-lugejad, ZIP-lugejad. Käitame minu masinas käsu df. Saame allolevale sarnase struktuuri.

Bjohnson@BRADMAN $ df failisüsteem 1k-plokid Kasutatud Saadaval Kasutus% Paigaldatud C:\cygwin\bin 2096832 0 2096832 0% /usr/bin C:\cygwin\lib 2096832 0 2096832 0 2096832 lib. 0% /9 0 2096832 0% / c: 2096832 0 2096832 0% /cygdrive/c d: 670496 670496 0 100% /cygdrive/d

Pärast Cygwini installimist käskisin installijal salvestada failid kataloogi C:\cygwin\. Cygwin kasutas seda kataloogi juurpunktina paigaldus failisüsteem . See ühendas C:\cygwin\bin kausta /usr/bin ja C:\cygwin\lib kausta /usr/lib. Cygwini (kuid mitte Windowsi) keskkonnamuutujad on lisatud kataloogidesse /usr/bin , /bin ja /usr/local/bin. Windowsi keskkonna kataloogid imporditi Cygwini keskkonda, et neile juurde pääseda.

Cygwin kasutab Unixi failide jaoks ka nutikat lubade süsteemi. Aga mida see võib tähendada kõigi teie Windowsi failide jaoks? Kes on failide omanik ja millised õigused on vaikimisi määratud? Vastuse saamiseks käivitame mitmel Windowsi failil käsu ls -al.

bjohnson@BRADMAN /cygdrive/c/cyginstall $ ls -al kokku 273 drwxr-xr-x 1 bjohnson unknown 0 13. märts 17:48. drwxr-xr-x 1 bjohnson teadmata 0 31. detsember 1969 .. drwxr-xr-x 1 bjohnson teadmata 0 13. märts 18:06 panus drwxr-xr-x 1 bjohnson teadmata 0 13. märts 18:03 hiljemalt -rwxr-x 1 bjohnson tundmatu 218112 13. märts 17:48 setup.exe -rw-r--r-- 1 bjohnson tundmatu 60607 13. märts 17:54 setup.ini

Cygwin proovib saada Windowsist faili omanike (kasutaja ja rühma) teavet. Sel ajal kui ma masinat kasutasin Windowsi juhtimine 98 ühe kasutajaga, kõik failid kuulusid mulle (bjohnson) grupiga "tundmatu". See seab kõigi Windowsi kataloogide ja käivitatavate failide õigused väärtusele 755 (lugeda ja käivitada kõigi jaoks, kirjutada ainult omanikule) ja seada kõik Windowsi failid load 644 (lugege kõigile, kirjutage ainult omanikule). Esitus chmod käsud Windowsi jaoks faile ignoreeritakse.