This post comes from the first version of this blog.
Please send me an email if anything needs an update. Thanks!

Każdy, kto kiedykolwiek zetknął się z Linuksem, czy też innymi “Uniksopodobnymi” systemami operacyjnymi na pewno zauważył, że przeniesienie przyzwyczajeń i sposobu myślenia z Windowsa nie jest proste. Sam zmagam się teraz z tym problemem, ponieważ na nowym komputerze, który mam zamiar nabyć w [mam nadzieję] niedalekiej przyszłości, chciałbym po raz kolejny [chyba już trzeci] dać szansę Debianowi na zajęcie pozycji głównego OSa - zwykle po pewnym czasie wracałem do niedających się wyrzucić “wspomnień” okienek, z których, w wersji XP, aktualnie korzystam. “Dysk” C: zamiast /dev/hda0, Panel Sterowania zamiast ustawień w /etc, klikanie myszą zamiast wpisywania poleceń oraz wiele innych “spraw życia codziennego” skutecznie uniemożliwiało mi “przezwyczajenie” się do otwartych rozwiązań. Tym bardziej, że uczelnia przez program MSDNAA daje darmową licencję na produkty Microsoftu… W każdym razie w życiu każdego człowieka, a szczególnie takiego związanego z nowymi technologiami [wszystko się zmienia w bardzo szybkim tempie], w pewnym momencie przychodzi czas na rewolucję, a przynajmniej przygotowanie do niej. Takim właśnie przygotowaniem była instalacja i konfiguracja “prawie natywnego” środowiska Linuksowego… pod Windowsem.

Czego potrzebuję?

Na początku pozwolę sobie opisać jak to zrobiłem, tak, abyś czytając kolejne rozdziały mógł skonfrontować swoje poglądy z moimi wnioskami. Tak więc - do dzieła!

Aby w pełni zastąpić konsolę Windowsa, czyli zrealizować zarówno postulaty wydajności / funkcjonalności jak i wyglądu / szeroko pojętego usability [wybaczcie - jest to jedno ze słów które mnie strasznie “uwiera”, bo jest bardzo pomocne, ale nie mogę znaleźć dla niego dobrego polskiego odpowiednika] będziemy potrzebowali dwóch programów. Będą to:

Kilka słów wprowadzenia - Console2 to narzędzie zastępujące graficznie konsolę Windowsa o wiele ładniejszym i bardziej funkcjonalnym interfejsem. Niektóre z funkcji, które na pewno przydadzą się Tobie, przyszłemu użytkownikowi, a których nie ma w "pakiecie standardowym" [cmd.exe]: Dzięki Console2 będziemy mogli "opakować" niezbyt ładne okno Cygwina w nieco bardziej przyjazny sposób. A czym jest sam Cygwin? Na jego oficjalnej stronie możemy znaleźć dość enigmatyczną informację:
"Cygwin is a Linux-like environment for Windows."
Co to oznacza? Otóż - za pomocą biblioteki cygwin1.dll, która emuluje zachowanie systemów operacyjnych zgodnych ze standardem POSIX, w środowisku Windows zostaje nam udostępniona możliwość uruchamiania dowolnych narzędzi znanych z systemów opartych na jądrze Linuxa. Fajnie? Proste, że fajnie, rzekłbym nawet MEGA. ;] Pomyśl - gcc, vim, cat, ls, tar, ssh oraz masa innych narzędzi staje się dostępna pomimo korzystania z zupełnie innego środowiska! Cygwin zmienia także nasze podejście do struktury systemu, bowiem wewnątrz jego konsoli mamy standardowego "roota", czyli element "/" wraz z wszystkimi partycjami zamontowanymi w drzewie /cygdrive. Byłbym zapomniał - normalne "exeki" także możemy uruchamiać, żeby nie było. Ktoś chce coś jeszcze? Nie? To idziemy dalej. ;]

Jak to zrobić?

Pakiet instalacyjny.

Aby stworzyć opisane wyżej środowisko należy w pierwszej kolejności zaopatrzyć się w pakiety instalacyjne obu programów. Najlepiej będzie, jeśli po prostu podam odnośniki do stron obu projektów, a zatem:

Po ściągnięciu przechodzimy do kolejnego akapitu.

Instalacja.

Console2 jest spakowany w zwykłym archiwum, więc wypakowujemy go gdziekolwiek na dysku - przy okazji polecam wykonanie jakiegoś skrótu, np. na pulpicie, żeby się wygodniej uruchamiało.

Z Cygwinem jest trochę więcej zabawy, ponieważ pakiet instalacyjny to tylko interfejs zawierający informacje o serwerach, z których będą ściągane docelowe dane. Uruchamiamy setup.exe, wita nas ekran informacyjny, który szybko pomijamy klikając przycisk “Dalej”. W kolejnym oknie mamy wybór źródła, z którego będą pobierane pakiety środowiska - polecam zaznaczenie pierwszej, domyślnej opcji “Install from Internet” - wtedy nie będziemy musieli się praktycznie o nic martwić. Ze stoickim spokojem klikamy więc “Dalej” i stajemy przed wyborem katalogu, w którym zostaną umieszczone wszystkie instalowane narzędzia. W moim przypadku jest to “D:\Cygwin”, ale możecie wybrać dowolny inny - nie testowałem tego, ale odradzałbym standardowy wybór większości użytkowników, czyli “C:\Program Files”, ze względu na spację w nazwie. Jeszcze tylko wybór opcji, dla jakich użytkowników będzie dostępna ta instalacja i możemy przejść do kolejnego okna, w którym wybieramy katalog “tempa”, w którym zostanie zachowana konfiguracja aktualnej instalacji Cygwina [potrzebna do ewentualnej aktualizacji / instalacji nowych pakietów]. Z oknem wyboru typu połączenia [skorzystałem z “ftp://ftp.easynet.be”] i serwera każdy powinien sobie raczej poradzić, wybór pakietów proponuję na razie zostawić, więc po kliknięciu któregoś już z kolei “Dalej” nie pozostaje nic innego jak zaczekać chwilę na ściągnięcie wszystkich danych i instalację samego środowiska.

Konfiguracja.

Voila! Cygwin i Console2 zainstalowane. Teraz najważniejsza część - konfiguracja. Nasze linuksowe środowisko jest, kolokwialnie mówiąc, “gołe”, więc wypadałoby zainstalować potrzebne narzędzia. Jeśli w poprzednim akapicie nie posłuchałeś[aś] mnie i wybrałeś[aś] już odpowiednie rzeczy - gratuluję - jeden akapit czytania mniej. ;] Tym jednak którzy posłusznie opuścili ekran wyboru paczek polecam teraz ponowne otwarcie instalatora setup.exe i przejście tych samych kroków, co w powyższym akapicie, ale należy zatrzymać się na ekranie konfiguracji programów [bardzo duża lista rozwijana]. W tym miejscu polecam dogłębne zapoznanie się z pozycjami dostępnymi do zainstalowania, ponieważ jest ich naprawdę sporo. Nie musimy się martwić o zależności między pakietami, ponieważ instalator, jak przystało na Linuksa, sam wykrywa zależności i zaznacza odpowiednie pozycje. Ze swojej strony polecę kilka narzędzi wartych uwagi:

Oczywiście godnych polecenia jest wiele innych pakietów, ale te przywołałem z pamięci jako najczęściej używane. Ostatnią rzeczą jaką musimy zrobić jest "zmuszenie" Console2 do uruchamiania konsoli Cygwina zamiast standardowego interpretera poleceń cmd.exe. Aby zmienić domyślną powłokę należy wybrać z menu pozycje Edit > Settings i w polu "Shell" wprowadzić ścieżkę do pliku cygwin.bat. W tzw. "międzyczasie" polecam pobawienie się ustawieniami tego programu i dostosowanie odpowiednich opcji do własnych gustów graficznych. To wszystko - mamy już w pełni działające środowisko! Gratuluję! ;]

W czym mi to pomogło?

Głównym problemem jaki został rozwiązany dzięki postawieniu Cygwina było to, że nie musiałem się w myślach "przełączać" pomiędzy poleceniami basha i ich windowsowymi odpowiednikami, dzięki czemu praca stała się o wiele bardziej wydajna. Zwykle robiąc coś w konsoli musiałem kombinować, jak kilka prostych i "normalnych" poleceń znanych z konsoli Linuksowej przełożyć na "dialekt" interpretera cmd.exe, a teraz znikła "warstwa abstrakcji" i mogę w pełni wykorzystać moc otwartych rozwiązań. Będzie to genialne rozwiązanie dla ludzi, którzy potrzebują czasem zrobić kilka rzeczy na Windowsie, a nie potrafią się obyć bez poleceń i programów dostępnych w Linuksie.

Inną sprawą jest dostępność klienta SSH w Windows, której to funkcjonalności mi bardzo brakowało. Oczywiście jest PuTTY, ale on nie integruje zwykłej konsoli z funkcjonalnością SSH, tak więc nie ma możliwości interakcji z tym, co mamy na dysku. Jako programista ukierunkowany na strony / aplikacje internetowe bardzo często piszę i testuję projekt na lokalnym serwerze WAMP, a kiedy prace osiągną odpowiedni poziom zaawansowania, przerzucam kod na serwer, do czego bardzo przydaje się SSH - do tej pory korzystałem głównie z WinSCP ze względu na dostęp do graficznego interfejsu. ;]

Co dalej?

Problem został teoretycznie rozwiązany, ale jest to tylko połowiczna "solucja", ponieważ nadal jesteśmy w środowisku obcym, emulujemy odpowiednie funkcjonalności, a nie mamy dla nich natywnego środowiska, które "rozumiałoby" standard systemu operacyjnego, pod jaki były one tworzone. Dlatego po przyzwyczajeniu się do konsoli Linuksa i równoczesnym odzwyczajeniu od uciążliwych rozwiązań dostępnych wyłącznie w Windowsie proponuję przesiadkę na natywną instalację tego systemu [oczywiście mowa o Linuksie ;]] - polecam dystrybucję Debian w wersji "testing" - mamy tu dostęp do o wiele bogatszego zbioru pakietu niż wersja "stable". Za parę tygodni sam będę próbował wykonać ten "manewr" i mam nadzieję, że za chyba już czwartym podejściem w końcu się uda. Oczywiście możecie się już spodziewać porad z tym związanych, bo na pewno pojawią się jakieś problemy. ;]

Podsumowanie.

Trochę się rozpisałem, za co przepraszam tych, którzy lubią krótkie i proste rozwiązania, ale naprawdę w zamierzeniu miałem napisać krótko [jak zwykle ;]]. Po prostu na etapie "dopieszczania" tekstu pojawiło się bardzo dużo moim zdaniem wartych uwagi szczegółów, przez co objętość wpisu urosła prawie trzykrotnie, głównie za sprawą rozdziału o instalacji i konfiguracji. Podzieliłem tekst na odpowiednie rozdziały, więc mam nadzieję, że nikt się specjalnie nie przemęczy i ominie to, co mu niepotrzebne. Cóż, obiecuję, że będę cały czas pracował sposobem wyrażania moich myśli w stylu "do rzeczy, panie kolego" - chyba, że lubicie czytać, wtedy nie ma sprawy, mogą być i dłuższe. ;] Będę wdzięczny za wszelkie opinie w komentarzach, zarówno w kwestii samej jakości tekstu, jak i poziomu merytorycznego oraz ewentualnych błędów [jestem tylko człowiekiem, ale nad tym też pracuję ;]].