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?
linux
package-management
rpm
dpkg
alkabari
sumber
sumber
alien
untuk mengonversi paket ke file .tgz akan berfungsi :) Jika Anda menggunakan sumber debs atau rpms LFS dapat melakukannya juga.Jawaban:
Bedrock Linux melakukan ini. Bukan mengatakan saya sudah melakukan ini, atau itu adalah ide yang baik, tetapi sedang dilakukan.
sumber
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
alien
untuk 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.deb
dan.rpm
paket, 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
.deb
atau.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.
sumber
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.d
vs./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.sumber
Nah, ada
alien
( halaman manual ), yang dapat mengkonversi antararpm
,deb
dll, 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
dpkg
tahu cara membaca databaserpm
dan sebaliknya.)sumber
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.
sumber
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.
sumber
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.
sumber