Berikut adalah daftar opsi yang tersedia pada 2018-05 dengan beberapa pembaruan mengenai WSL selama 2019-01 bersama dengan sedikit detail mengenai masing-masing.
Opsi yang menonjol
Cygwin menyediakan yang berikut:
- bash shell dan terminal Mintty,
- berbagai utilitas Linux umum yang dikompilasi untuk dijalankan pada Windows
- lapisan kompatibilitas komprehensif yang memungkinkan program Linux dijalankan pada Windows.
Cygwin bertujuan membuat porting aplikasi Linux di Windows menjadi mudah. Jika beberapa program C dirancang untuk Unix dan mengharapkan untuk menggunakan fitur-fitur seperti pipa, file Unix-style dan akses direktori dll maka Anda dapat mengompilasinya untuk Cygwin dan Cygwin akan bertindak sebagai lapisan kompatibilitas antara kode dan OS asing (Windows) . Ini memungkinkan program C yang sama berfungsi pada Linux dan Windows dengan sedikit atau tanpa modifikasi. Daftar besar program Linux telah dipatuhi dan dapat dijalankan saat Anda menginstal Cygwin. Namun Anda, pengguna program ini, mungkin harus terbiasa dengan Unix. Misalnya, Anda mungkin harus meneruskan argumen seperti /cygdrive/c/autoexec.bat
alih - alih c:\autoexec.bat
dan siap untuk berurusan dengan output dengan penghentian baris Unix ( \n
) alih-alih penghentian baris Windows ( \r\n
).
Kumpulan semua program Cygwin terdiri dari repositori dan meskipun Cygwin tidak memiliki manajer paket Linux tradisional, Anda dapat menambah, menghapus, dan memperbarui program dari repositori ini kapan saja dengan cara yang sangat berlawanan dengan intuisi (Anda menjalankan Cygwin setup.exe di kapan saja setelah instalasi selesai)
Babun adalah Cygwin dengan manajer paket dengan fitur lengkap (pakta), oh-my-zsh untuk shell, git, pembaruan otomatis, dan arsitektur berorientasi plug-in. Meskipun shell default adalah zsh, Anda dapat dengan mudah beralih ke bash. Sepertinya upgrade yang bagus dari vanilla Cygwin jika Anda tidak keberatan dengan bobot ekstra.
Mingw-w64 menyediakan yang berikut:
- sebuah bash shell,
- cukup banyak utilitas Linux,
- toolchain pengembangan SW untuk membangun aplikasi yang akan berjalan tanpa lapisan kompatibilitas Linux (atau dengan yang minimal).
MinGW terutama distribusi perangkat lunak dan platform pembangunan untuk Windows. Khususnya itu adalah port Windows dari alat kompilator GNU, seperti GCC, make, bash, dan sebagainya. Ini mencakup sejumlah besar alat GNU dan lapisan kompatibilitas Unix minimal.
Perbedaan utama antara Mingw-w64 dan Cygwin adalah pada prioritas: Cygwin bertujuan untuk menyediakan lapisan kompatibilitas POSIX lengkap yang terdiri dari implementasi penuh semua panggilan sistem utama dan perpustakaan; kinerja adalah sekunder dari kompatibilitas. MinGW bertujuan untuk kinerja sehingga tidak akan menyediakan API POSIX tertentu yang tidak dapat diimplementasikan dengan mudah dan / atau cukup cepat di Windows. Juga target utama MinGW adalah pengembang S / W. Namun demikian, pengguna biasa juga dapat menikmati cangkangnya dan utilitas umum yang disertakan.
MSYS2 menyediakan yang berikut:
- bash shell dan terminal Mintty,
- cukup banyak utilitas Linux,
- manajer paket baris perintah berfitur lengkap untuk menginstal program OS
- bagian dari Cygwin dan MinGW untuk mendukung pembuatan aplikasi baik dengan atau tanpa lapisan kompatibilitas Linux yang komprehensif.
- repositori perangkat lunak dan manajer paket (pacman) yang membuatnya mudah untuk menginstal, menggunakan, membangun, dan port perangkat lunak pada Windows.
MSYS2 juga terutama merupakan distribusi perangkat lunak dan platform pembangunan untuk Windows seperti MinGW tetapi menggabungkan cara Cygwin dan cara MinGW. Anda dapat menggunakan MSYS2 untuk membuat "program MinGW" atau "program MSYS2" . Tautan selanjutnya ke lapisan kompatibilitas MSYS2 (msys-2.dll) yang dengan sendirinya mengikuti perkembangan lapisan kompatibilitas Cygwin dengan beberapa tambahan / modifikasi . Repositori dari 2 proyek sama sekali tidak terkait. Jadi, meskipun MSYS2 dan Cygwin grep.exe
keduanya menyediakan mereka mungkin memiliki versi yang sama sekali berbeda.
Git untuk Windows hanya MSYS2 dengan git diinstal atau setidaknya berdasarkan MSYS2 . Ini menyediakan shell yang sama (bash), terminal (Mintty) dan manajer paket (pacman). Tampaknya menjadi cara paling populer untuk menjalankan Git dominan di Windows dan seiring dengan itu Anda mendapatkan lingkungan Unix yang bagus.
WSL memecahkan masalah yang sama menggunakan metode yang sama sekali berbeda. Anda menjalankan kode yang sama persis dengan yang Anda jalankan di sistem Linux pada WSL yang memotong panggilan kernel dan menerjemahkannya ke panggilan kernel windows (ini kebalikan dari Wine). Tentu saja terjemahannya tidak sempurna tetapi Microsoft menjatuhkan peringatan beta . Karena WSL tidak tersedia di Windows Server sebelum 2018, saya belum melihatnya sebanyak itu. Pokoknya Anda mendapatkan bash shell yang bagus dengan sebagian besar barang CLI yang Anda harapkan untuk ditemukan pada instalasi stok Ubuntu. Microsoft secara resmi menyatakan bahwa "WSL tidak bertujuan untuk mendukung desktop GUI atau aplikasi"namun ada instruksi tidak resmi tentang cara melakukannya. Tampaknya saat ini (awal 2018) kelemahan utama WSL adalah sebagai berikut: a) membuat layar dan akses disk sangat lambat b) Anda tidak seharusnya mengedit file WSL (Linux) dari Windows c) ini hanya berjalan pada Windows 64bit. Berikut ini adalah perbandingan tua tapi bagus dengan cygwin (perhatikan bahwa Rich Turner adalah anggota tim WSL dan ia telah memposting banyak info berguna mengenai WSL)
Kesamaan
Kecuali dari WSL sebagian besar alat di atas berbagi banyak teknologi umum (perpustakaan, executable, konsep). Misalnya shell bash yang datang dengan MinGW tergantung pada msys-2.dll yang itu sendiri adalah garpu dari cygwin.dll. Jadi ya ada banyak ruang untuk kebingungan :-)
Lebih banyak pilihan
Cmder menyediakan terminal yang bagus dan shell mirip bash untuk Windows. Komponen utamanya adalah Conemu (terminal). Selain itu, Clink menambahkan Clink yang menyediakan pengeditan baris perintah Bash-style , tata letak prompt khusus, dan skema warna Monokai. Ini sangat (atau mungkin sepenuhnya) kompatibel dengan program konsol windows asli.
Scoop menyediakan manajer paket baris perintah untuk banyak program lintas-platform yang terkenal termasuk banyak alat GNU. Ini mengunduh paket yang sudah dikompilasi. Itu tidak menyediakan baik shell maupun terminal tetapi sebaliknya berjalan di bawah cmd.exe windows '(dengan semua keterbatasannya tetapi juga dengan kompatibilitas penuh dengan program-program konsol windows asli). Ini juga tidak termasuk suite kompiler (tapi tentu saja kompiler dan alat pengembangan adalah paket khas yang dapat Anda instal dengan scoop). Banyak program yang diinstal Scoop baik datang langsung dari proyek MinGW / MSYS, atau dibangun menggunakan alat mereka.
Pilihan lebih banyak lagi
Solusi di bawah ini tampaknya tidak aktif dan saya tidak pernah mengujinya tetapi mereka tampaknya melakukan pekerjaan untuk orang lain:
Gow (Gnu On Windows) adalah alternatif ringan untuk Cygwin tanpa shell. Ia menggunakan penginstal Windows yang nyaman yang menginstal sekitar 130 aplikasi open source Linux yang sangat berguna yang dikompilasi sebagai binari win32 asli dan tersedia melalui cmd.exe windows. Ini dirancang untuk menjadi sekecil mungkin (sekitar 10 MB).
UnxUtils & GnuWin32 : UnxUtils adalah kumpulan port dari utilitas mirip Unix mirip GNU ke Win32 asli, dengan executable hanya tergantung pada Microsoft C-runtime msvcrt.dll. Anda harus mengunduh bagian utama dan beberapa pembaruan . GnuWin32 memiliki versi yang lebih baru daripada UnxUtils, tetapi membutuhkan file pendukung (mis. DLL)
MSYS & MinGW tampaknya telah telah usang oleh MSYS2 & MinGW-W64 jadi aku tidak pernah melihat mereka.
Beberapa masalah umum pada Cygwin & MSYS2
Mengenai terminal
Mintty adalah terminal yang digunakan dalam Cygwin, MSYS2 dan turunannya. Orang harus menyadari bahwa jika Anda menjalankan program konsol Windows asli itu bukan pengganti tanpa rasa sakit untuk Windows Command Prompt. Sementara program dengan output teks sederhana biasanya berfungsi dengan baik, yang interaktif dan layar penuh sering mengalami masalah. Baca lebih lanjut di beranda Mintty dan baca juga entri "Beberapa program konsol asli tidak berfungsi saat dijalankan dari Git Bash" di Git untuk Windows FAQ . Entri itu memiliki rekomendasi ini untuk dibuat ketika Anda menghadapi masalah seperti ini:
Ada beberapa metode untuk mengatasi masalah ini:
- Jalankan program yang memiliki masalah menggunakan utilitas winpty . Hal ini memungkinkan Anda untuk tetap menggunakan terminal mintty yang lebih baik, tetapi dapat menjadi berat jika Anda memerlukan solusi untuk banyak program.
- [gunakan cmd.exe] dan konfigurasikan untuk "Edit Cepat", ukuran yang wajar dan gulir-kembali dan font unicode yang sesuai. Anda masih harus hidup dengan kebiasaan [cmd.exe] lainnya.
- Instal dan gunakan Conemu .
Masalah lain
Dua hal paling penting untuk diingat adalah ini:
ada pertukaran antara kekuatan dan masalah debug yang sulit. Semakin kuat solusinya, semakin banyak hal yang bisa salah, bahkan dengan cara yang pada awalnya tampak tidak terkait dengan Linux-layer Anda.
jika Anda tidak memiliki banyak pengalaman Linux, jangan gunakan solusi yang lebih kuat seperti Cygwin / MSYS2 / MinGW
UnxUtils dan GnuWin32 memiliki kekuatan paling sedikit tetapi juga paling tidak berpotensi menyebabkan Anda sakit kepala. Cygwin dan yang serupa akan berada di posisi teratas dalam hal kekuatan dan sakit kepala. Cmder ada di suatu tempat di tengah. Jadi, ketika Anda membutuhkan solusi yang paling kuat, tidur nyenyak dan berkonsentrasi penuh. Hindari menggunakan solusi yang kuat saat menguji sesuatu yang baru dan mungkin tidak stabil. Juga jangan lupa bahwa solusi kompleksitas sedang seperti cmder tidak bersih.
Masalah perintah Linux membayangi jendela yang merupakan penyebab umum kesulitan untuk debug masalah dalam solusi seperti Cygwin / MSYS2 / MinGW. Berikut ini contohnya: Saya memiliki file .bat yang menggunakan perintah batas waktu. Ketika dijalankan di bawah Cygwin itu akan gagal karena timeout juga merupakan perintah Linux tetapi dengan sintaks yang berbeda. Setelah saya melihat masalah yang saya temukan saya bisa menambahkan PATH = ... di bagian atas file .bat untuk memastikan perintah windows memiliki prioritas. Tapi kemudian saya mendapat kesalahan "Pengalihan input tidak didukung" lebih samar dan diselesaikan untuk solusi sebelum menemukan alasannya.
Berikut adalah contoh masalah dengan cmder. Saya menjalankan versi Windows secara serempak di bawah Cmder dan di bawah beberapa kondisi khusus, perangkat itu sama sekali tidak ada pesan kesalahan . Perintah yang sama selalu berjalan dengan sempurna di bawah cmd.exe. Yang lucu adalah bahwa itu juga berjalan dengan sempurna di bawah Cygwin (sebenarnya jika Anda memiliki nama file Unicode terminal Cygwin lebih baik daripada cmd.exe karena cmd.exe sering menampilkan teks Unicode salah bentuk).
Tentang panduan ini
Selama 2017-05 saya muak tidak memahami perbedaan alat-alat di atas walaupun saya sudah menggunakan beberapa dari mereka sejak lama (terutama CygWin dan cmder tetapi tidak pernah untuk tujuan pengembangan). Jadi saya menghabiskan beberapa jam untuk menggosok lanskap. Panduan ini adalah hasil dari catatan yang saya simpan. Saya bukan ahli di lapangan, tetapi saya sudah berusaha keras untuk menemukan semua informasi yang relevan, membacanya dengan mata kritis dan menyajikan bagian-bagian terpenting dengan jelas. Tolong beri komentar jika ada sesuatu yang salah dan saya akan melakukan yang terbaik untuk memperbaikinya.
Akhirnya permintaan maaf untuk beberapa masalah terminologi: Dalam teks ini saya terkadang menggunakan istilah Linux sebagai ganti UNIX atau POSIX. Saya tahu mereka tidak sama tetapi sangat sulit untuk membedakan mereka ketika mendekati topik dari jarak yang begitu jauh. Bahkan ketika itu tidak sulit butuh waktu yang tidak saya miliki ;-)
putty
terhubung ke server linux nyata. di windows saya selalu enggan dan tergoda untuk menggunakancygwin
, enggan karena pengalaman instalasi saya yang kikuk. Tetapi secara pribadi, saya merasa lebih nyaman untuk digunakan daripada msys dan lebih cepat daripada vm. setelah terinstal, cygwin ternyata portabel entah bagaimana menyalin direktori itu sudah cukup, namun itu akan membuat nama pengguna baru pada setiap mesin / pengguna berdasarkan nama pengguna windows (secara default, setidaknya). Tetapi perlu diingat bahwa karena cygwin / msys dapat dilihat sebagai "distribusi" khusus, beberapa sakelar perintah [opsional] mungkin hilang. ujilah mereka.