Tags Posts tagged with "cygwin"

cygwin

Konsola

Użytkownikom systemu Windows często brakuje potężnego narzędzia jakim jest konsola. Czy to z braku walorów programistycznych czy też braku elastyczności w zarządzaniu systemem. Część użytkowników decyduje się na przesiadkę, lecz zmiana systemu roboczego nie zawsze jest możliwa. Czy rozwiązanie jakim jest Cygwin może rozwikłać ten problem?

Czym jest Cygwin?

Cygwin to środowisko dla systemu Windows maksymalnie zbliżone do tego znanego z systemów Unixowych. Jest zgodne ze standardem POSIX, dzięki czemu umożliwia instalację i kompilację większości znanych z Linuksa aplikacji (vim, ssh,mc itd). Dotyczy to również aplikacji wykorzystujących interfejs graficzny (jak Gnome czy KDE). Pozwala na emulację pełnoprawnej powłoki bash, tcsh oraz wielu innych, integrując się z narzędziami oraz funkcjami z systemu Windows.

Cygwin - slider

Mówiąc prościej – Cygwin rozszerza konsolę w Windows o dużą część zalet i funkcjonalności znanych z powłoki bash’a oraz aplikacji GNU, a także umożliwia uruchamianie aplikacji okienkowych w oparciu o serwer Cygwin/X.

Instalacja

Instalacja początkowa, jak i aktualizacja i doinstalowywanie programów odbywa się przez jedno graficzne narzędzie – setup.exe (https://cygwin.com/install.html). Obsługa jest bezproblemowa i sprowadza się do wskazania ścieżki instalacyjnej, wybrania jednego z dostępnych mirrorów, oraz sposobu połączenia z internetem.

Cygwin - instalacja

Głównym elementem instalatora jest okno wyboru pakietów, które chcemy doinstalować. Domyślnie zaznaczone są tylko podstawowe aplikacje z katalogu Base, takie jak bash, grep i tar oraz inne niezbędne instalatorowi programy. Jest to dobry moment, aby zaznaczyć dodatkowe pakiety, które potrzebujemy. Kilka podstawowych narzędzi które nie są domyślnie instalowane:

  • openssh – klient oraz serwer ssh
  • vim – edytor tekstowy
  • nano – inny edytor tekstowy, bardziej przyjazny dla użytkownika
  • mc – edytor wizualny, podobny do Norton Commandera
  • wget – narzędzie do pobierania plików przez http/ftp
  • gcc-g++ – kompilator języka C++ (gcc jest instalowany domyślnie)

Pakiety można odnajdywać poprzez wyszukiwarkę u góry albo w kategoriach. Do wyboru mamy instalację i/lub pobranie źródeł, (np.jeśli chcielibyśmy kompilować przy użyciu własnych ustawień). Instalator sam rozwiązuje też kwestie zależności.

W przypadku, jeśli naszego oprogramowania nie ma na liście, musimy zdać się na ręczną kompilację jako że pliki binarne kompilowane pod Linux/Unix nie są kompatybilne z Cygwinem. Możemy też instalować w oparciu o nieoficjalne repozytoria (np. cygwinports.org), gdzie znaleźć można więcej gotowych pakietów.

To tyle w kwestii instalacji, jeśli w trakcie korzystania ze środowiska zauważymy brak istotnego dla nas programu ponownie uruchamiamy setup.exe i wyszukujemy go na liście.

Integracja z Windows

Cygwin emuluje własną strukturę katalogów zgodną z POSIX, na bazie tej istniejącej w Windows. W katalogu C:\Cygwin (domyślnie) znajdują się podkatalogi znane z systemów Unix, np.

home, usr, var, bin, etc

Oznacza to, że katalog

/home/użytkownik

będzie w rzeczywistości znajdował się w

C:\Cygwin\home\użytkownik

W przypadku partycji, są one automatycznie montowane w katalogu /cygdrive. Przykładowo partycja E: w Windows będzie zamontowana pod katalogiem /cygdrive/e. Dotyczy to też dowolnego innego nośnika, któremu przypiszemy literę partycji w Windows.

Dużą zaletą Cygwina jest możliwość uruchamiania plików .exe i poleceń powłoki bash w jednej konsoli. Oznacza to, że polecenie

ipconfig | grep ipv4

będzie jak najbardziej poprawne.

Zachowane są też dowiązania symboliczne i uprawnienia plików – w przypadku tych drugich bazują one ściśle na uprawnieniach ACL w Windows. Urządzenia /dev/null czy /dev/tty również są poprawnie odwzorowane. Pliki /etc/passwd i /etc/group, choć różnią się nieznacznie od swoich pierwowzorów, zawierają prawidłowe informacje bazujące na zasobach Windows. Podobnie jest z działaniem poleceń passwd czy mount.

Katalog /proc również jest emulowany, choć nie jest tak kompletny jak w natywnym systemie. Mamy dostęp m.in. do cpuinfo, meminfo oraz, co ciekawe, katalogu registry w którym możemy przeglądać zawartość rejestru Windows (w trybie read-only, w celu edycji można użyć narzędzia regtool).

Razem ze standardową instalacją dołączane są również narzędzia, ściśle związane z samym Cygwinem. Jednym z nich jest polecenie cygcheck, które pozwala sprawdzać stan oraz wersję zainstalowanych pakietów (przełącznik –c) lub przeszukiwać repozytoria w poszukiwaniu pakietu (przełącznik p). Narzędzie cygpath z kolei umożliwia konwersję ścieżek między formatami POSIX oraz Windows. Przykładowo polecenie

cygpath –w /home

zwróci scieżkę

C:\cygwin\home (w przypadku domyślnej instalacji)

Pełną listę narzędzi, razem z informacją o dostępnych przełącznikach można znaleźć w dokumentacji projektu: cygwin.com/cygwin-ug-net/using-utils.html.

Istnieje również możliwość uruchamiania usług w tle, przykładowo uruchomienia serwera ssh (sshd) sprowadza się do wykonania polecenia ssh-host-config który spyta m.in. czy chcemy uruchomić proces jako usługę Windows. Po zaakceptowaniu domyślnych ustawień poleceniem net start sshd uruchamiamy serwer ssh i już możemy zalogować się do Cygwina zdalnie, używając danych do logowania naszego konta Windows (poleceniem net stop sshd zatrzymujemy usługę).

Ograniczenia

Rzecz jasna Cygwin nie jest narzędziem doskonałym – istnieje wiele elementów które z różnych powodów nie mogły zostać zaimplementowane. Przykładowo z poziomu konsoli cygwina nie możemy poleceniem kill, kończyć pracy procesów tworzonych przez inne aplikacje. Podobnie jest w przypadku montowania katalogów – Cygwin nie ma możliwości montowania partycji o systemach plików innych, niż te wspierane natywnie przez Windows. Ponadto wydajność uruchamianych aplikacji będzie zdecydowanie wolniejsza niż gdyby były one uruchamiane natywnie. Nie jest to różnica widoczna w typowym użytkowaniu, ale w przypadku dużych aplikacji może być już znacząca.

Dla kogo jest ten produkt?

  • dla programistów portujących aplikacje POSIX na Windows
  • dla programistów skryptów bash/tcsh/awk/ etc
  • dla osób preferujących aplikacje GNU, edytory konsolowe
  • dla osób chcących korzystać z ulubionych aplikacji linuksowych na Windowsie

Komu (osobiście) odradzam instalację Cygwina:

  • osobom które szukają narzędzia konsolowego, pozwalającego zarządzać systemem w stopniu w jakim ma to miejsce w systemach uniksowych
  • osobom oczekującym wydajności uruchamianych aplikacji zbliżonej do natywnej

Alternatywy

Jeżeli możliwości Cygwina są dla nas niezadowalające – można sięgnąć do alternatyw

gnuwin32

Jeśli potrzebujemy jedynie kilku aplikacji takich jak wget, grep czy awk prekompilowanych na platformę Windows a nie pełnoprawnej konsoli bash’a – nie musimy zaprzęgać do pracy Cygwina. gnuwin32 to projekt zajmujący się portowaniem aplikacji opartych na licencji GNU i podobnych na platformę Windows. Pełna lista dostępnych aplikacji znajduje się na stronie projektu (http://gnuwin32.sourceforge.net)

CoLinux

CoLinux (z ang. Cooperative Linux) to specjalna wersja jądra Linux która może być uruchamiana „obok” systemu Windows. Jej zaletą jest dużo mniejsze wykorzystanie zasobów niż systemy w pełni zwirtualizowane (np. VirtualBox czy VMware) oraz wydajność bliska natywnej. Ponaddto, w odróżnieniu od Cygwina mamy do dyspozycji pełnoprawny system GNU/Linux pod postacią niemal dowolnej dystrybucji. Komunikacja sieciowa obdywa się poprzez mostek sieciowy (bridge) lub przez Windows API (slirp, mniej wydajne). Istnieje również możliwość korzystania z aplikacji okienkowych poprzez serwer VNC (dzięki zestawieniu wirtualnego połączenia punkt-punkt działa to dużo wydajniej niż przy połączeniu przez fizyczną sieć). Rozwiązanie może przypaść do gustu osobom dla których Cygwin nie emuluje konsoli w dostatecznym stopniu oraz nie potrzebują narzędzia integrującego się z systemem Windows (coLinux pracuje „obok” systemu Windows wobec czego nie ingeruje w jego pracę).

przez -
0 478
Cygwin

Po bardzo długim okresie istnienia wersji 1.5.25, programiści pracujący przy Cygwinie, w końcu wydali wersję, oznaczoną numerem 1.7.1. W stosunku do poprzedniczki wnosi bardzo wiele zmian, przez co jest zalecane dokładne zapoznanie się Przewodnikiem użytkownika.

Najważniejsze zmiany, jakie zaszły:

  • Tabela montowań nie jest więcej przetrzymywana w rejestrze. Od teraz znajduje się w /etc/fstab i /etc/fstab/$USER. Warto zajrzeć na stronie cygwin.com.
  • Wsparcie dla nazw ścieżek większych niż 260 znaków. Parametr PATH_MAX został zwiększony do 4096, ale Cygwin będzie wspierać dłuższe ścieżki, do 32767 znaków Unikodu, jak w Windows
  • Różne instalacje Cygwina mogą istnieć na jednej maszynie, jeżeli są trzymane w osobnych katalogach
  • Wsparcie dla IPv6
  • Domyślne kodowanie ustawione jest na UTF-8, ale inne znaki są wspierane poprzez ulepszone wsparcie międzynarodowościowe. Zobacz tutaj.
  • Wsparcie dla nowych metod identyfikacji, które przypuszczalnie ulepszają zmianę zawartości użytkownika bez hasła
  • Koniec wsparcia dla Windows 95, Windows 98 i Windows Me.

Ważna informacja dla tych, co aktualizują z wersji 1.5.25. Autorzy zalecają upgrade z nowej wersji setup.exe dostępnej na stronie domowej programu.

Opcja przenoszenia tabeli montowań z rejestru do /etc/fstab działa automatycznie tylko dla systemowych punktów montowań. Punkty montowań użytkownika muszą zostać przeniesione ręcznie, używając skryptu /usr/bin/copy-user-registry-fstab.

Polecane

Jesień Linuksowa

1 1180
Polska Grupa Użytkowników Linuksa ma zaszczyt zaprosić na konferencję Jesień Linuksowa 2017, która odbędzie się w dniach 22 – 24 września 2017 roku. Jako...