Jakie są praktyczne różnice między Interix a Cygwin?

14

Wydaje się, że zarówno Interix, jak i Cygwin zapewniają środowisko użytkownika podobne do Uniksa w systemie Windows. Jakie są praktyczne różnice między nimi, na przykład:

  • Unikalne „odczucie”
  • Występ
  • Dostępność pakietu / łatwość kompilacji losowego oprogramowania pobranego z Internetu
  • Integracja z aplikacjami i narzędziami Windows
  • Integracja / kompatybilność z maszynami wirtualnymi (np. Czy Interix i maszyna wirtualna Ubuntu mogą współużytkować ten sam „katalog domowy”)
  • Rozmiar bazy użytkowników / poziom wsparcia społeczności

Jedną z różnic, o których wiem, jest to, że Interix wymaga systemu Windows 7 Enterprise lub Ultimate Edition; Cygwin będzie działał na wszystkim.

ithinkihaveacat
źródło

Odpowiedzi:

7

Wcześniej korzystałem z Windows SFU tylko w systemie Windows 2008, ale sądzę, że jest oparty na Interix. Czasami grałem z cygwinem, ale nie w dużej ilości, więc proszę, popraw mnie, jeśli powiem coś wyraźnie złego.

  • Uniksowy charakter: Interix wygrywa ten. Środowisko wydaje się znacznie bardziej „kompletne”. Nie jestem pewien, jak to ująć. Interix działa obok podsystemu win32, gdzie cygwin działa na nim. Tak więc interix jest „obywatelem pierwszej klasy” w jądrze jądra systemu Windows. Rzeczy takie jak psi dfdziałają dobrze.
  • Wydajność: nie wykonując żadnych większych testów wydajności, sądzę, że Interix też to wygrywa. Znowu działa na niższym poziomie. Nie używasz tylko aplikacji Win32 z dołączoną biblioteką DLL kompatybilną z POSIX.
  • Pakiety / losowe oprogramowanie: Cygwin wygrywa to z dwóch powodów. Po pierwsze, cygwin jest znacznie lepiej znany. Wiele oprogramowania Unixy będzie obsługiwać jego dziwactwa. Możesz również bardzo łatwo zainstalować rzeczy z instalatora GUI. Interix (jak sądzę) nie ma w sobie czegoś takiego. Jasne, możesz coś pobrać, skompilować za pomocą gcc (co, jak sądzę, możesz wstępnie zainstalować) i modlić się, aby działało, ale to trochę jak przeniesienie oprogramowania do dowolnego innego losowego wariantu Uniksa (takiego jak Solaris lub AIX) - niektóre wszystko będzie działać, inne będą próbowały odgryźć twoją nogę i mordować twoje dzieci.
  • Integracja z aplikacjami i narzędziami Windows: Szczerze mówiąc, oba są do bani. Jeśli masz, powiedzmy, serwer Apache działający w cygwin lub Interix, to na pewno będzie on mógł komunikować się przez TCP z programami Win32, ale to w miarę możliwości. Od wewnątrz interix, wierzę, że możesz zabijać programy Win32 i wyświetlać je za pomocą ps, nie jestem pewien, czy możesz to zrobić z cygwin. W obu przypadkach możesz użyć menedżera zadań Windows do zabijania rzeczy.
  • Integracja z maszynami wirtualnymi: adresowanie przykładu udostępniania katalogu domowego, a następnie tak. Możesz użyć do tego samby i uważam, że NFS działa również na Interixie dla czegoś bardziej uniksowego. Nie znajdziesz jednak żadnych ładnych graficznych interfejsów użytkownika ani niczego, co byłoby dla Ciebie przydatne. Zarówno cygwin, jak i Interix umożliwiają dostęp do zwykłych systemów plików.
  • Rozmiar bazy użytkowników: Cygwin wygrywa tutaj, powiedziałbym. Bardzo trudno było znaleźć rzeczy, które zostały przetestowane i opracowane do pracy na Interixie, gdzie jak większość rzeczy open source zdawało się wspierać cygwin jako platformę kompilacji.

Jeśli masz kopię systemu operacyjnego Windows, która będzie obsługiwać Interix (jak już wspomniałeś, edycję Enterprise, Ultimate lub Server Server), nie zaszkodzi dać jej szansę. Jest to bardzo kompletne środowisko do odczuwania. Cygwin, jak powiedziałeś, działa na wszystkim i jest lepiej znany i lepiej obsługiwany, ale czuję się trochę jak brudny hack. Jednak niektórzy ludzie używają go regularnie.

Andrzej
źródło
Jeśli chodzi o pakiety, warto spróbować prefiksu Gentoo dla Interix
Tobias Kienzler,
1
Przechodząc do 2015 r., Odpowiedź staje się teraz po prostu „cygwin jest nadal dostępny i obsługiwany, podczas gdy Interix (inaczej Usługi dla Unixa, czyli Podsystem dla aplikacji opartych na Uniksie), jest zaprzestany”
adib
3

/ * meta note - Nienawidzę, że komentarze są tak krótkie * /

W większości zgodziłbym się z andrews z kilkoma komentarzami. Zamieniłem wiele systemów uniksowych na SUA / SFU (nie, nie są one takie same, ale są zamknięte) pod Windows.

  • wydajność - SUA jest znacznie szybsza niż usługi dla unixa, ale SFU też nie było garbem, oba są zwykle szybsze niż cygwin (ale nie zawsze)
  • integracja - integracja to sedno SFU / SUA i jest wiele dokumentów na temat tego, co możesz, a czego nie możesz zrobić na stronie technet. Cygwin został zaprojektowany do uruchamiania komendy * nix w systemie Windows - aby nie współpracować z 2. Zobacz składniki interoperacyjności Unix / Linux w systemie Windows (SUA, IdMU, NFS itp.)
  • baza użytkowników - myślę, że jest więcej działających, obsługiwanych rozwiązań po stronie interixa niż po stronie cygwina i znacznie mniej problemów ze zgodnością niż po stronie cygwina, patrz http://www.suacommunity.com/ (magazyn narzędzi). Cygwin prawdopodobnie ma więcej ogólnych instalacji, ponieważ jest dobry dla rozwiązania „Potrzebuję powłoki uniksowej” Cygwin uruchamia polecenia, SUA to środowisko uniksowe, które jest równorzędne z oknami.
Jim B.
źródło
1

Nie mogę skomentować odpowiedzi JimB, więc poradzę sobie tutaj, w szczególności punkt dotyczący integracji z systemem Windows. Cygwin oparty na Win32 zamiast działać we własnym podsystemie, choć wolniejszy, zapewnia znacznie lepszą integrację z Windows. Pozwala nawet na używanie interfejsów API Windows i UNIX w tym samym programie, co umożliwia takie rzeczy jak serwer Cygwin X lub terminal mięty.

„Ps” Cygwina wyświetla listę procesów Windows, jeśli dasz jej opcję -W, a „zabij -f” je zabije. Programy systemu Windows można wywoływać z poziomu Cygwin i podłączać razem z programami Cygwin przy użyciu wszystkich zwykłych mechanizmów, takich jak potoki. (Nie wiem, czy to możliwe w Interix.)

Obsługiwane są ścieżki w stylu Windows, zarówno z ukośnikami do przodu, jak i do tyłu. Cygwin 1.7 ustawił UTF-8 jako domyślny zestaw znaków, a nazwy plików UTF-16 systemu Windows są automatycznie tłumaczone, dlatego nazwy plików w dowolnym języku są poprawnie wyświetlane w Cygwin. Nie wiem, co robi tutaj Interix, ale nie znalazłem żadnych dowodów na to, że obsługuje Unicode.

Inne funkcje integracji obejmują narzędzie „cygstart” do otwierania pliku tak, jakbyś kliknął go dwukrotnie w Eksploratorze, oraz urządzenie / dev / clipboard do uzyskiwania dostępu do schowka Windows.

ak2
źródło
3
W jaki sposób zapewnia „znacznie lepszą integrację z systemem Windows”? „Pozwala nawet na używanie interfejsów API Windows i UNIX w tym samym programie” - to samo dotyczy Interix; zobacz to na własne źródło; slajd 37, „Procesy w trybie mieszanym”, który ma punkt „Wynikowy proces w trybie mieszanym może wykonywać zarówno połączenia SUA, jak i Windows API w tym samym procesie”
user314104
1

Pozwól, że podzielę się swoimi doświadczeniami z instalowaniem Interix dla Windows 7.

Nasza podróż zaczyna się od niejasnej strony systemu Windows Server 2008.

Tutaj odkryjesz, że nie jest już nawet nazywany Interix, ale Podsystem dla aplikacji opartych na Uniksie lub SUA . Następnie z komentarza użytkownika zauważysz, że SUA jest dostępna tylko w systemie Windows 7 Ultimate lub Enterprise. Nigdzie nie wspomniano o tym w artykule. Po zainstalowaniu „podsystemu” zdasz sobie sprawę, że w menu Start są to tylko 2 skróty.

sua

Teraz dochodzisz do prawdziwego zła. Kliknij skrót do pobierania, aby przejść do strony pobierania.

stary

Tutaj mamy 3 dostępne pliki do pobrania. Pliki te mają ponad 400 MB, a od tego momentu mają ponad 4 lata . Ponadto nie mamy żadnych opcji pobierania niestandardowych pakietów, niektórych części itp. Uświadomisz sobie, że ten link jest w rzeczywistości dla systemu Vista, a nie dla systemu Windows 7, i będziesz musiał przeszukać Internet, aby znaleźć stronę systemu Windows 7 . W tym momencie się poddałem.

Cygwin

Wejdź na cygwin.com . Pobierz cygwin.com/setup-x86.exe . Ten plik ma rozmiar 714 KB . Uruchom podstawową instalację, a zobaczysz, że zajmuje to około 2 minut .

czas

Następnie możesz ponownie użyć instalatora dla wielu innych pakietów zgodnie z własnymi preferencjami. Morał tej historii jest to, że Cygwin dba o użytkownika .

Steven Penny
źródło
Pozwól, że zrozumiem cię poprawnie - ponieważ nie było potrzeby zmiany instalatora, aby uruchomić wersję Uniksa, która jest dostarczana z Win 7, co w jakiś sposób oznacza brak opieki - oraz fakt, że Cygwin faktycznie pozwala ci pobierać utwory (możesz wtedy muszę wrócić i zdobyć więcej) czy to jakaś zaleta? Z pewnością ostatnia decyzja o usunięciu składników systemu UNIX z systemu Windows jest znakiem, że użytkownicy albo nie uruchamiają systemu UNIX pod Windows (najprawdopodobniej IMHO), albo że jakoś ich to nie obchodzi, ale tak naprawdę tego nie widzę.
Jim B
@JimB To nie „przychodzi” z Windows 7. Myślałem, że mój post to wyjaśnił. Jest dostępny tylko dla Win7 ultimate i musisz go pobrać. Plus pobieranie ma 4 lata. W społeczności oprogramowania jest to całe życie i pokazuje wyraźny brak kierunku / inicjatywy ze strony Microsoft.
Steven Penny,
3
pochodzi z systemu Windows, to, co pobierasz, to komenda unix korzystająca z podsystemu. Ponieważ niektóre polecenia w Linuksie mają ponad 40 lat, nie jestem zaskoczony, że nie trzeba było ich przepisywać (i według twojego standardu nikt nie używa Linuksa ani Uniksa już od dziesięcioleci). Nowe narzędzia i polecenia są dodawane do społeczności SU na suacommunity.com/tool_warehouse.htm
Jim B
2
Co dziwne, musiałem przejrzeć trochę kodu i tak - to ten sam kod sprzed 40 lat - zgadnij, że ci ludzie w GNU robią coś okropnie nie tak - a może - może - nie ma potrzeby zmieniać czegoś, co nie jest zepsuty
Jim B
0

Unikalne „odczucie” jest dość subiektywne. Mój głos dotyczy CygWin, ponieważ ma on serwer CygWin / X Xwindows ze wszystkimi niezbędnymi funkcjami. SFU otrzymało podstawowe narzędzia X11, ale było za mało i za późno. Wiele (w tym ja) zostało wprowadzonych do CygWin przez potrzebę posiadania serwera X11. Pod względem kompletności CygWin jest również lepiej pozycjonowany, ponieważ jest oprogramowaniem typu open source i jest do niego przeniesione wiele programów licencjonowanych GNU lub GPL. Widziałem kilka komercyjnych produktów dla CygWin, podczas gdy widziałem tylko jeden produkt wymagający usług UNIX dla Windows NT i od tego czasu żaden. YMMV.

Dostępność pakietujest wyraźną wygraną dla CygWin, na którą wpływa kilka czynników: - niższy koszt wejścia: „dowolny Windows” z CygWin vs. licencja klasy serwerowej dla SFU / SUA. Niektóre funkcje są dostępne w wersjach pulpitu systemu Windows, ale w droższych odmianach i bez komponentów serwera; - open source vs. zamknięte źródło i, co ważniejsze, publicznie dostępna dokumentacja. W przeszłości nawet lista poleceń i udostępnione interfejsy API były dostępne tylko dla subskrybentów MSDN i niewiele lub brakowało informacji na stronie Microsoft. Natomiast zestaw narzędzi GNU był dobrze udokumentowany i dostępny zarówno w Internecie, jak i jako strony podręcznika; - zmiany nazewnictwa i implementacji są mylące. Wczesne wersje korzystały z zestawu narzędzi MKS, który został później porzucony.

Wydajność - można argumentować, że Interix jest bliżej jądra i dlatego cieszy się krótszą ścieżką uruchamiania kodu. Prawdziwe pytanie brzmi: ile i czy to ma znaczenie? W przypadku większości programów różnica wynosi kilka procent i jest nieistotna. Oczywiście można przywołać sztuczny przykład z ciężkimi wejściami / wyjściami. Wolałbym umieścić takie obciążenia na macierzystym systemie UNIX, ponieważ byłoby to szybsze niż zarówno rodzime dodatki do systemu Windows, jak i dodatki do systemu UNIX na Windows. Wielu migrowało z Windowsa do UNIXa wraz ze wzrostem obciążenia, podczas gdy nie znam żadnego przykładu konwersji z CygWin na Interix (lub odwrotnie). Poszukiwana jest kompatybilność z UNIX, a nie wydajność UNIX, dlatego umieściłem ją na końcu listy.

Goldie
źródło
2
Pod względem wydajności, Interix faktycznie wygrywa tutaj; wiele rzeczy tradycyjnie implementowanych jako syscalls * nix (jak fork ()) to kludges implementowane na Win32 w Cygwin. Win32 nie ma żadnego pojęcia fork (), ale Interix (i NT). Cygwin ma z tym problem - uzyskanie dokładnie przestrzeni adresowej dla fork () - i to prowadzi do poważnych problemów z wydajnością. Ktoś na pewno się zdenerwuje z powodu linku zawierającego więcej niż ten komentarz, ale oto on, prosto z kranu .
user314104