Мне интересно, возможно ли теоретически создать дистрибутив Linux, который может поддерживать пакеты rpm и debian.
Есть ли какие-нибудь дистрибутивы, которые поддерживают оба?
А если нет, то возможно ли это?
linux
package-management
rpm
dpkg
alkabary
источник
источник
alien
для конвертации пакетов в файлы .tgz сработает :) Если вы используете исходные файлы debs или rpms, LFS также может это сделать.Ответы:
Основа Linux делает это. Не говорю, что я сделал это, или что это хорошая идея, но это делается.
источник
Я не думал, что есть какие-либо дистрибутивы, которые поддерживают обе версии, но оказывается, что есть одна в разработке, Bedrock Linux (спасибо iMalinowski за информацию). В других дистрибутивах вы можете использовать инструменты преобразования, например,
alien
для преобразования из одного формата в другой. Все, что основано на программном обеспечении, выполнимо при условии достаточного количества времени и энергии, поэтому было бы возможно построить такой дистрибутив (но, учитывая различия между возможностями.deb
и.rpm
пакетами, довольно сложно).Однако все это, вероятно, связано с идеей, что поддержка обоих форматов пакетов сделает жизнь проще, потому что вы можете устанавливать пакеты из любого места (ну, где угодно, предоставляя
.deb
или.rpm
). Философски это ошибочно. Дистрибуция - это связный набор пакетов; если вы хотите предоставить программное обеспечение для этого дистрибутива, вам действительно нужно специально на него ориентироваться, что включает использование формата пакета (и, что более важно, метаданных). Нет смысла изначально поддерживать несколько форматов пакетов.(В мире Debian пакеты могут работать с вариантами, которые не являются их основной целью, потому что номенклатура пакетов довольно однородна, и потому что большинство дистрибутивов помещаются в дерево наследования. Это не так в мире RPM. В обоих случаях смешивание и соответствие плохая идея.)
Вы должны рассматривать свой дистрибутив как основу для построения желаемой системы, придерживаясь правил и экосистемы своего дистрибутива, не смешивая вещи с другими дистрибутивами. Вам нужны высокоуровневые абстракции для поддержки микширования и сопоставления (или, скорее, для обеспечения кросс-дистрибутивных сред): среда выполнения Steam, Flatpak и т. Д.
источник
Нет, такого монстра нельзя строить. В отличие, скажем, от пакета приложений MacOS, который обычно включает в себя все, что требуется приложению для работы в операционной системе, пакеты RPM и .deb почти всегда зависят от других пакетов, таких как общие библиотеки. Пакеты Linux содержат список других пакетов, которые должны присутствовать, и менеджер пакетов помогает обеспечить соблюдение этих требований. Кроме того, дистрибутивы Linux отличаются тем, как все делается (например,
/etc/network/interfaces.d
против/etc/sysconfig/network-scripts
).Вы не должны даже смешивать пакеты из произвольных репозиториев в пределах одного семейства форматов пакетов. То есть установка пакетов SuSE на компьютере CentOS просто вызывает проблемы, хотя они оба используют RPM. Я бы даже не установил пакеты, предназначенные для другой версии той же ОС (например, пакеты Ubuntu 14.04 в системе 16.04), если бы я точно не знал, что я делаю.
Таким образом, попытка поддержать и RPM, и .deb в одной системе исключена. В определенных безвыходных ситуациях вы можете конвертировать определенные пакеты, используя
alien
, но вы должны ожидать, что приложите немало усилий для устранения неполадок, которые неизбежно возникнут в результате таких хаков.источник
Ну, есть
alien
( человек страница ), который может конвертировать междуrpm
, иdeb
т.д., но я предполагаю , что фактические проблемы возникают от обработки зависимостей (различные имена пакетов для программного обеспечения), а также расположение файлов конфигурации.Конечно, если вы имеете в виду, что оба типа пакетов могут исходить из самого дистрибутива, возможно, это можно обойти, но тогда зачем кому-то это делать ... (И вам все равно придется конвертировать все в один или другой , так как я не думаю,
dpkg
умеет читать базы данныхrpm
и наоборот.)источник
Да, это возможно, но это разрушает распределение.
Пакеты - это не просто формат, который легко переносится из одного формата в другой.
Примечание: инструменты установки пакетов должны быть портированы, потому что хотелось бы иметь централизованный список всех пакетов, версий, зависимостей, файлов конфигурации, сценариев до и после установки (если вы заменяете один пакет другим, в другом пакете формат, вы ожидаете, что сценарии удаления (старый формат) запускаются из новой системы пакетов.
Но дистрибутив и пакеты - это гораздо больше, чем формат пакетов. Например, для Debian: мы хотим поместить файлы в правильное место, мы хотим предоставить страницу руководства, нам нужны некоторые распространенные сценарии деамонизации, мы хотим, чтобы программа работала во многих архитектурах, в различных графических средах, чтобы пользователь мог найти Сам знакомый внутри дистрибутива также с новыми пакетами .packages.
В Debian мы хотим, чтобы пакеты легко собирались пользователями (из источников), чтобы можно было настроить некоторые важные (для него) пакеты. Это требует большого количества инфраструктуры, которую не может предоставить большинство вышестоящих авторов (автоматическая сборка и тестирование на различных архитектурах, причем время от времени). Кроме того, для Debian характерны требования лицензии, чтобы было проще форкнуть пакет или дистрибутив без необходимости проверять все пакеты.
В конце концов, дистрибутив осуществляется по согласованным пакетам, а не только по пакетам.
источник
Да, и большинство дистрибутивов на основе .deb уже делают это, но ...
На Debian и связанных семействах, по крайней мере, у вас есть
alien
, что позволит вам устанавливать RPM-пакеты.У вас будут те же проблемы, когда вы смешиваете пакеты, которые не предназначены для работы с вашим дистрибутивом, при установке внешних пакетов независимо от формата - если вы устанавливаете RPM в системе на основе DEB, этот RPM должен быть совместим с вашей системой , точно так же, как если бы вы устанавливали пакет RPM в системе на основе RPM, и это все же. Вы можете сделать это, но вы, вероятно, не хотите.
источник
Да и нет. deb и rpm - это просто форматы. Вы можете поддерживать оба формата, но это бессмысленно. Пакеты обычно не сравнимы между дистрибутивами, особенно дистрибутивами, которые не основаны друг на друге.
Если бы во всех дистрибутивах были одинаковые требования к версиям, тогда весь дистрибутив был бы выбором пакета. Вы можете установить любой дистрибутив, перечислив пакеты.
Но дистрибутивы должны предоставлять программное обеспечение, которое они могут поддерживать. Если библиотека, которая заставляет ваше приложение работать, не поддерживается и сама требует библиотеки, которая была заменена чем-то другим, как вы решаете этот конфликт? Менеджер пакетов не может портировать код. Может быть несколько преемников, выбранных разными дистрибутивами.
источник