Apa perbedaan praktis antara Interix dan Cygwin?

14

Baik Interix dan Cygwin tampaknya menyediakan lingkungan pengguna seperti Unix di Windows. Apa perbedaan praktis antara keduanya, dalam hal, misalnya:

  • "Rasa" seperti Unix
  • Performa
  • Ketersediaan paket / kemudahan dalam menyusun perangkat lunak acak yang diunduh dari internet
  • Integrasi dengan aplikasi dan alat Windows
  • Integrasi / kompatibilitas dengan mesin virtual (mis. Apakah mungkin untuk Interix dan mesin virtual Ubuntu untuk berbagi "direktori home" yang sama)
  • Ukuran basis pengguna / tingkat dukungan komunitas

Satu perbedaan yang saya ketahui adalah bahwa Interix membutuhkan Windows 7 Enterprise atau edisi Ultimate; Cygwin akan menjalankan apa saja.

ithinkihaveacat
sumber

Jawaban:

7

Saya hanya menggunakan Windows SFU pada Windows 2008 sebelumnya, tapi saya percaya itu didasarkan pada Interix. Saya pernah bermain dengan cygwin, tetapi tidak banyak, jadi tolong tolong saya perbaiki jika saya mengatakan sesuatu yang salah di sini.

  • Unix-like feel: Interix memenangkan yang ini. Lingkungan terasa jauh lebih "lengkap". Saya tidak yakin bagaimana mengatakannya. Interix berjalan di samping subsistem win32, di mana sebagai cygwin berjalan di atasnya. Jadi, interix adalah "warga negara kelas satu" di tanah kernel Windows. Hal-hal seperti psdan dfberfungsi dengan baik.
  • Kinerja: Setelah tidak melakukan pengujian kinerja utama, saya rasa Interix juga memenangkan ini. Sekali lagi, ini berjalan di level yang lebih rendah. Anda tidak hanya menjalankan aplikasi Win32 dengan DLL kompatibilitas POSIX yang ditautkan.
  • Paket / perangkat lunak acak: Cygwin memenangkan yang ini karena dua alasan. Pertama, cygwin jauh lebih dikenal. Banyak perangkat lunak Unixy akan memiliki dukungan untuk kebiasaannya. Anda juga dapat menginstal berbagai hal dengan sangat mudah dari pemasang GUI. Interix tidak (saya percaya) memiliki hal seperti ini dibangun di dalamnya. Tentu, Anda dapat mengunduh sesuatu, mengompilasinya menggunakan gcc (yang saya pikir Anda bisa mendapatkan prebuilt), dan berdoa agar itu berhasil, tetapi itu seperti porting software ke varian acak lain Unix (seperti Solaris, atau AIX) - beberapa hal-hal akan berhasil, hal-hal lain akan mencoba menggigit kaki Anda dan membunuh anak-anak Anda.
  • Integrasi dengan aplikasi dan alat Windows: Sejujurnya, keduanya agak payah dalam hal ini. Jika Anda memiliki, katakanlah, server Apache yang berjalan di dalam cygwin atau Interix, maka tentu saja, ia akan dapat berkomunikasi melalui TCP dengan program-program Win32, tetapi sejauh itulah yang terjadi. Dari dalam interix, saya yakin Anda dapat membunuh program Win32 dan mendaftarnya menggunakan ps, tidak yakin apakah Anda dapat melakukan ini dengan cygwin. Dengan keduanya, Anda dapat menggunakan task manager Windows untuk membunuh sesuatu.
  • Integrasi dengan VM: Mengatasi contoh Anda berbagi direktori rumah, lalu ya. Anda dapat menggunakan samba untuk ini, dan saya percaya NFS bekerja pada Interix juga untuk sesuatu yang lebih unixy. Anda tidak akan menemukan GUI yang bagus atau apa pun untuk melakukan pekerjaan untuk Anda. Baik cygwin dan Interix memungkinkan Anda untuk mengakses sistem file biasa.
  • Ukuran basis pengguna: Cygwin menang di sini, saya katakan. Sangat sulit untuk menemukan hal-hal yang telah diuji dan dikembangkan untuk dijalankan di Interix, di mana sebagian besar sumber open source tampaknya mendukung cygwin sebagai platform kompilasi.

Jika Anda memiliki salinan OS Windows yang akan mendukung Interix (seperti yang Anda katakan, edisi Enterprise, edisi Ultimate, atau edisi Server), tidak ada salahnya mencobanya. Ini adalah lingkungan perasaan yang sangat lengkap. Cygwin, seperti yang Anda katakan, berjalan di atas segalanya, dan lebih dikenal dan lebih didukung, tetapi terasa agak seperti hack kotor bagi saya. Beberapa orang menggunakannya secara teratur.

Andrew
sumber
Mengenai paket, awalan Gentoo untuk Interix mungkin patut dicoba
Tobias Kienzler
1
Maju cepat ke 2015, jawabannya sekarang menjadi hanya "cygwin masih tersedia dan didukung sedangkan Interix (alias Layanan untuk Unix alias Subsistem untuk Aplikasi berbasis Unix) dihentikan"
adib
3

/ * meta note- Aku benci komentarnya sangat pendek * /

Saya sebagian besar setuju dengan jawaban andrews dengan beberapa komentar. Saya telah mengganti banyak sistem unix dengan SUA / SFU (tidak, mereka tidak sama tetapi tutup) di bawah windows.

  • kinerja - SUA jauh lebih cepat daripada layanan untuk unix tetapi SFU juga tidak bungkuk, keduanya biasanya lebih cepat dari cygwin (tetapi tidak selalu)
  • integrasi - integrasi adalah inti dari SFU / SUA dan ada banyak dokumen tentang apa yang Anda bisa dan tidak bisa lakukan di situs teknologi. Cygwin dirancang untuk menjalankan perintah * nix di windows- bukan untuk membuat 2 bekerja sama. Lihat komponen interoperabilitas Unix / Linux di Windows (SUA, IdMU, NFS, dll.)
  • basis pengguna-saya pikir ada lebih banyak solusi yang didukung dan bekerja di sisi interix daripada di sisi cygwin dan masalah kompatibilitas jauh lebih sedikit dibandingkan dengan sisi cygwin lihat http://www.suacommunity.com/ (tool warehouse). Cygwin mungkin memiliki instalasi yang lebih menyeluruh karena bagus untuk solusi "Saya perlu shell unix" Cygwin menjalankan perintah, SUA adalah lingkungan unix yang merupakan peer to windows.
Jim B
sumber
1

Tidak dapat mengomentari jawaban JimB, jadi menanganinya di sini, khususnya poin tentang integrasi Windows. Cygwin didasarkan pada Win32 bukannya berjalan di subsistem sendiri, sementara lebih lambat, menyediakan integrasi Windows yang jauh lebih besar. Bahkan memungkinkan Windows dan UNIX API untuk digunakan dalam program yang sama, yang memungkinkan hal-hal seperti server Cygwin X atau terminal mintty.

Cygwin 'ps' memang mencantumkan proses Windows jika Anda memberikannya opsi -W, dan 'kill -f' akan membunuhnya. Program Windows dapat dipanggil dari dalam Cygwin dan dicolokkan bersama dengan program Cygwin menggunakan semua mekanisme biasa seperti pipa. (Saya tidak tahu apakah itu mungkin di Interix.)

Jalur gaya Windows, keduanya dengan garis miring ke depan dan ke belakang, didukung. Cygwin 1.7 menjadikan UTF-8 set karakter default, dan nama file Windows 'UTF-16 diterjemahkan secara otomatis, sehingga nama file dalam bahasa apa pun ditampilkan dengan benar di Cygwin. Saya tidak tahu apa yang Interix lakukan di sini, tetapi tidak dapat menemukan bukti bahwa itu mendukung Unicode.

Fitur integrasi lainnya termasuk utilitas 'cygstart' untuk membuka file seolah-olah Anda mengklik dua kali di Explorer, dan perangkat / dev / clipboard untuk mengakses clipboard Windows.

ak2
sumber
3
Bagaimana cara menyediakan "integrasi Windows yang jauh lebih besar"? "Bahkan memungkinkan Windows dan UNIX API untuk digunakan dalam program yang sama" - ini juga berlaku untuk Interix; lihat ini untuk sumber pihak pertama; slide 37, "Proses mode campuran", yang memiliki peluru "Menghasilkan proses mode campuran dapat membuat panggilan SUA dan Windows API dalam proses yang sama"
user314104
1

Biarkan saya berbagi pengalaman saya menginstal Interix untuk Windows 7.

Perjalanan kami dimulai pada halaman yang tidak jelas untuk Windows Server 2008.

Di sini Anda akan menemukan bahwa itu bahkan tidak disebut Interix lagi, tetapi Subsistem untuk Aplikasi atau SUA berbasis Unix . Selanjutnya Anda akan melihat hanya dari komentar pengguna bahwa SUA hanya tersedia untuk Windows 7 Ultimate atau Enterprise. Ini tidak disebutkan dalam artikel di mana pun. Setelah menginstal "subsistem" Anda akan menyadari bahwa itu tidak lebih dari 2 pintasan di menu mulai Anda.

sua

Sekarang Anda sampai pada kejahatan nyata. Klik pintasan untuk Unduh dan Anda akan dibawa ke halaman unduhan.

tua

Di sini kami memiliki 3 file yang tersedia untuk diunduh. File-file ini semuanya lebih dari 400MB, dan saat ini ditulis lebih dari 4 tahun . Plus, kami tidak memiliki opsi apa pun untuk mengunduh paket khusus, bagian tertentu, dan lainnya. Anda kemudian akan menyadari bahwa tautan ini sebenarnya untuk Vista dan bukan Windows 7, dan harus mencari di internet untuk menemukan halaman Windows 7 . Pada titik ini saya menyerah.

Cygwin

Pergi ke cygwin.com . Unduh cygwin.com/setup-x86.exe . File ini adalah 714 KB . Jalankan instalasi dasar dan Anda akan melihat bahwa dibutuhkan sekitar 2 menit .

waktu

Setelah itu Anda dapat menggunakan kembali penginstal untuk banyak paket lain sesuai keinginan Anda. Moral dari cerita ini adalah bahwa Cygwin peduli dengan pengguna .

Steven Penny
sumber
Biarkan saya mengerti Anda dengan benar- karena tidak ada tidak perlu mengubah installer untuk menjalankan versi unix yang datang dengan win 7 entah bagaimana itu berarti tidak peduli- dan fakta bahwa Cygwin benar-benar memungkinkan Anda untuk mengunduh potongan-potongan (yang mungkin kemudian harus kembali dan mendapatkan lebih banyak) entah bagaimana nilai tambah? Tentu saja keputusan baru-baru ini untuk menghapus komponen unix dari windows sebagai tanda bahwa pengguna tidak menjalankan unix di bawah windows (kemungkinan besar IMHO) atau entah bagaimana mereka hanya tidak peduli tetapi saya tidak benar-benar melihatnya.
Jim B
@ JimB Ini tidak "datang" dengan Windows 7. Saya akan berpikir posting saya membuat itu jelas. Ini hanya tersedia untuk Win7 ultimate dan Anda harus mengunduhnya. Plus unduhannya sudah 4 tahun. Dalam komunitas perangkat lunak yang seumur hidup, dan menunjukkan kurangnya arahan / inisiatif dari Microsoft.
Steven Penny
3
itu datang dengan windows, apa yang Anda unduh adalah perintah unix yang menggunakan subsistem. Karena beberapa perintah di Linux sudah berusia lebih dari 40 tahun, saya tidak heran mereka tidak perlu ditulis ulang (dan menurut standar Anda, saya kira tidak ada yang menggunakan linux atau unix lagi sejak berusia puluhan tahun). Alat dan perintah baru ditambahkan ke komunitas SU di suacommunity.com/tool_warehouse.htm
Jim B
2
Anehnya saya harus pergi melalui beberapa kode dan ya - itu kode yang sama dari 40 tahun yang lalu - tebak orang-orang di GNU melakukan sesuatu yang sangat salah - atau mungkin - hanya mungkin - tidak perlu mengubah sesuatu yang bukan t broken
Jim B
0

"Rasa" seperti UNIX cukup subyektif. Pilihan saya sesuai dengan CygWin karena memiliki server CygWin / X Xwindows dengan semua fitur yang diperlukan. SFU mendapatkan alat-alat dasar X11 tetapi terlalu sedikit dan terlambat. Banyak (termasuk saya) diperkenalkan ke CygWin oleh kebutuhan untuk memiliki server X11. Dalam hal kelengkapan, CygWin juga diposisikan lebih baik karena bersifat open source dan banyak perangkat lunak berlisensi GNU atau GPL yang diporting ke sana. Saya telah melihat beberapa produk komersial untuk CygWin sementara hanya melihat satu produk yang membutuhkan Layanan UNIX untuk Windows NT dan tidak ada sejak itu. YMMV.

Ketersediaan paketadalah kemenangan yang jelas untuk CygWin dipengaruhi oleh beberapa faktor: - biaya masuk yang lebih rendah: "semua Windows" dengan lisensi CygWin vs. kelas server untuk SFU / SUA. Beberapa fungsionalitas tersedia untuk citarasa desktop Windows tetapi dari varietas yang lebih mahal dan tanpa komponen server; - Sumber terbuka vs. sumber tertutup dan lebih penting lagi dokumentasi yang tersedia secara terbuka. Di masa lalu bahkan daftar perintah dan API yang disediakan hanya tersedia untuk pelanggan MSDN dan sedikit atau tidak ada informasi tersedia di situs Microsoft. Sebaliknya, perangkat GNU didokumentasikan dengan baik dan tersedia baik secara online maupun sebagai halaman manual; - perubahan penamaan dan implementasi membingungkan. Versi awal menggunakan toolkit MKS yang kemudian ditinggalkan.

Kinerja- bijaksana orang dapat berpendapat bahwa Interix lebih dekat ke kernel dan dengan demikian menikmati jalur menjalankan kode yang lebih pendek. Pertanyaan sebenarnya adalah seberapa banyak dan apakah itu penting? Untuk sebagian besar program perbedaannya hanya beberapa persen dan dapat diabaikan. Contoh buatan dengan I / O berat dapat diangkat, tentu saja. Saya lebih suka meletakkan beban seperti itu di UNIX asli karena akan lebih cepat daripada kedua Windows asli dan pengaya UNIX di atas Windows. Banyak yang telah bermigrasi dari Windows ke UNIX dengan peningkatan beban sementara saya tidak tahu contoh konversi dari CygWin ke Interix (atau sebaliknya). Ini adalah kompatibilitas UNIX yang dicari dan bukan kinerja UNIX, jadi saya menempatkan ini di akhir daftar.

Goldie
sumber
2
Dari segi kinerja, Interix sebenarnya menang di sini; banyak hal yang secara tradisional diimplementasikan sebagai * nix syscalls (seperti fork ()) adalah kludges diimplementasikan di atas Win32 di Cygwin. Win32 tidak memiliki gagasan fork (), tetapi Interix (dan NT) tidak. Cygwin memiliki masalah dengan itu - mendapatkan ruang alamat tepat untuk fork () - dan itu mengarah pada beberapa masalah kinerja yang serius. Seseorang pasti kesal dengan tautan yang berisi lebih dari komentar ini, tapi ini dia, langsung dari keran .
user314104