Pilihan format paket biner vendor tampaknya ditentukan oleh bentuk Hukum Murphy: semua distro yang tidak Anda gunakan memiliki paket. (Corralary: tidak ada distribusi yang memenuhi ketergantungan distribusi tumpukan perangkat lunak Anda).
Apakah ini masalah politik, atau sesuatu yang lebih dalam, bahwa kita belum melihat munculnya format paket "build sekali, jalankan di mana saja"?
Jawaban:
Tampaknya tepat mengutip Joel Spolsky yang satu ini:
(penekanan ditambahkan)
Anda memiliki (setidaknya) dua sistem pengemasan untuk Linux. Sebenarnya itu hal yang baik. Satu sistem hanya akan membuat sistem ketiga.
sumber
Ada banyak alasan untuk ini, dan sedikit sejarah adalah untuk meletakkan segala sesuatu ke dalam perspektif.
Ingatlah bahwa ketika kita berbicara tentang "Linux" yang biasanya kita maksud adalah salah satu dari banyak distribusi Linux yang berbeda . "Linux" sebenarnya hanya sebuah kernel sistem operasi.
Tujuan asli Linux adalah untuk menciptakan sistem berbasis Unix yang akan berjalan pada PC (awalnya 386). Langkah pertama adalah membuat kernel itu sendiri. Sementara Linus Torvalds sedang mengerjakan kernel Richard Stallman sedang mengerjakan sistem Free Unix miliknya sendiri , di bawah proyek GNU (Not Unix) GNU . Singkatnya, keduanya agak konvergen karena GNU memiliki utilitas terkait (C compiler / library / tools build, shell, editor teks dll.) Tetapi tidak ada inti untuk menjalankannya, dan Linux memiliki inti tetapi tidak memiliki utilitas untuk berjalan di atasnya untuk membuatnya berguna bagi massa.
Konvergensi ini kemudian dikenal secara resmi sebagai GNU / Linux. Anda akan melihat bahwa banyak distro masih menyebut diri mereka sebagai distribusi GNU / Linux.
Karena GNU / Linux bersifat gratis dan terbuka, siapa pun dapat mengambilnya dan membuat sistem paket sesuai dengan selera spesifik mereka. Hasilnya adalah banyak aliran berbeda dari berbagai metode konfigurasi yang digunakan untuk membuat sistem ini, yang memiliki efek samping menciptakan hampir sama banyak sistem manajemen paket yang berbeda agar sesuai dengan masing-masing.
Setiap sistem lengkap yang berbeda memiliki pengikut yang kuat yang bertahan bersama mereka selama bertahun-tahun, menghasilkan apa yang kita miliki saat ini: beberapa sistem manajemen paket yang digunakan secara luas, berakar dalam dan stabil seperti RPM , APT / dpkg dan Portage Gentoo .
Ada beberapa proyek, seperti Autopackage , yang berusaha menyelesaikan masalah, tetapi evolusi berkelanjutan dari berbagai sistem manajemen paket yang didukung berarti ada banyak target bergerak yang harus diikuti.
Apa yang akhirnya dilakukan oleh beberapa vendor perangkat lunak adalah menggabungkan binari spesifik dan salinan dependensi yang mereka perlukan ke dalam satu paket besar yang akan bekerja pada sistem tertentu.
sumber
Memiliki format paket yang sama tidak akan membantu. Anda tidak bisa menggunakan paket yang sama di distribusi lain. Anda bahkan tidak sering menggunakannya dalam versi berbeda dari distribusi yang sama. Dan bahkan membangun paket dapat memiliki masalah yang sama.
Untuk menginstal paket Anda harus memenuhi dependensi yang terbentuk selama pembuatan paket. Untuk membangun paket, Anda harus memenuhi dependensi build. Dan hal-hal ini berubah. Untuk dapat mengimplementasikan perubahan, lebih mudah untuk mendukung hanya paket yang dapat Anda modifikasi agar berfungsi setelah perubahan.
Jika semua dependensi akan sama, itu tidak akan menjadi distribusi yang berbeda atau versi berbeda dari distribusi yang sama.
sumber
Ada sedikit "Sindrom Tidak Diciptakan Di Sini", saya pikir. Sistem pengemasan Debian mendahului RedHat, namun lebih unggul dalam banyak hal, tetapi Anda tidak akan pernah melihat RedHat beralih. Sebaliknya, Anda melihat banyak orang menggunakan "apt-rpm" yang mencoba memberi Anda beberapa keuntungan dari apt dengan file rpm.
sumber
Pergi saja untuk. Deb :-)
sumber
Ada beberapa format sementara, seperti zero-install dan autopackage . Sayangnya tidak ada yang mendapatkan daya tarik.
sumber
Saya pikir cletus, Wayne, dan mereka menjawab ini dengan cukup baik. Saya ingin menambahkan itu benar-benar, ini bukan masalah besar. Saya bekerja di lingkungan campuran di mana kami memiliki Gentoo (portage), SUSE (rpm / zypper), dan OpenBSD (paket dan port). Menginstal paket pada salah satu dari mereka tidak sulit, dan saya tidak terlalu peduli format apa yang mereka gunakan.
Dari perspektif perangkat lunak pengemasan, tidak terlalu sulit juga. Baik itu Gentoo, distro berbasis RPM, atau distro berbasis-deb, itu hanya bermuara pada memiliki resep untuk membangun perangkat lunak dan menambahkan beberapa metadata. Asalkan sistem build dari apa yang Anda coba paket tidak sepenuhnya gila, biasanya dibutuhkan sedikit lebih dari menulis skrip shell yang dimuliakan untuk membuat paket.
sumber
Yah selalu ada binari yang dikompilasi secara statis dalam bola tar .... ;-)
sumber
Tidak ada definisi antarmuka biner standar untuk "Linux" karena itu hanya sebuah kernel. Kemungkinannya, tumpukan perangkat lunak Anda perlu berinteraksi dengan lebih dari sekadar kernel Anda, menghadirkan tantangan khusus dalam mempertahankan ABI standar di antara ratusan pohon sumber yang berbeda.
Pada topik alat pengemasan yang baik , saya lebih suka Debian GNU / Linux untuk format pengemasan biner yang luar biasa. Ini telah melayani 90% dari kebutuhan saya untuk alat dan aplikasi standar. Sisanya 10% dibangun dari sumber karena dimasukkannya komponen yang tidak bebas atau dependensi pustaka bersama kereta. Ketika aplikasi-aplikasi itu perlu digunakan, saya membuat biner khusus untuk kluster produksi.
sumber
Untuk mendapatkan build-sekali, jalankan format paket mana saja tanpa memaksa semua orang untuk menggunakan distribusi yang sama Anda memerlukan beberapa fitur penting:
Penamaan paket yang unik secara global, sehingga dua orang / distribusi tidak dapat secara independen membuat paket yang berbeda dengan nama yang sama.
Kemampuan untuk paralel menginstal berbagai versi perpustakaan ketika paket memiliki persyaratan yang saling bertentangan. Distribusi dapat memutuskan versi mana dari masing-masing perpustakaan untuk digunakan, dan memaksa semua paket untuk menggunakan versi itu. Sistem yang berfungsi lintas distribusi harus lebih fleksibel.
Zero Install menyediakan kedua fitur ini:
Nama adalah URI (mis. Http://rox.sourceforge.net/2005/interfaces/ROX-Filer ). Hanya pemilik domain yang dapat membuat paket di dalam namespace itu secara default.
Setiap versi dari setiap paket masuk ke direktori masing-masing. Setiap aplikasi hanya melihat perpustakaan yang dibutuhkannya, dengan versi yang kompatibel dengannya.
Misalnya, aplikasi Edit bergantung pada Python <3 seperti ini:
Lihat juga: http://www.osnews.com/story/16956/Decentralised-Installation-Systems
[Catatan: Saya adalah pengembang 0instal]
sumber