RPMパッケージと.debパッケージの両方をサポートするLinuxディストリビューションを構築することは可能ですか?


29

rpmパッケージとdebianパッケージの両方をサポートできるLinuxディストリビューションを理論的に構築できるかどうか疑問に思っています。

両方をサポートするディストリビューションがありますか?

そして、そうでない場合でも可能ですか?


4
計算不可能な数の依存関係を持つパッケージを考慮しない限り、それらのインストールが理論的に不可能になる可能性はありません。
ドミトリーグリゴリエフ

2
依存関係の解決をユーザーに
任せれ

@rackandbonemanの場合、Slackware plus alienはパッケージを.tgzファイルに変換します:)ソースdebsまたはrpmを使用すると、LFSでも同様に実行できます。
ivanivan

@DmitryGrigoryev IIRC、負の依存関係(競合)を許可する場合、依存関係の解決はNP完全です。
user253751

@immibis NP-completeは計算可能を意味します。計算不可とは、たとえば「このプログラムがlibc5でハングアップした場合、libc6をインストールする」という意味です。
ドミトリーグリゴリエフ

回答:



42

両方をネイティブにサポートするディストリビューションは存在しないと思いましたが、開発中のBedrock Linuxがあることわかりました(情報についてはiMalinowskiに感謝します)。他のディストリビューションでは、ある形式から別の形式に変換するなどの変換ツールを使用できます。十分な時間とエネルギーがあれば、ソフトウェアベースのものは何でも実行できます。そのため、そのようなディストリビューションを構築することは可能です(ただし、パッケージの機能とパッケージの違いを考えると、非常に困難です)。alien.deb.rpm

しかし、このすべては、おそらくあなたが(まあ、どこでもAを提供し、どこからでもパッケージをインストールする可能性があるため、両方のパッケージフォーマットをサポートすることは、人生をより簡単になるだろうという考えから、茎.deb.rpm)。哲学的に、それは欠陥があります。配布は、一貫したパッケージのセットです。その配布用のソフトウェアを提供したい場合は、そのパッケージ形式(さらに重要なことに、メタデータ)を使用することを含む、具体的に対象とする必要があります。複数のパッケージ形式をネイティブにサポートしても意味がありません。

(Debianの世界では、パッケージの命名法がかなり均質であり、ほとんどのディストリビューションが継承ツリーに収まるため、パッケージはメインターゲットではないバリアントでも動作します。RPMの世界ではそうではありません。マッチングは悪い考えです。)

ディストリビューションは、他のディストリビューションからのものを混ぜることなく、ディストリビューションのルールとエコシステムに準拠して、目的のシステムを構築するためのベースとして検討する必要があります。Steamランタイム、Flatpakなど、ミキシングとマッチングをサポートする(または、クロスディストリビューション環境を提供する)ために、より高いレベルの抽象化が必要です。


10

いいえ、そのようなモンスターを構築するべきではありません。たとえば、オペレーティングシステム上でアプリケーションを実行するために必要なすべてを通常含むMacOSアプリケーションバンドルとは異なり、RPMおよび.debパッケージはほとんどの場合、共有ライブラリなどの他のパッケージに依存しています。Linuxパッケージには、存在する必要のある他のパッケージがリストされており、パッケージマネージャーはこれらの要件の実施を支援します。さらに、Linuxディストリビューションは物事のやり方が異なります(例/etc/network/interfaces.d:)/etc/sysconfig/network-scripts

同じパッケージ形式ファミリ内の任意のリポジトリのパッケージを混在させないでください。つまり、CentOSマシンにSuSEパッケージをインストールすることは、どちらもRPMを使用していても、単にトラブルを引き起こしているだけです。同じOSの異なるバージョン向けのパッケージ(16.04システム上のUbuntu 14.04パッケージなど)も、自分が何をしているかを正確に知らない限りはインストールしません。

したがって、同じシステム上でRPMと.debの両方をサポートしようとするのは問題外です。特定の絶望的な状況では、を使用して特定のパッケージを変換できますalienが、そのようなハッキングから必然的に発生する問題のトラブルシューティングに多大な努力を注ぐことを期待する必要があります。


3
同じファミリーを起源とするディストリビューションであっても、パッケージの混在は悪い考えです。たとえば、DebianとUbuntuは両方とも.debベースですが、UbuntuはDebianとは異なる設計上の決定を下したため、DebianでUbuntuパッケージを使用しても常に機能するとは限りません。
スリーブマン

1
Debianのディストリビューションバージョンを混在させることは悪い考えです。wiki.debian.org
DontBreakDebian#

次に、Debianに基づいたUbuntuに基づいたMintがあります... :
DevSolar

1
良いアイデアだとは言いません。同時に、なぜそんなにひどい考えなのか、私は見逃しています。これらの問題は克服できると思います-そうすることに対する本当の報酬がないというだけです。
エモリー

9

まあ、alien(など)の間で変換できる(マニュアルページ)がありますが、実際の問題は依存関係(ソフトウェアの異なるパッケージ名)と構成ファイルの場所を処理することから来ると思います。rpmdeb

もちろん、両方のタイプのパッケージがディストリビューション自体に由来する可能性があるということであれば、おそらくそれを回避することができますが、なぜ誰もがそれを行うのでしょうか... 、私はdpkgデータベースの読み方を知らないと思うのでrpm、その逆も同様です。


3

はい、可能ですが、ディストリビューションを台無しにします。

パッケージは単なる形式ではなく、ある形式から別の形式に簡単に移植できます。

注:パッケージインストールツールは、すべてのパッケージ、バージョン、依存関係、構成ファイル、インストール前およびインストール後のスクリプトの一覧を一元管理する必要があるため、移植する必要があります(あるパッケージを別のパッケージに置き換える場合、形式、アンインストールスクリプト(古い形式)が新しいパッケージシステムから実行されることを期待します。

しかし、ディストリビューションとパッケージはパッケージの形式以上のものです。たとえば、Debianの場合:ファイルを正しい場所に配置し、マニュアルページを提供し、一般的なデモスクリプトを作成し、プログラムが多くのアーキテクチャ、さまざまなグラフィカル環境で実行され、ユーザーが見つけられるようにします。ディストリビューション内でも新しいpackages.packagesに精通しています。

Debianでは、(ソースから)ユーザーがパッケージを簡単にビルドできるようにして、重要な(彼にとって)パッケージをカスタマイズできるようにします。これには多くのインフラストラクチャが必要であり、ほとんどのアップストリーム作成者は提供できません(さまざまなアーキテクチャでの自動ビルドとテスト、および時々行われます)。また、Debian固有のライセンス要件もあるため、すべてのパッケージをチェックする必要なく、パッケージまたはディストリビューションをフォークするのが簡単です。

最後に、配布はパッケージだけでなく、一貫したパッケージによって行われます。


0

はい、ほとんどの.debベースのディストリビューションはすでにそれを行っていますが、...

Debianおよび関連するファミリーには、少なくともがありますalien。これにより、RPMパッケージをインストールできます。

フォーマットに関係なく外部パッケージをインストールするときにディストリビューションで動作するように設計されていないパッケージを混在させると同じ問題が発生します-RPMをDEBベースのシステムにインストールする場合、そのRPMはシステムと互換性がある必要があります、RPMベースのシステムにRPMパッケージをインストールしているように、それだけです。できますが、おそらくしたくないでしょう。


0

はいといいえ。debとrpmは単なるフォーマットです。両方の形式をサポートできますが、その意味はありません。通常、パッケージはディストリビューション間で比較できません。特に、互いに基づいていないディストリビューションは比較できません。

すべてのディストリビューションのバージョニング要件が同じ場合、ディストリビューションはパッケージの選択のみになります。パッケージをリストすることにより、任意のディストリビューションをインストールできます。

ただし、ディストリビューションは、サポートできるソフトウェアを提供する必要があります。アプリケーションを動作させるライブラリが維持されておらず、それ自体が他の何かに取って代わられたライブラリを必要とする場合、この競合をどのように解決しますか?パッケージマネージャーはコードを移植できません。異なるディストリビューションによって選択される複数の後継者が存在する場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.