Cygwin(/ ˈsɪɡwɪn / SIG - win)[ 3 ]は、 Microsoft Windows用の無料のオープンソースUnixライクな環境およびコマンドラインインターフェイス(CLI)です。このプロジェクトは、オープンソースパッケージを含むソフトウェアリポジトリも提供しています。Cygwinを使用すると、UnixライクなオペレーティングシステムのソースコードをコンパイルしてWindows上で実行できます。Cygwinは、Windowsベースのアプリケーションとのネイティブな統合を提供します。
ターミナルエミュレータminttyは、環境と対話するために提供されるデフォルトのコマンドラインインターフェイスです。Cygwin のインストールディレクトリのレイアウトは、Unix 系システムのルートファイルシステム/binを模倣しており、/home、/etc、 、/usr、 などのディレクトリがあります/var。
Cygwin はGNU Lesser General Public Licenseバージョン 3の下でリリースされています。 [ 4 ]元々はCygnus Solutionsによって開発されました。[ 5 ] [ 6 ]後にRed Hat (現在はIBMの一部)に買収され、 GNU コンパイラ スイートを含むGNUツール チェーンをWin32に移植しました。Cygwin は、ツールを Win32ランタイム環境を使用するように書き直すのではなく、DLL の形式でPOSIX互換の環境を実装しました。 [ 7 ]
ブランドのスローガンは「WindowsでLinuxの感覚を手に入れよう」だが、CygwinにはLinuxは含まれていない。[ 8 ]
Cygwinは1995年に、 Cygnusのエンジニアであるスティーブ・チェンバレン氏のプロジェクトとして始まりました。彼は、Windows NTと95がオブジェクトファイル形式としてCOFFを使用していること、そしてGNUが既にx86とCOFF、およびCライブラリnewlibのサポートを含んでいることに着目しました。彼は、 GCCをリターゲットして、Windows上で実行可能な実行ファイルを生成するクロスコンパイラを作成できると考えました。その後、プロトタイプが開発されました。チェンバレン氏は、 Windowsシステム上でコンパイラをブートストラップし、UnixをエミュレートしてGNU configureシェルスクリプトを実行できるようにしました。
当初、CygwinはCygwin32と呼ばれていました。[ 6 ] [注1 ] MicrosoftがWin32の商標を登録したとき、「32」が削除されて単にCygwinになりました。
1999年、CygnusはCygwin 1.0を商用製品として提供した。[ 9 ]それ以降のバージョンはリリースされておらず、オープンソースのリリースが継続されている。
ジェフリー・ノアーは1996年から1999年までプロジェクトリーダーを務めた。[ 10 ] [ 11 ]クリストファー・フェイラーは1999年から2004年までリーダーを務め、その後レッドハットを退社し、コリーナ・ヴィンシェンと共同リーダーとなった。[ 12 ] [ 13 ]コリーナ・ヴィンシェンは2014年半ばから現在(2024年9月現在)までプロジェクトリーダーを務めている。[ 14 ]
2016年6月23日から、Cygwinライブラリバージョン2.5.2はGNU Lesser General Public License(LGPL)バージョン3の下でライセンスされています。 [ 15 ]
Cygwin には 2 つのバージョンがあります。完全な64 ビットバージョンと、機能が簡略化された32 ビットバージョンで、最終バージョンは 2022 年にリリースされました。[ 16 ] Cygwin は、Unixシステム上のアプリケーション プログラムと同等の多数のアプリケーション プログラムを実行できるように、Windows システム コールの観点からPOSIXシステム コールAPIを実装するライブラリと、GNU開発ツール チェーン ( GCCおよびGDBを含む) で構成されています。プログラマーは、X Window System、K Desktop Environment 3、GNOME、[ 17 ] Apache、およびTeXを移植しました。Cygwin では、 inetd、syslogd、sshd、Apache、およびその他のデーモンを標準のWindows サービスとしてインストールできます。Cygwin プログラムは、 Windows APIおよびその他の Windows ライブラリに完全にアクセスできます。
Cygwin プログラムは、Cygwin の「setup」 [ 18 ]プログラムを実行することでインストールされ、インターネット上のリポジトリからダウンロードされます。
Cygwin APIライブラリは、GNU Lesser General Public Licenseバージョン3(以降)に基づいてライセンスされていますが、ライセンスがオープンソース定義に準拠する任意のフリーおよびオープンソースソフトウェアへのリンクを許可する例外があります。[ 19 ]
Cygwinは2つの部分から構成されています。
Cygwin は POSIXシンボリックリンクをサポートしており、システム属性が設定されたプレーンテキストファイルとして表現します。Cygwin 1.5 ではWindows エクスプローラのショートカットとして表現されていましたが、パフォーマンスと POSIX の正確性のために変更されました。Cygwin はNTFS ジャンクションポイントとシンボリックリンクも認識し、POSIX シンボリックリンクとして扱いますが、作成はしません。アクセス制御リスト(ACL) を扱うための POSIX API がサポートされています。[ 21 ]
Cygwin固有のUnixmountコマンドを使用すると、WindowsパスをUnixファイル空間内の「ファイルシステム」としてマウントできます。初期マウントポイントはで設定できます/etc/fstab。このフォーマットはUnixシステムと非常によく似ていますが、デバイスの代わりにWindowsパスが表示されます。ファイルシステムはバイナリモード(デフォルト)またはテキストモードでマウントできます。テキストモードでは、LFとCRLFの末尾の自動変換が有効になります(これは、テキストモードまたはバイナリモードを明示的に指定せずにファイルを開くプログラムにのみ影響します)。
Cygwin 1.7ではPOSIXロケールの包括的なサポートが導入され、UTF-8 Unicodeエンコーディングがデフォルトになった。
プロセスを複製するための fork システムコールは完全に実装されていますが、コピーオンライト最適化戦略は使用できませんでした。[ 22 ] [ 23 ] [ 24 ]
Cygwin のデフォルトのユーザー インターフェイスは、minttyターミナル エミュレータで実行されるbashシェルです。[ 25 ] DLL は擬似端末(pty) デバイスも実装しており、Cygwin にはrxvt /urxvt やxtermなど、それらに基づく多数のターミナル エミュレータが付属しています。Cygwin に付属する GCC のバージョンには、プログラムがウィンドウ モードかコンソール モードかを指定するなど、Windows DLL を作成するためのさまざまな拡張機能があります。Cygwin DLL が提供する POSIX 互換レイヤーを必要としないプログラムのコンパイルのサポートは、以前はデフォルトの GCC に含まれていましたが、2014 年現在これは、 MinGW-w64プロジェクトが提供するクロスコンパイラによって実現されています。
Cygwin の基本パッケージの選択は約 100MB で、[ 26 ] bash (対話型ユーザー) シェルとdash (インストール) シェル、コアファイルおよびテキスト操作ユーティリティが含まれています。追加パッケージは、Cygwin の「setup」プログラムおよびパッケージマネージャ (「setup-x86_64.exe」 - 64 ビット) 内からオプションのインストールとして利用できます。[ 27 ] Cygwin Ports プロジェクトは、Cygwin ディストリビューション自体では利用できない追加パッケージを提供しました。例としては、GNOME、K Desktop Environment 3、MySQLデータベース、PHPスクリプト言語などがあります。ほとんどのポートはボランティアのメンテナーによって Cygwin パッケージとして採用され、Cygwin Ports はもはやメンテナンスされていません。Cygwin にはGTK+とQtが同梱されています。
Cygwin /Xプロジェクトは、グラフィカルなUnixプログラムが、ローカルプログラムとリモートプログラムの両方において、Windowsデスクトップ上にユーザーインターフェースを表示できるようにするものです。