Apakah mungkin untuk membangun distro Linux yang mendukung paket RPM dan .deb?

29

Saya bertanya-tanya apakah secara teori dimungkinkan untuk membangun distro Linux yang dapat mendukung paket-paket rpm dan debian.

Apakah ada distro yang mendukung keduanya?

Dan jika tidak apakah itu mungkin?

alkabari
sumber
4
Kecuali kita menganggap paket dengan jumlah dependensi yang tidak dapat dihitung, saya tidak melihat bagaimana menginstalnya secara teori tidak mungkin.
Dmitry Grigoryev
2
Itu akan mungkin jika Anda meninggalkan resolusi ketergantungan kepada pengguna :)
rackandboneman
@rackandboneman dalam hal ini, Slackware plus alienuntuk mengonversi paket ke file .tgz akan berfungsi :) Jika Anda menggunakan sumber debs atau rpms LFS dapat melakukannya juga.
ivanivan
@DmitryGrigoryev IIRC, resolusi dependensi adalah NP-lengkap ketika Anda memungkinkan untuk dependensi negatif (konflik).
user253751
@immibis NP-complete mengimplikasikan computable. Noncomputable artinya mis "jika program ini ditutup dengan libc5, instal libc6".
Dmitry Grigoryev

Jawaban:

42

Saya tidak berpikir ada distribusi di luar sana yang mendukung keduanya secara asli, tetapi ternyata ada satu dalam pengembangan, Bedrock Linux (terima kasih kepada iMalinowski untuk informasinya). Pada distribusi lain Anda dapat menggunakan alat konversi seperti alienuntuk mengkonversi dari satu format ke format lainnya. Apa pun yang berbasis perangkat lunak dapat dilakukan, diberi waktu dan energi yang cukup, sehingga akan mungkin untuk membangun distribusi seperti itu (tetapi mengingat perbedaan antara kemampuan .debdan .rpmpaket, cukup sulit).

Namun semua ini mungkin berasal dari gagasan bahwa mendukung kedua format paket akan membuat hidup lebih mudah, karena Anda kemudian dapat menginstal paket dari mana saja (baik, di mana saja menyediakan a .debatau .rpm). Secara filosofis, itu cacat. Distribusi adalah seperangkat paket yang koheren; jika Anda ingin menyediakan perangkat lunak untuk distribusi itu, Anda benar-benar perlu menargetkannya secara spesifik, yang meliputi penggunaan format paketnya (dan yang lebih penting, metadata). Tidak ada gunanya mendukung berbagai format paket secara asli.

(Di dunia Debian, paket dapat bekerja pada varian yang bukan target utama mereka, karena nomenklatur paket agak homogen, dan karena sebagian besar distribusi sesuai dengan pohon warisan. Itu tidak benar di dunia RPM. Dalam kedua kasus, pencampuran dan pencocokan adalah ide yang buruk.)

Anda harus mempertimbangkan distribusi Anda sebagai dasar untuk membangun sistem yang Anda inginkan, berpegang teguh pada aturan dan ekosistem distribusi Anda, tanpa mencampur hal-hal dari distribusi lain. Anda memerlukan abstraksi tingkat yang lebih tinggi untuk mendukung pencampuran dan pencocokan (atau lebih tepatnya, untuk menyediakan lingkungan distribusi silang): Steam runtime, Flatpak, dll.

Stephen Kitt
sumber
10

Tidak, monster seperti itu seharusnya tidak dibangun. Tidak seperti, katakanlah, bundel aplikasi MacOS, yang biasanya mencakup semua yang perlu dijalankan aplikasi pada sistem operasi, paket RPM dan .deb hampir selalu bergantung pada paket lain, seperti pustaka bersama. Paket-paket Linux mencantumkan paket-paket lain yang perlu ada, dan manajer paket membantu menegakkan persyaratan tersebut. Lebih jauh lagi, distribusi Linux berbeda dalam hal hal dilakukan (misalnya /etc/network/interfaces.dvs. /etc/sysconfig/network-scripts).

Anda bahkan tidak boleh mencampur paket dari repositori sewenang-wenang dalam keluarga format paket yang sama. Artinya, menginstal paket SuSE pada mesin CentOS hanya meminta masalah, meskipun mereka berdua menggunakan RPM. Saya bahkan tidak akan menginstal paket yang ditujukan untuk versi berbeda dari OS yang sama (misalnya paket Ubuntu 14.04 pada sistem 16.04) kecuali saya tahu persis apa yang saya lakukan.

Jadi, mencoba mendukung RPM dan .deb pada sistem yang sama tidak mungkin dilakukan. Dalam situasi putus asa tertentu, Anda dapat mengonversi paket tertentu menggunakan alien, tetapi Anda harus berharap banyak upaya dalam memecahkan masalah yang pasti akan timbul dari peretasan tersebut.

200_sukses
sumber
3
Bahkan untuk distro yang berasal dari keluarga yang sama, paket pencampuran bisa menjadi ide yang buruk. Sebagai contoh, Debian dan Ubuntu keduanya berbasis deb tetapi Ubuntu telah membuat beberapa keputusan desain yang berbeda dari Debian sehingga menggunakan paket Ubuntu di Debian mungkin tidak selalu berfungsi.
slebetman
1
Bahkan mencampur versi distro Debian adalah ide yang buruk: wiki.debian.org/DontBreakDebian#Don.27t_make_a_FrankenDebian
stanri
Lalu ada Mint yang berbasis Ubuntu yang didasarkan pada Debian ... :-)
DevSolar
1
Saya tidak akan mengatakan saya pikir itu ide yang bagus. Pada saat yang sama, saya gagal melihat mengapa itu adalah ide yang mengerikan. Saya pikir masalah ini dapat diatasi - hanya saja tidak ada hadiah nyata untuk melakukannya.
emory
9

Nah, ada alien( halaman manual ), yang dapat mengkonversi antara rpm, debdll, tetapi saya akan berasumsi masalah sebenarnya berasal dari penanganan dependensi (nama paket yang berbeda untuk perangkat lunak), dan lokasi file konfigurasi.

Tentu saja, jika Anda bermaksud bahwa kedua jenis paket dapat berasal dari distribusi itu sendiri, itu mungkin dapat diselesaikan, tetapi mengapa ada orang yang melakukan itu ... (Dan Anda masih perlu mengubah semuanya menjadi satu atau yang lain , karena saya pikir tidak dpkgtahu cara membaca database rpmdan sebaliknya.)

ilkkachu
sumber
3

Ya, itu mungkin, tetapi merusak distribusi.

Paket bukan hanya format, yang dapat dengan mudah dipindahkan dari satu format ke format lainnya.

Catatan: alat instalasi paket perlu porting, karena seseorang ingin memiliki daftar semua paket, versi, dependensi, file konfigurasi terpusat, skrip instalasi pra dan pasca pemasangan (jika Anda mengganti satu paket dengan yang lain, dalam paket lain format, Anda berharap bahwa skrip penghapusan instalasi (format lama) dijalankan dari sistem paket baru.

Tetapi distribusi dan paket lebih dari sekadar format paket. Misalnya untuk Debian: kami ingin meletakkan file di tempat yang benar, kami ingin memberikan halaman manual, kami ingin memiliki beberapa skrip deamonisasi umum, kami ingin agar program berjalan di banyak arsitektur, berbagai lingkungan grafis, sehingga pengguna menemukan dirinya akrab di dalam suatu distribusi juga dengan paket-paket baru.

Di Debian kami ingin agar paket mudah dibangun oleh pengguna (dari sumber), sehingga orang dapat menyesuaikan beberapa paket penting (untuknya). Ini membutuhkan banyak infrastruktur, yang sebagian besar penulis hulu tidak dapat menyediakan (membangun dan menguji secara otomatis pada berbagai arsitektur, dan dilakukan dari waktu ke waktu). Dan juga Debian khusus adalah persyaratan lisensi, sehingga lebih mudah untuk membayar paket atau distribusi, tanpa perlu memeriksa semua paket.

Pada akhirnya, distribusi dilakukan oleh paket yang konsisten, bukan hanya oleh paket.

Giacomo Catenazzi
sumber
0

Ya dan sebagian besar distro berbasis deb sudah melakukannya, tetapi ...

Pada Debian dan keluarga terkait, setidaknya, Anda memiliki alien, yang akan memungkinkan Anda untuk menginstal paket RPM.

Anda akan memiliki masalah yang sama ketika Anda mencampur paket yang tidak dirancang untuk bekerja dengan distro Anda ketika Anda menginstal paket asing terlepas dari formatnya - jika Anda menginstal RPM pada sistem berbasis DEB, bahwa RPM harus kompatibel dengan sistem Anda , sama seperti jika Anda menginstal paket RPM pada sistem berbasis RPM, dan itu adalah tetapi. Anda bisa melakukannya, tetapi Anda mungkin tidak mau.

Lebih jelas
sumber
0

Iya dan tidak. deb dan rpm hanyalah format. Anda dapat mendukung kedua format tetapi tidak ada gunanya. Paket umumnya tidak dapat dibandingkan antar distribusi terutama distribusi yang tidak didasarkan pada satu sama lain.

Jika semua distribusi memiliki persyaratan versi yang sama maka semua distribusi akan menjadi pilihan paket. Anda dapat menginstal distribusi apa pun dengan mendaftar paket.

Tetapi distribusi harus menyediakan perangkat lunak yang dapat mereka dukung. Jika perpustakaan yang membuat aplikasi Anda berfungsi tidak terpelihara dan itu sendiri membutuhkan perpustakaan yang telah digantikan oleh sesuatu yang lain bagaimana Anda menyelesaikan konflik ini? Manajer paket tidak dapat memasukkan kode. Mungkin ada beberapa penerus yang dipilih oleh distribusi yang berbeda untuk.

jwwolf
sumber