Cygwin - Cygwin - Wikipedia

Cygwin
Cygwin logosu.svg
Windows XP altında Cygwin / X dahil olmak üzere Cygwin'i çalıştırmak
Dahil olmak üzere Cygwin'i çalıştırmak Cygwin / X, altında Windows XP
Orijinal yazar (lar)Steve Chamberlain, Cygnus Çözümleri
Geliştirici (ler)Cygnus Çözümleri, Kırmızı şapka, Cygwin projesi gönüllüleri
İlk sürüm18 Ekim 1995; 25 yıl önce (1995-10-18)
Kararlı sürüm
3.1.7-1[1] / 24 Ağustos 2020; 3 ay önce (2020-08-24)
Depo Bunu Vikiveri'de düzenleyin
YazılmışC /C ++
İşletim sistemiMicrosoft Windows
TürPOSIX standart yardımcı programları, POSIX standart kitaplığı, C standart kitaplığı, uyumluluk katmanı
LisansLGPLv3
İnternet sitesiCygwin.com Bunu Vikiveri'de düzenleyin

Cygwin (/ˈsɪɡwɪn/ SIG-kazanmak )[2] bir POSIX uyumlu programlama ve çalışma zamanı ortamı yerel olarak çalışan Microsoft Windows. Cygwin altında, kaynak kodu için tasarlandı Unix benzeri işletim sistemleri derlenebilir ve minimum değişiklikle yerel olarak çalıştırılabilir.

Cygwin kurulum dizini, / bin, / home, / etc, / usr, / var gibi tanıdık dizinlerle Unix benzeri sistemlerin kök dosya sisteminde bulunana benzer bir dizin düzenine sahiptir. Cygwin, yüzlerce komut satırı aracı ve genellikle Unix benzeri bir sistemde bulunan diğer programlarla yükler. Ek olarak, bir paketleme sisteminden birçok uygulama kurulabilir. Terminal emülatörü Mintty varsayılandır komut satırı arayüzü çevre ile etkileşim için sağlanmıştır.

Cygwin, Windows tabanlı uygulamaların yerel entegrasyonunu sağlar. Böylece, Windows uygulamalarını Cygwin ortamından başlatmak ve ayrıca Cygwin araçlarını ve uygulamalarını Windows işletim bağlamında kullanmak mümkündür.

Cygwin iki bölümden oluşur: a dinamik bağlantı kitaplığı (DLL) bir API şeklinde uyumluluk katmanı C standart kitaplığı önemli bir bölümünü sağlamak POSIX API işlevselliği ve kapsamlı bir koleksiyon yazılım araçları ve Unix benzeri bir bak ve hisset.

Cygwin başlangıçta tarafından geliştirilmiştir Cygnus Çözümleri,[3][4] daha sonra tarafından satın alındı Kırmızı şapka (şimdi parçası IBM ), GNU / Linux'u taşımak için alet zinciri Win32 dahil olmak üzere GNU Derleyici Paketi. Kullanılacak tüm araçları yeniden yazmak yerine Win32 çalışma zamanlarında, Cygwin bir POSIX uyumlu çalışma zamanı olarak DLL.[5] Bu ücretsiz ve açık kaynaklı yazılım, altında yayınlandı GNU Daha Az Genel Kamu Lisansı sürüm 3.[6] Bugün Red Hat çalışanları ve diğerleri dahil olmak üzere gönüllüler tarafından sürdürülmektedir.

Açıklama

Cygwin ortamı iki versiyonda sağlanır; tam 64-bit sürüm ve yavaş yavaş kullanımdan kaldırılan bir soyulmuş 32-bit sürüm. Cygwin, aşağıdakileri uygulayan bir kütüphaneden oluşur: POSIX sistem çağrısı API Windows sistem çağrıları açısından, bir GNU geliştirme araç zinciri (dahil GCC ve GDB ) yazılım geliştirmeye ve aşağıdakilere eşdeğer çok sayıda uygulama programının çalıştırılmasına izin vermek için Unix sistemleri. Programcılar birçok Unix, GNU, BSD ve Linux dahil olmak üzere Cygwin'e yönelik programlar ve paketler X Pencere Sistemi, K Masaüstü Ortamı 3, GNOME,[7] Apaçi, ve TeX. Cygwin kuruluma izin verir Inetd, syslogd, sshd, Apaçi ve standart olarak diğer arka plan yordamları Windows hizmetleri Microsoft Windows sistemlerinin Unix ve Linux sunucularını taklit etmesine izin verir.

Cygwin programları, Cygwin'in "kurulumu" çalıştırılarak yüklenir[8] İnternetteki depolardan gerekli programı ve özellik paket dosyalarını indiren program. Belirtildiği gibi, bu kurulum programının iki sürümü vardır, biri Cygwin DLL'nin 32 bit sürümleri ve ilgili uygulamalar için ve biri 64 bit sürümler içindir. Kurulum, programları ve kaynak kodu paketlerini yükleyebilir, güncelleyebilir ve kaldırabilir. Tam bir kurulum 90 GB'ı aşacaktır[9] ancak kullanılabilir yapılandırmalar 1 veya 2 GB kadar küçük bir alan gerektirebilir.

Unix ve Windows sistemleri arasında farklılık gösteren kavramları uzlaştırma çabaları şunları içerir:

  • Unix'in Cygwin'e özgü bir sürümü binmek komutu, Windows yollarının Unix dosya alanına "dosya sistemleri" olarak bağlanmasına izin verir. İlk bağlama noktaları şurada yapılandırılabilir: / etc / fstab, aygıtların yerine Windows yollarının görünmesi dışında, Unix sistemlerine çok benzer bir biçime sahip olan. Dosya sistemleri ikili modda (varsayılan olarak) veya otomatik olarak etkinleştirilen metin modunda monte edilebilir. dönüştürmek arasında LF ve CRLF sonlar (yalnızca, metin veya ikili modu açıkça belirtmeden dosyaları açan programları etkiler).
  • Cygwin 1.7, POSIX için kapsamlı destek sundu yerel ayarlar ve birçok karakter kodlamaları, böylece UTF-8 Unicode kodlama varsayılan hale geldi. Windows dosya adları ve diğer tanımlayıcılar, UTF-16, seçilen karakter kodlamasına otomatik olarak dönüştürülür.
  • pencereler sürücü harfleri özel bir dizine eşleme, örneğin C: olarak görünür / cygdrive / c. / cygdrive önek değiştirilebilir. Formun Windows ağ yolları HOST PAYLAŞ DOSYA eşlendi // HOST / SHARE / DOSYA. Windows yolları doğrudan Cygwin programlarından da kullanılabilir, ancak birçok program bunları doğru şekilde desteklemediğinden bu önerilmez.
  • Tam özellikli / dev ve / proc dosya sistemleri sağlanır. / proc / kayıt kayıt defterine doğrudan dosya sistemi erişimi sağlar.
  • Cygwin, POSIX'i destekler sembolik bağlar, bunları sistemle düz metin dosyaları olarak temsil etmek nitelik Ayarlamak. Cygwin 1.5 onları şu şekilde temsil etti: Windows Gezgini kısayollar, ancak bu, performans ve POSIX doğruluğu nedeniyle değiştirildi. Cygwin ayrıca NTFS'yi de tanır bağlantı noktaları ve sembolik bağlar ve bunları POSIX sembolik bağları olarak ele alır, ancak anlambilimlerinin tam olarak POSIX uyumlu olmaması nedeniyle bunları oluşturmaz.
  • POSIX İşleme için API erişim kontrol listeleri (ACL'ler) desteklenir ve Windows NT ACL sistemiyle eşleşir.[10]
  • Özel formatları / etc / passwd ve / etc / group Windows eşdeğerine işaretçiler içeren sağlanmıştır SID'ler (içinde Gecos alanı ), Unix ve Windows kullanıcıları ve grupları arasında eşlemeye izin verir.
  • çatal bir işlemin kopyalanması için sistem çağrısı tam olarak uygulanır, ancak Windows API ile iyi bir şekilde eşleşmez. Örneğin, yazma üzerine kopyalama optimizasyon stratejisi kullanılamadı.[11][12][13] Sonuç olarak, Cygwin'in çatalı, Linux ve diğerlerine kıyasla oldukça yavaştır. (Bu ek yük genellikle, fork / exec çağrılarla teknik yumurtlamak Windows'a özgü olarak bildirilen işlevler process.h başlık).
  • Cygwin DLL, Unix stilini taklit eden bir konsol sürücüsü içerir. terminal içinde Windows konsolu. Cygwin'in varsayılan kullanıcı arayüzü, bash Cygwin konsolunda çalışan kabuk.
  • DLL ayrıca sözde terminal (pty) cihazlar. Cygwin, bir dizi terminal emülatörleri bunlara dayalı olanlar dahil mintty, rxvt (-unicode ), ve xterm. Bunlar, Unix terminal standartları ve kullanıcı arabirimi kurallarıyla Cygwin konsolundan daha uyumludur, ancak Windows konsol programlarını çalıştırmak için daha az uygundur.
  • Satır bitirme (CRLF / LF) sorunlarını ele almak için Windows ve Unix yolları ve dosya formatları arasında dönüştürme yapmak için çeşitli araçlar sağlanmıştır. DLL'ler bir yürütülebilir dosyanın bağlantılı olduğu vb.
  • Her zaman Cygwin DLL ile bağlantılı olmanın yanı sıra, Cygwin çalıştırılabilir dosyaları normal Windows çalıştırılabilir dosyalarıdır. Bu, Cygwin programlarının tam erişime sahip olduğu anlamına gelir. Windows API ve programların bir platformdan diğerine aşamalı olarak taşınmasına izin veren diğer Windows kitaplıkları. Bununla birlikte, programcıların çakışan POSIX ve Windows işlevlerini karıştırırken dikkatli olmaları gerekir.

Versiyonu gcc Cygwin ile birlikte gelen, Windows DLL'leri oluşturmak için çeşitli uzantılara sahiptir, bir programın bir pencereleme veya konsol modu programı olup olmadığını belirleme, kaynak ekleme vb. varsayılana dahil gcc, ancak 2014 itibariyle çapraz derleyiciler tarafından sağlanır. MinGW-w64 proje.

Cygwin, birçok popüler yazılım parçasını Windows platformuna taşımak için yoğun bir şekilde kullanılmaktadır. Derlemek için kullanılır Güneş Java, LibreOffice ve hatta web sunucusu yazılımı gibi Lighttpd ve Hiawatha.[14]

Cygwin API kitaplığı şu lisans kapsamındadır: GNU Daha Az Genel Kamu Lisansı herhangi bir bağlantıya izin vermek için bir istisna ile sürüm 3 (veya üstü) ücretsiz ve açık kaynaklı yazılım kimin lisansı ile uyumlu Açık Kaynak Tanımı[15] (Özgür Yazılım Tanımından daha az katıdır).

Tarih

Cygwin, 1995 yılında Steve Chamberlain'in bir projesi olarak başladı. Kuğu Windows NT ve 95'in kullanıldığını gözlemleyen mühendis COFF onların gibi nesne dosyası formatı ve bu GNU zaten x86 ve COFF ve C kütüphanesi newlib. Yeniden hedeflemenin mümkün olacağını düşündü GCC ve bir çapraz derleyici Windows üzerinde çalışabilen yürütülebilir dosyalar oluşturmak. Bu pratik oldu ve bir prototip hızla geliştirildi.

Sonraki adım, önyükleme bir Windows sistemindeki derleyici, Unix'in yeterli öykünmesini gerektirir. GNU yapılandırması kabuk komut dosyası koşmak. Bir Bourne kabuğu uyumlu komut yorumlayıcısı, örneğin bash, gerekliydi ve karşılığında bir çatal sistem çağrısı öykünmesi ve standart giriş / çıkış. Windows benzer işlevsellik içerir, bu nedenle Cygwin kitaplığı yalnızca bir POSIX -uyumlu uygulama programlama Arayüzü (API) ve çağrıları düzgün şekilde çevirin ve verilerin özel sürümlerini yönetin, örneğin dosya tanımlayıcıları.

Başlangıçta, Cygwin'e gnuwin32 adı verildi (mevcut ile karıştırılmamalıdır. GnuWin32 proje). İsim, Cygnus'un yaratmadaki rolünü vurgulamak için Cygwin32 olarak değiştirildi. Ne zaman Microsoft ticari markayı tescil ettirmek Win32, sadece Cygwin olmak için 32 düşürüldü.

1996 yılına gelindiğinde, Cygwin'in Windows sistemlerinde barındırılan Cygnus'un gömülü araçlarını sağlamanın yararlı bir yolu olacağı açık olduğundan diğer mühendisler de katılmıştı (önceki strateji kullanmaktı. DJGPP ). Özellikle çekiciydi çünkü bir üç yollu çapraz derleme örneğin ağır bir Sun Microsystems bir Windows-x- oluşturmak için bir iş istasyonuMIPS o zamanlar bilgisayarı kullanmaktan daha hızlı olan çapraz derleyici. 1999'da Cygnus, Cygwin 1.0'ı ticari bir ürün olarak sundu[16] sonraki sürümler piyasaya sürülmemiş olmasına rağmen, bunun yerine devam eden açık kaynak sürümlerine güvenerek kendi başına ilgi çekiyor.

Geoffrey Noer, 1996'dan 1999'a kadar proje lideriydi.[17][18] Christopher Faylor, 1999'dan 2014'ün ortasına kadar proje lideriydi. Corinna Vinschen 2004'ten beri eşbaşkan oldu[19] Faylor Red Hat'ten ayrıldığında ve Faylor'un projeye aktif katılımdan çekildiği 2014 ortasından beri liderlik ediyor.[20]

Özellikleri

Cygwin'in temel paket seçimi oldukça küçüktür (yaklaşık 100 MB[21]), şundan biraz daha fazlasını içeren bash (etkileşimli kullanıcı) ve kısa çizgi (kurulum) kabukları ve bir Unix komut satırından beklenen çekirdek dosya ve metin işleme yardımcı programları. Cygwin'in paket yöneticisinden isteğe bağlı kurulumlar olarak ek paketler mevcuttur ("setup-x86.exe" - 32bit & "setup-x86_64.exe" - 64bit). Bunlar arasında (diğerleri arasında[22]):

Cygwin / X proje, X Pencere Sistemi Bu, grafiksel Unix programlarının kullanıcı arayüzlerini Windows masaüstünde görüntülemesini sağlar. Bu hem yerel hem de uzak programlarla kullanılabilir. Cygwin / X, büyük X pencere yöneticileri, masaüstü ortamları ve uygulamaları dahil olmak üzere 500'den fazla paketi destekler, örneğin:

Düşük seviyeye ek olarak Xlib /XCB X uygulamaları geliştirmek için kitaplıklar, Cygwin ayrıca çeşitli üst düzey ve çapraz platformlarla birlikte gelir GUI dahil çerçeveler GTK + ve Qt.

Cygwin Bağlantı Noktaları proje, Cygwin dağıtımında bulunmayan birçok ek paket sağladı. Örnekler dahil GNOME ve K Masaüstü Ortamı 3 yanı sıra MySQL veritabanı ve PHP komut dosyası dili. Çoğu bağlantı noktası gönüllü bakımcılar tarafından Cygwin paketleri olarak benimsenmiştir ve Cygwin Bağlantı Noktaları artık korunmamaktadır.

Referanslar

  1. ^ Vinschen, Corinna (2020-08-24). "cygwin 3.1.7-1". Cygwin Duyuruları (Mail listesi). Alındı 2020-08-24.
  2. ^ Hall, Larry (2004-09-14). "Re: Nasıl telaffuz edersiniz?". Cygwin (Mail listesi). Alındı 2007-10-10.
  3. ^ "Cygwin projesinin kısa bir tarihi". Cygwin. 2018-02-02. Alındı 2020-01-10.
  4. ^ "Cygwin32: UNIX® Uygulamaları için Ücretsiz Bir Win32 Porting Katmanı". USENIX. 1998-08-03. Alındı 2020-01-10.
  5. ^ "(Çözüldü) Linux Alt Sistemi - Cygwin - MobaXterm". Nasıl Yapılır Geek'ten Teknik Yardım Forumu. 2017-01-24. Alındı 2019-03-15.
  6. ^ "Cygwin kitaplığı artık GNU Daha Az Genel Kamu Lisansı altında kullanılabilir". Kırmızı şapka.
  7. ^ "Cygwin Bağlantı Noktaları". Alındı 2 Mayıs 2015.
  8. ^ Delorie, DJ (2000-04-17). "Yeni Cygwin Net Sürümü". Cygwin (Mail listesi). Alındı 2020-01-10.
  9. ^ "Cygwin'in şu anki tam yükleme boyutu nedir?". StackOverflow. 2018-05-28. Alındı 2020-01-11.
  10. ^ Vinschen, Corinna (2016/01/16). "Güncellenmiş: Cygwin 2.4.0-1". Cygwin Duyuruları (Mail listesi). Alındı 2020-01-11.
  11. ^ "Cygwin SSS: fork () nasıl uygulanır?". Alındı 10 Ekim 2010.
  12. ^ "Cygwin İşlevselliğinin Önemli Noktaları: Süreç Oluşturma". Alındı 24 Aralık 2014.
  13. ^ Blake, Eric (15 Ocak 2009). "Bash uygulamaları doğrudan başlatmaz". Cygwin (Mail listesi). Alındı 10 Ekim 2010.
  14. ^ Cygwin aracılığıyla derlenen Hiawatha Web sunucusunun Windows paketi
  15. ^ "Lisans koşulları nelerdir?". Cygwin. Arşivlendi 2012-07-28 tarihinde orjinalinden.
  16. ^ "Cygwin Unix ve Windows Uygulamalarını Birleştiriyor". Google Kitapları. 1999-11-15. Alındı 2020-01-13.
  17. ^ Delorie, DJ (1999-02-17). "fyi: kim ne yapıyor". Cygwin (Mail listesi). Alındı 2020-01-13.
  18. ^ Noer, Geoffrey (1999-02-19). "Kısmi bir veda ..." Cygwin (Mail listesi). Alındı 2020-01-13.
  19. ^ Faylor, Christopher (2004-03-31). "İşleri değiştirme". Cygwin (Mail listesi). Alındı 2020-01-13.
  20. ^ Faylor, Christopher (2014-07-31). "Christopher Faylor - Projeden çekiliyor". Cygwin (Mail listesi). Alındı 2 Mayıs 2015.
  21. ^ "Cygwin Paketlerinin Yüklenmesi ve Güncellenmesi". Cygwin. Alındı 2020-01-11.
  22. ^ "Cygwin Paket Listesi". Cygwin. Alındı 2020-01-11.

Dış bağlantılar