Cygwin - Cygwin

Cygwin
Cygwin logosu.svg
Cygwin X11 köksüz WinXP.png
Windows XP altında Cygwin/X dahil olmak üzere Cygwin'i çalıştırmak
Orijinal yazar(lar) Steve Chamberlain, Cygnus Çözümleri
Geliştirici(ler) Cygnus Solutions , Red Hat , Cygwin proje gönüllüleri
İlk sürüm 18 Ekim 1995 ; 25 yıl önce ( 1995-10-18 )
kararlı sürüm
3.2.0  Bunu Vikiveri'de düzenleyin / 29 Mart 2021 ; 4 ay önce ( 29 Mart 2021 )
depo Bunu Vikiveri'de düzenleyin
Yazılmış C / C++
İşletim sistemi Microsoft Windows
Tip POSIX standart yardımcı programları , POSIX standart kitaplığı , C standart kitaplığı , uyumluluk katmanı
Lisans LGPLv3
İnternet sitesi cygwin .com Bunu Vikiveri'de düzenleyin

Cygwin ( / s ɪ ɡ w ɪ n / SIG -win ) bir olan POSIX uyumlu bir programlama ve çalıştırma ortamı o doğal üzerinde çalışır Microsoft Windows . Cygwin altında, Unix benzeri işletim sistemleri için tasarlanmış kaynak kodu , minimum değişiklikle derlenebilir ve yürütülebilir.

Cygwin kurulum dizini, /bin, /home, /etc, /usr, /var gibi tanıdık dizinlerle Unix benzeri sistemlerin kök dosya sistemine benzer bir dizin düzenine sahiptir. Cygwin, Unix benzeri bir sistemde yaygın olarak bulunan yüzlerce komut satırı aracı ve diğer programlarla birlikte kurulur. Ek olarak, bir paketleme sisteminden birçok uygulama kurulabilir. Terminal öykünücüsü Mintty , ortamla etkileşim kurmak için sağlanan varsayılan komut satırı arabirimidir .

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: POSIX API işlevselliğinin önemli bir bölümünü sağlayan bir C standart kitaplığı biçiminde bir API uyumluluk katmanı olarak bir dinamik bağlantı kitaplığı (DLL) ve bir Unix sağlayan kapsamlı bir yazılım araçları ve uygulamaları koleksiyonu -görünüm ve his gibi .

Cygwin, GNU Kısıtlı Genel Kamu Lisansı sürüm 3 altında yayınlanan ücretsiz ve açık kaynaklı bir yazılımdır . Başlangıçta, Linux araç zincirini Win32'ye taşımak için daha sonra Red Hat (şimdi IBM'in bir parçası ) tarafından satın alınan Cygnus Solutions tarafından geliştirilmiştir. GNU Derleyici Paketi dahil . Cygwin , Win32 çalışma zamanı ortamını kullanmak için araçları yeniden yazmak yerine , dinamik bağlantı kitaplığı (DLL) biçiminde POSIX uyumlu bir ortam uyguladı .

Açıklama

Cygwin ortamı iki versiyon halinde sunulmaktadır; tam 64 bit sürüm ve yavaş yavaş aşamalı olarak kullanımdan kaldırılan 32 bit sürüm. Cygwin, Windows sistem çağrıları açısından POSIX sistem çağrısı API'sini uygulayan bir kitaplıktan, yazılım geliştirmeye izin veren bir GNU geliştirme araç zincirinden ( GCC ve GDB dahil ) ve Unix sistemlerindekilere eşdeğer çok sayıda uygulama programının çalıştırılmasından oluşur . Programcılar , X Window System , K Desktop Environment 3 , GNOME , Apache ve TeX dahil olmak üzere birçok Unix, GNU, BSD ve Linux programını ve paketini Cygwin'e taşıdılar . Cygwin , Microsoft Windows sistemlerinin Unix ve Linux sunucularını taklit etmesine izin vererek , inetd , syslogd , sshd , Apache ve diğer arka plan programlarının standart Windows hizmetleri olarak kurulmasına izin verir .

Cygwin programları, gerekli programı ve özellik paketi dosyalarını İnternet'teki depolardan indiren Cygwin'in "kurulum" programı çalıştırılarak kurulur. 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 diğeri 64-bit sürümleri için. Kurulum, programları ve kaynak kod paketlerini kurabilir, güncelleyebilir ve kaldırabilir. Tam bir kurulum, 90 GB'den fazla sabit disk alanı alacaktır, ancak kullanılabilir yapılandırmalar 1 veya 2 GB kadar az bir alan gerektirebilir.

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

  • Unix mountkomutunun Cygwin'e özgü bir sürümü, Windows yollarının Unix dosya alanında "dosya sistemleri" olarak kurulmasına izin verir. İlk bağlama noktaları /etc/fstab, aygıtların yerine Windows yollarının görünmesi dışında, Unix sistemlerine çok benzer bir biçime sahip olan içinde yapılandırılabilir . Dosya sistemleri, ikili modda (varsayılan olarak) veya LF ve CRLF sonları arasında otomatik dönüştürmeyi sağlayan (yalnızca metin veya ikili modu açıkça belirtmeden dosyaları açan programları etkileyen ) metin modunda monte edilebilir .
  • Cygwin 1.7 , UTF-8 Unicode kodlamasının varsayılan hale geldiği POSIX yerel ayarları ve birçok karakter kodlaması için kapsamlı destek sundu . UTF-16 olarak kodlanan Windows dosya adları ve diğer tanımlayıcılar, seçilen karakter kodlamasına otomatik olarak dönüştürülür.
  • , Windows sürücü harfleri örnek yüzden, özel bir dizine harita C:olarak görünür /cygdrive/c. Ön /cygdriveek değiştirilebilir. Formun Windows ağ yolları \\HOST\SHARE\FILEile eşlenir //HOST/SHARE/FILE. Windows yolları doğrudan Cygwin programlarından da kullanılabilir, ancak birçok program bunları doğru şekilde desteklemez, bu nedenle bu önerilmez.
  • Tam özellikli /devve /procdosya sistemleri sağlanmaktadır. /proc/registrykayıt defterine doğrudan dosya sistemi erişimi sağlar.
  • Cygwin, POSIX sembolik bağlantılarını destekler ve bunları sistem özniteliği seti ile düz metin dosyaları olarak temsil eder . Cygwin 1.5, bunları Windows Gezgini kısayolları olarak temsil etti , ancak bu, performans ve POSIX doğruluğu nedeniyle değiştirildi. Cygwin ayrıca NTFS bağlantı noktalarını ve sembolik bağları tanır ve bunları POSIX sembolik bağları olarak ele alır, ancak anlambilimleri tam olarak POSIX uyumlu olmadığı için bunları oluşturmaz.
  • POSIX işlemek için API erişim kontrol listelerini (ACL) desteklenir ve Windows NT ACL sistemine haritalar edilir.
  • Özel formatlar /etc/passwdve /etc/group, Windows eşdeğer işaretçileri içerdiğini sağlanmaktadır Sıd'lerin (içinde GECOS alanda Unix ve Windows kullanıcıları ve grupları arasında eşleme için izin).
  • Çatal bir süreç çoğaltarak için sistem çağrısı tam olarak uygulanması, ancak Windows API iyi eşleşmiyor. Örneğin, yazma üzerine kopyala optimizasyon stratejisi kullanılamadı. Sonuç olarak, Cygwin'in çatalı, Linux ve diğerlerine kıyasla oldukça yavaştır. ( Fork/exec tekniğinin kullanımlarını Windows'a özgü process.h başlığında bildirilen spawn işlevlerine yapılan çağrılarla değiştirerek bu ek yükten genellikle kaçınılabilir ).
  • Cygwin DLL , Windows konsolunda Unix tarzı bir terminali taklit eden bir konsol sürücüsü içerir . Cygwin'in varsayılan kullanıcı arayüzü, Cygwin konsolunda çalışan bash kabuğudur.
  • DLL ayrıca sözde terminal (pty) aygıtlarını da uygular . Cygwin , mintty , rxvt ( -unicode ) ve xterm dahil olmak üzere bunlara dayanan bir dizi terminal öykünücüsü ile birlikte gelir . Bunlar, Unix terminal standartları ve kullanıcı arabirimi kuralları ile Cygwin konsolundan daha uyumludur, ancak Windows konsol programlarını çalıştırmak için daha az uygundur.
  • Windows ve Unix yolları ve dosya biçimleri arasında dönüştürme yapmak, satır sonlandırma (CRLF/LF) sorunlarını ele almak, bir yürütülebilir dosyanın bağlantılı olduğu DLL'leri görüntülemek vb. için çeşitli yardımcı programlar sağlanmıştır .
  • Cygwin yürütülebilir dosyaları her zaman Cygwin DLL'sine bağlı olmanın yanı sıra normal Windows yürütülebilir dosyalarıdır. Bu, Cygwin programlarının , programların bir platformdan diğerine kademeli olarak taşınmasına izin veren Windows API'sine ve diğer Windows kitaplıklarına tam erişime sahip olduğu anlamına gelir . Ancak, programcıların çakışan POSIX ve Windows işlevlerini karıştırma konusunda dikkatli olmaları gerekir.

Cygwin ile birlikte gelen gcc sürümü, Windows DLL'leri oluşturmak, bir programın pencereleme veya konsol modu programı olup olmadığını belirlemek, kaynak eklemek vb. için çeşitli uzantılara sahiptir. Cygwin tarafından sağlanan POSIX uyumluluk katmanını gerektirmeyen programları derlemek için destek DLL, varsayılana dahil edildi gcc, ancak 2014 itibariyle MinGW-w64 projesinin katkıda bulunduğu çapraz derleyiciler tarafından sağlandı .

Cygwin, birçok popüler yazılım parçasını Windows platformuna taşımak için yoğun olarak kullanılır. Sun Java , LibreOffice ve hatta Lighttpd ve Hiawatha gibi web sunucusu yazılımlarını derlemek için kullanılır .

Cygwin API kitaplığı, lisansı Açık Kaynak Tanımına (Özgür Yazılım Tanımından daha az katı) uyan herhangi bir ücretsiz ve açık kaynaklı yazılıma bağlantı kurulmasına izin verme istisnası dışında GNU Kısıtlı Genel Kamu Lisansı sürüm 3 (veya üstü) kapsamında lisanslanmıştır. .

Tarih

Cygwin , Windows NT ve 95'in nesne dosya formatı olarak COFF kullandığını ve GNU'nun zaten x86 ve COFF desteğini ve C kitaplığı newlib'i içerdiğini gözlemleyen bir Cygnus mühendisi olan Steve Chamberlain'in bir projesi olarak 1995 yılında başladı . GCC'yi yeniden hedeflemenin ve Windows'ta çalışabilecek yürütülebilir dosyalar üreten bir çapraz derleyici üretmenin mümkün olacağını düşündü . Bu pratik oldu ve bir prototip hızla geliştirildi.

Sonraki adım, GNU yapılandırma kabuğu komut dosyasının çalışmasına izin vermek için yeterli Unix öykünmesini gerektiren bir Windows sisteminde derleyiciyi önyüklemeye çalışmaktı. Bir Bourne kabuk gibi, uyumlu bir komut yorumlayıcısı Bash , gerekli ve bir çatal sistem çağrısı emülasyonu ve dönüş olarak edildi standart giriş / çıkış . Windows benzer işlevsellik içerir, bu nedenle Cygwin kitaplığının yalnızca POSIX uyumlu bir uygulama programlama arabirimi (API) sağlaması ve çağrıları düzgün bir şekilde çevirmesi ve dosya tanımlayıcılar gibi verilerin özel sürümlerini yönetmesi gerekiyordu .

Başlangıçta, Cygwin'e gnuwin32 adı verildi (mevcut GnuWin32 projesiyle karıştırılmamalıdır ). Adı, Cygnus'un onu yaratmadaki rolünü vurgulamak için Cygwin32 olarak değiştirildi. Ne zaman Microsoft marka tescil Win32 , 32 basit hale Cygwin düştü.

1996'ya gelindiğinde, diğer mühendisler de katılmıştı, çünkü Cygwin'in Cygnus'un Windows sistemlerinde barındırılan gömülü araçlarını sağlamanın yararlı bir yolu olacağı açıktı (önceki strateji DJGPP kullanmaktı ). Örneğin , bir Windows-x- MIPS çapraz derleyicisi oluşturmak için ağır bir Sun Microsystems iş istasyonu kullanmak gibi üç yönlü çapraz derleme yapmak mümkün olduğu için özellikle çekiciydi . zaman. 1999'da Cygnus, Cygwin 1.0'ı kendi başına ticari bir ürün olarak sundu, ancak sonraki sürümler yayınlanmadı, bunun yerine sürekli açık kaynak sürümlerine dayandı.

Geoffrey Noer, 1996'dan 1999'a kadar proje lideriydi. Christopher Faylor, 1999'dan 2014 ortasına kadar proje lideriydi. Corinna Vinschen, Faylor'un Red Hat'ten ayrıldığı 2004 yılından bu yana eş lider oldu ve Faylor'un projeye aktif katılımdan çekildiği 2014 yılının ortalarından bu yana liderliği sürdürüyor.

23 Haziran 2016'dan itibaren Cygwin kitaplığı sürüm 2.5.2, GNU Kısıtlı Genel Kamu Lisansı (LGPL) sürüm 3 kapsamında lisanslanmıştır, bu nedenle artık kapalı kaynak uygulamalarına bağlanmak mümkündür. Bu mevcut olmadan önce iki olasılık vardı: Uygulamanızın kaynak kodunu yayınlayabilir veya kapalı kaynaklı bir uygulama yayınlamak için bir Cygwin lisansı satın alabilirsiniz.

Özellikleri

Cygwin'in temel paket seçimi oldukça küçüktür (yaklaşık 100 MB), bash (etkileşimli kullanıcı) ve tire (kurulum) kabuklarından ve bir Unix komut satırından beklenen çekirdek dosya ve metin işleme yardımcı programlarından biraz daha fazlasını içerir. Ek paketler, Cygwin'in paket yöneticisi ("setup-x86.exe" – 32bit & "setup-x86_64.exe" – 64bit) içinden isteğe bağlı kurulumlar olarak mevcuttur. Bunlar şunları içerir (diğerlerinin yanı sıra):

Cygwin / X projesinin bir uygulama katkı X Pencere Sistemi grafiksel Unix programları Windows masaüstünde kendi kullanıcı arayüzleri görüntülemenizi sağlar. Bu, hem yerel hem de uzak programlarla kullanılabilir. Cygwin/X, başlıca X pencere yöneticileri, masaüstü ortamları ve uygulamalar dahil olmak üzere 500'den fazla paketi destekler, örneğin:

X uygulamaları geliştirmek için düşük seviyeli Xlib / XCB kitaplıklarına ek olarak , Cygwin ayrıca GTK+ ve Qt dahil olmak üzere çeşitli üst seviye ve platformlar arası GUI çerçeveleri ile birlikte gelir .

Cygwin Limanlar proje Cygwin dağıtımında kendisinde mevcut değildi birçok ek paketleri sağladı. Örnekler arasında GNOME ve K Desktop Environment 3'ün yanı sıra MySQL veritabanı ve PHP betik dili sayılabilir . Çoğu liman, gönüllü bakımcılar tarafından Cygwin paketleri olarak benimsenmiştir ve Cygwin Limanları artık korunmamaktadır.

Ayrıca bakınız

Referanslar

Dış bağlantılar