Cygwin

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ
Cygwin
Cygwinlogo.svg
CygwinX11ルートレスWinXP.png
WindowsXPでのCygwin / Xを含むCygwinの実行
原作者スティーブチェンバレン、シグナスソリューションズ
開発者Cygnus SolutionsRed Hat、Cygwinプロジェクトのボランティア
初回リリース1995年10月18日; 26年前 (1995-10-18
安定リリース
3.3.4-2 [1] ウィキデータでこれを編集する / 2022年1月31日; 23日前 (2022年1月31日
リポジトリ
で書かれているC / C ++
オペレーティング・システムマイクロソフトウィンドウズ
タイプPOSIX標準ユーティリティPOSIX標準ライブラリC標準ライブラリ互換性レイヤー
ライセンスLGPLv3
Webサイトcygwin .com ウィキデータでこれを編集する

Cygwin/ ˈsɪɡwɪn / SIG -win [ 2 ]は、MicrosoftWindows上でネイティブに実行れるPOSIX互換のプログラミングおよびランタイム環境ですCygwinでは、Unixライクなオペレーティングシステム用に設計されたソースコードを最小限の変更でコンパイルして実行できます。[3]

Cygwinインストールディレクトリのディレクトリレイアウトは、Unixライクなシステムのルートファイルシステムに似ており、/ bin、/ home、/ etc、/ usr、/ varなどの使い慣れたディレクトリがあります。Cygwinは、Unixライクなシステムで一般的に見られる何百ものコマンドラインツールやその他のプログラムとともにインストールされます。さらに、多くのアプリケーションがパッケージングシステムからインストールされる場合があります。ターミナルエミュレーターMinttyは、環境と対話するために提供されるデフォルトのコマンドラインインターフェイスです。[3]

Cygwinは、Windowsベースのアプリケーションのネイティブ統合を提供します。[4]したがって、Cygwin環境からWindowsアプリケーションを起動したり、Windows操作コンテキスト内でCygwinツールやアプリケーションを使用したりすることができます。

Cygwinは、2つの部分で構成されています。POSIXAPI機能の大部分を提供するC標準ライブラリの形式のAPI互換性レイヤーとしてのダイナミックリンクライブラリ DLL と、Unixを提供するソフトウェアツールとアプリケーションの広範なコレクションです。 -ルックアンドフィールのように[4]

Cygwinは無料のオープンソースソフトウェアであり、 GNU劣等一般公衆利用許諾契約書バージョン3でリリースされています。 [5]元々はCygnus Solutionsによって開発され[6] [7]後にRedHat(現在はIBMの一部)によって買収されました。 、 GNUコンパイラスイートを含むLinuxツールチェーンをWin32に移植しますCygwinは、 Win32ランタイム環境を使用するようにツールを書き直すのではなく、ダイナミックリンクライブラリ(DLL)の形式でPOSIX互換環境を実装しました。[8]

説明

Cygwin環境は2つのバージョンで提供されます。フル64ビットバージョンと、徐々に段階的に廃止されている32ビットバージョンを削除しました。Cygwinは、Windowsシステムコールの観点からPOSIXシステムコールAPIを実装するライブラリ、ソフトウェア開発を可能にするGNU開発ツールチェーン(GCCおよびGDBを含む)、およびUnixシステムと同等の多数のアプリケーションプログラムの実行で構成されます。プログラマーは、 X Window SystemK Desktop Environment 3GNOMEなど、多くのUnix、GNU、BSD、およびLinuxプログラムとパッケージをCygwinに移植しています。[9] Apache、およびTeXCygwinは、inetdsyslogdsshdApache、およびその他のデーモンを標準のWindowsサービスとしてインストールすることを許可し、MicrosoftWindowsシステムがUnixおよびLinuxサーバーをエミュレートできるようにします。

Cygwinプログラムは、Cygwinの「セットアップ」[10]プログラムを実行することによってインストールされます。このプログラムは、インターネット上のリポジトリから必要なプログラムと機能パッケージファイルをダウンロードします。前述のように、このセットアッププログラムには2つのバージョンがあります。1つはCygwin DLLの32ビットバージョンと対応するアプリケーション用で、もう1つは64ビットバージョン用です。セットアップでは、プログラムとそのソースコードパッケージをインストール、更新、および削除できます。完全なインストールには90GB [11]を超えるハードディスク容量が必要ですが、使用可能な構成では1GBまたは2GBしか必要ない場合があります。

UnixシステムとWindowsシステムで異なる概念を調整するための取り組みは次のとおりです。

  • Cygwin固有のバージョンのUnixmountコマンドを使用すると、Windowsパスを「ファイルシステム」としてUnixファイルスペースにマウントできます。初期マウントポイントはで構成できます/etc/fstab。これは、デバイスの代わりにWindowsパスが表示されることを除いて、Unixシステムと非常によく似た形式です。ファイルシステムは、バイナリモード(デフォルト)またはテキストモードでマウントできます。これにより、 LFCRLFの末尾間の自動変換が可能になります(テキストまたはバイナリモードを明示的に指定せずにファイルを開くプログラムにのみ影響します)。
  • Cygwin 1.7では、POSIXロケールと多くの文字エンコードの包括的なサポートが導入され、UTF- 8Unicodeエンコーディングがデフォルトになりました。UTF-16としてエンコードされているWindowsファイル名およびその他の識別子は、選択した文字エンコードとの間で自動的に変換されます。
  • Windowsのドライブ文字は特別なディレクトリにマップされるため、たとえば。としてC:表示され/cygdrive/cます。/cygdriveプレフィックスは変更できますフォームのWindowsネットワークパスはに\\HOST\SHARE\FILEマップされ//HOST/SHARE/FILEます。WindowsパスはCygwinプログラムから直接使用することもできますが、多くのプログラムはそれらを正しくサポートしていないため、これはお勧めできません。
  • フル機能/dev/procファイルシステムが提供されます。/proc/registryレジストリへの直接フ​​ァイルシステムアクセスを提供します。
  • CygwinはPOSIXシンボリックリンクをサポートし、システム属性が設定されたプレーンテキストファイルとしてそれらを表しますCygwin1.5はそれらをWindowsExplorerの ショートカットとして表しましたが、これはパフォーマンスとPOSIXの正確さのために変更されました。Cygwinは、NTFSジャンクションポイントシンボリックリンクも認識し、それらをPOSIXシンボリックリンクとして扱いますが、セマンティクスが完全にPOSIXに準拠していないため、それらを作成しません。
  • アクセス制御リスト(ACL)を処理するためのPOSIX APIがサポートされており、Windows NTACLシステムにマップされます。[12]
  • の特別な形式が提供されて/etc/passwdおり/etc/group、Windowsの同等のSIDGecosフィールド内)へのポインターが含まれているため、UnixとWindowsのユーザーおよびグループ間のマッピングが可能です。
  • プロセスを複製するためのforkシステムコールは完全に実装されていますが、WindowsAPIに適切にマップされていません。たとえば、コピーオンライトの最適化戦略は使用できませんでした。[13] [14] [15]その結果、CygwinのフォークはLinuxなどに比べてかなり遅いです。(このオーバーヘッドは、 fork / exec手法の使用を、Windows固有のprocess.hヘッダーで宣言されたspawn関数の呼び出しに置き換えることで回避できることがよくあります)。
  • Cygwin DLLには、 Windowsコンソール内でUnixスタイルのターミナルをエミュレートするコンソールドライバーが含まれています。Cygwinのデフォルトのユーザーインターフェイスは、Cygwinコンソールで実行されているbashシェルです。
  • DLLは、疑似端末(pty)デバイスも実装します。Cygwinには、 minttyrxvt-unicode)、xtermなど、それらに基づく多数のターミナルエミュレータが付属しています。これらは、CygwinコンソールよりもUnix端末標準およびユーザーインターフェイス規則に準拠していますが、Windowsコンソールプログラムの実行にはあまり適していません。
  • WindowsとUnixのパスとファイル形式を変換したり、行末(CRLF / LF)の問題を処理したり、実行可能ファイルがリンクされているDLLを表示したりするためのさまざまなユーティリティが用意されています。
  • Cygwin DLLに対して常にリンクされていることを除けば、Cygwin実行可能ファイルは通常のWindows実行可能ファイルです。これは、CygwinプログラムがWindows APIおよびその他のWindowsライブラリに完全にアクセスできることを意味します。これにより、あるプラットフォームから別のプラットフォームへのプログラムの段階的な移植が可能になります。ただし、プログラマーは、競合するPOSIX関数とWindows関数の混合に注意する必要があります。

Cygwinに付属するバージョンのgccには、Windows DLLの作成、プログラムがウィンドウまたはコンソールモードプログラムであるかどうかの指定、リソースの追加などのためのさまざまな拡張機能があります。Cygwinによって提供されるPOSIX互換性レイヤーを必要としないプログラムのコンパイルのサポートDLLは以前はデフォルトに含まれていましたgccが、2014年現在、 MinGW-w64プロジェクト によって提供されたクロスコンパイラーによって提供されています。

Cygwinは、多くの人気のあるソフトウェアをWindowsプラットフォームに移植するために頻繁に使用されます。これは、 Sun JavaLibreOffice 、さらにはLighttpdHiawathaなどのWebサーバーソフトウェアのコンパイルに使用されます[16]

Cygwin APIライブラリは、GNU Lesser General Public Licenseバージョン3(またはそれ以降)でライセンスされていますが、ライセンスがオープンソース定義[17]に準拠している無料のオープンソースソフトウェアへのリンクを許可する場合を除きます(無料よりも厳密ではありません)。ソフトウェア定義)。

歴史

Cygwinは、 WindowsNTと95がオブジェクトファイル形式としてCOFFを使用し、GNUがすでにx86とCOFF、およびCライブラリnewlibのサポートを含んでいることを観察したCygnusエンジニアであるSteveChamberlainのプロジェクトとして1995年に始まりました彼は、 GCCを再ターゲットして、Windowsで実行できる実行可能ファイルを生成するクロスコンパイラーを作成することが可能だと考えました。これは実用的であることが証明され、プロトタイプがすぐに開発されました。

次のステップは、Windowsシステムでコンパイラをブートストラップしようとすることでした。GNUconfigure シェルスクリプトを実行するには、Unixの十分なエミュレーションが必要です。bashなどBourneシェル互換のコマンドインタープリターが必要であり、次にforkシステムコールエミュレーションと標準の入出力が必要でした。Windowsには同様の機能が含まれているため、Cygwinライブラリは、POSIX互換のアプリケーションプログラミングインターフェイス(API)を提供し、呼び出しを適切に変換し、ファイル記述子などのプライベートバージョンのデータを管理するために必要です

当初、Cygwinはgnuwin32と呼ばれていました(現在のGnuWin32プロジェクトと混同しないでください)。Cygnusの作成における役割を強調するために、名前がCygwin32に変更されました。Microsoftが商標Win32を登録したとき、32は単にCygwinになるために削除されました。

1996年までに、他のエンジニアが参加しました。これは、CygwinがWindowsシステムでホストされるCygnusの組み込みツールを提供するための便利な方法であることが明らかだったためです(以前の戦略はDJGPPを使用することでした)。特に魅力的なのは、たとえば、大量のSunMicrosystemsワークステーションを使用しWindows-x- MIPSクロスコンパイラを構築するなど、 3方向のクロスコンパイルを実行できるためです。これは、PCを使用するよりも高速でした。時間。1999年、CygnusはCygwin 1.0をそれ自体が関心のある商用製品[18]として提供しましたが、後続のバージョンはリリースされておらず、代わりに継続的なオープンソースリリースに依存しています。

Geoffrey Noerは、1996年から1999年までプロジェクトリーダーでした。[19] [20] Christopher Faylorは、1999年から2014年半ばまでプロジェクトリーダーでした。Corinna Vinschenは、FaylorがRed Hatを去った2004年[21]から共同リーダーになり、Faylorがプロジェクトへの積極的な参加をやめた2014年半ばからリードしています。[22]

2016年6月23日から、Cygwinライブラリバージョン2.5.2はGNU劣等一般公衆利用許諾契約書(LGPL)バージョン3 [23]の下でライセンス供与されたため、クローズドソースアプリケーションとリンクできるようになりました。これが利用可能になる前は、2つの可能性がありました。アプリケーションのソースコードをリリースするか、Cygwinライセンスを購入してクローズドソースアプリケーションをリリースすることができました。

機能

Cygwinの基本パッケージの選択はかなり小さく(約100 MB [24])、bash(対話型ユーザー)シェルとdash(インストール)シェル、およびUnixコマンドラインに期待されるコアファイルとテキスト操作ユーティリティにすぎません。Cygwinのパッケージマネージャー内からオプションのインストールとして追加のパッケージを利用できます( "setup-x86.exe" –32ビットおよび "setup-x86_64.exe" – 64ビット)。これらには(他の多くの[25]の中で):

Cygwin / Xプロジェクトは、グラフィカルなUnixプログラムがWindowsデスクトップにユーザーインターフェイスを表示できるようにするX WindowSystemの実装に貢献しています。これは、ローカルプログラムとリモートプログラムの両方で使用できます。Cygwin / Xは、主要なXウィンドウマネージャー、デスクトップ環境、アプリケーションなど、500を超えるパッケージをサポートしています。

Xアプリケーションを開発するための低レベルのXlib / XCBライブラリに加えて、Cygwinには、 GTK +Qtなどのさまざまな高レベルのクロスプラットフォームGUIフレームワークも付属しています。

Cygwin Portsプロジェクトは、Cygwinディストリビューション自体では利用できなかった多くの追加パッケージを提供しました。例としては、GNOMEKデスクトップ環境3のほか、MySQLデータベースとPHPスクリプト言語があります。ほとんどのポートはボランティアのメンテナによってCygwinパッケージとして採用されており、Cygwinポートはもはやメンテナンスされていません。

も参照してください

参考文献

  1. ^ "cygwin3.3.4-2"2022年1月31日。
  2. ^ ホール、ラリー(2004-09-14)。「Re:どう発音しますか?」Cygwin(メーリングリスト)2007年10月10日取得
  3. ^ a b "Cygwin"www.cygwin.com
  4. ^ a b "CygwinFAQ"cygwin.com
  5. ^ 「CygwinライブラリがGNULesser General PublicLicenseの下で利用可能になりました」RedHat
  6. ^ 「Cygwinプロジェクトの簡単な歴史」Cygwin2018-02-02 2020年1月10日取得
  7. ^ 「Cygwin32:UNIX®アプリケーション用の無料のWin32移植層」USENIX1998-08-03 2020年1月10日取得
  8. ^ 「(解決済み)Linuxサブシステムvs Cygwin vsMobaXterm」How-ToGeekによるTechHelpForum2017-01-24 2019年3月15日取得
  9. ^ 「Cygwinポート」2015年5月2日取得
  10. ^ Delorie、DJ(2000-04-17)。「新しいCygwinネットリリース」Cygwin(メーリングリスト)2020年1月10日取得
  11. ^ 「Cygwinの現在のフルインストールサイズはどれくらいですか?」StackOverflow2018-05-28 2020年1月11日取得
  12. ^ Vinschen、Corinna(2016-01-16)。「更新:Cygwin2.4.0-1」Cygwinのお知らせ(メーリングリスト)2020年1月11日取得
  13. ^ 「CygwinFAQ:fork()はどのように実装されていますか?」2010年10月10日取得
  14. ^ 「Cygwin機能のハイライト:プロセスの作成」2014年12月24日取得
  15. ^ ブレイク、エリック(2009年1月15日)。「Bashはアプリケーションを直接起動しません」Cygwin(メーリングリスト)2010年10月10日取得
  16. ^ Leisink、Hugo。「Hiawathaウェブサーバー」www.hiawatha-webserver.org
  17. ^ 「ライセンス条項は何ですか?」Cygwin2012年7月28日にオリジナルからアーカイブされました。
  18. ^ 「CygwinはUnixとWindowsのアプリを統合します」Googleブックス1999-11-15 2020年1月13日取得
  19. ^ Delorie、DJ(1999-02-17)。「fyi:誰が何をするか」Cygwin(メーリングリスト)2020年1月13日取得
  20. ^ Noer、Geoffrey(1999-02-19)。「部分的にさようなら...」Cygwin(メーリングリスト)2020年1月13日取得
  21. ^ フェイラー、クリストファー(2004-03-31)。「転職」Cygwin(メーリングリスト)2020年1月13日取得
  22. ^ フェイラー、クリストファー(2014-07-31)。「クリストファー・フェイラー–プロジェクトからの撤退」Cygwin(メーリングリスト)2015年5月2日取得
  23. ^ 「CygwinライブラリがGNULesser General PublicLicenseの下で利用可能になりました」www.redhat.com 2021-05-27を取得
  24. ^ 「Cygwinパッケージのインストールと更新」Cygwin 2020年1月11日取得
  25. ^ 「Cygwinパッケージリスト」Cygwin 2020年1月11日取得

外部リンク