Saya telah menggunakan Linux selama beberapa waktu, dan saya selalu bertanya-tanya bagaimana Windows dapat menangani program-program ketergantungan seperti apt-get , aptitude , Pacman , yum dan manajer paket lainnya. Kadang-kadang, manajer paket saya akan memberi tahu saya bahwa versi perpustakaan itu diperlukan untuk paket ini atau bahwa akan ada beberapa konflik.
Bagaimana Windows menangani semua hal itu?
Jawaban:
Tidak. Kecuali jika kita berbicara tentang .NET yang meminta Anda untuk menginstal kerangka kerja versi X sesuai dengan kompiler.
Yang lainnya hanya melempar kesalahan. Dengan keberuntungan, Anda dapat
missing dll xxxx.dll
. Meskipun, sebagian besar penginstal akan memiliki perpustakaan yang diperlukan untuk menjalankan perangkat lunak.sumber
Sunting 4/4/2014: Hai OP, lihat apa yang baru dirilis hari ini:
http://blogs.technet.com/b/windowsserver/archive/2014/04/03/windows-management-framework-v5-preview.aspx
Saya hanya ingin memperluas sedikit pada jawaban yang diterima, karena itu sedikit detail. Jawaban Filipe ini tidak menyebutkan strategi yang Windows benar-benar tidak digunakan untuk menyelesaikan atau ketergantungan Program mengurangi masalah, seperti toko komponen (WinSxS,) cache perakitan global, sistem MSI, dll Tapi di sisi lain dia pada dasarnya tepat di merasakan bahwa itu tanggung jawab pengembang untuk memasukkan perpustakaan khusus apa pun dengan aplikasi, dan memeriksa keberadaan dependensi sebelum melakukan transaksi instal.
Windows kurang modular daripada Linux, yang memiliki positif dan negatif. Di sisi bawah, Windows lebih monolitik, artinya komponen yang relatif lebih sedikit dari sistem operasi dapat dilepas atau opsional seperti di Linux. (Meskipun Windows perlahan mulai membaik tentang hal itu.)
Tetapi di sisi atas, itu berarti pengembang dapat membuat lebih banyak asumsi tentang perpustakaan apa yang sudah ada pengguna di komputernya. Dan berbagai versi dari pustaka tersebut, setelah diinstal, akan disimpan berdampingan di toko komponen, sehingga Anda tidak lagi memiliki App1 menggonggong tentang membutuhkan crapDLL.dll, dan App2 menggonggong tentang membutuhkan versi lain dari crapDLL.dll pada saat yang sama. waktu, dll.
sumber
Di Windows, tergantung pada pembuat perangkat lunak untuk menyediakan versi untuk pustaka mereka. Windows memiliki beberapa fasilitas untuk membantu ini.
Pemasang Windows dan layanan Pemasang Tepercaya yang berinteraksi dengan program instalasi (.msi). Ada juga beberapa teknologi pendukung yang disebut Aplikasi Terisolasi dan Perakitan Berdampingan yang membantu memilah konflik versi.
Untuk aplikasi .NET framework ada Global Assembly Cache, Strong-Named Assemblies, dan pada Manifest inti.
Di Windows 8 dan 8.1 ada Windows App Store bersama dengan Windows Runtime Library (pengganti win32 API).
sunting: Inti dari sebagian besar teknologi ini adalah manifes rakitan, file yang disematkan yang menyediakan nomor versi, penulis, rakitan bergantung, dan versinya, di antara data lainnya.
sumber
Jawaban lain benar menunjukkan bahwa manajemen paket dan OS adalah ide yang terpisah tetapi tidak menyebutkan solusi.
Sistem manajemen paket yang paling mirip dengan apt-get atau yum di Windows saat ini adalah Chocolatey . Ini memungkinkan orang untuk menginstal / menghapus paket (MSI, exe, skrip PowerShell,) dan paket tersebut dapat berisi informasi tentang dependensi mereka yang dapat secara otomatis diselesaikan oleh Chocolatey.
Paket ini biasanya berisi tautan ke binari dan skrip untuk mengelola proses pemasangan. Paket ini juga dapat berisi binari atau file lain yang diperlukan (dependensi harus dalam paket terpisah). Chocolatey juga dapat menggunakan sistem manajemen paket eksternal seperti Penginstal Platform Web Microsoft , Ruby Gems, Python, dan sebagainya.
sumber
Dari apa yang saya mengerti, satu-satunya dependensi yang ditangani oleh Windows adalah perpustakaan khusus Microsoft. Jika Anda menginstal, sebagai contoh, program open source di Windows seperti Blender, ia akan memiliki libavcodec dan pustaka ffmpeg dalam file dll yang terpisah, dan jika Anda menginstal katakanlah, OpenShot, ia akan menginstal salinannya sendiri dari libavcodec di direktori sendiri, dan mereka dapat menjadi versi yang sama sekali berbeda. Ini bisa menjadi mimpi buruk ketika menghapus instalan perangkat lunak untuk membersihkan sampah yang tertinggal, dan juga membutuhkan ruang disk lebih banyak dengan redundansi perpustakaan.
sumber