Linux のインストール パッケージを他のフォーマットに変換する方法

alien プログラムは、ある Linux ディストリビューションのインストール パッケージを別のディストリビューションで使用できるように変換します。でも、Snap と Flatpak がある今、それは冗長になりませんか?ある意味ではそうかもしれませんが、それほど単純ではありません。

Linux のパッケージング システム

Linux ディストリビューションは、ユーザーがソフトウェアをインストールできるようにするために、ソフトウェア パッケージング システムを必要とします。そのディストリビューションが、別の確立されたディストリビューションのフォークである場合、通常は古いディストリビューションのパッケージング システムを引き継ぎます。

そのため、Fedora は RPM パッケージ(以前は RedHat Package Manager の略)を使用し、Ubuntu とその数多くの子孫は DEB パッケージを使用しています。DEB は単に「Debian」の略です。他のディストリビューションは、独自のパッケージ管理システムを作成することを選択しています。あるパッケージ マネージャー用にパッケージ化されたインストール ファイルは、他のパッケージ マネージャーと互換性はありません。

従来、アプリケーション開発者は、サポートすることを選択したすべてのフォーマットでアプリケーションをパッケージ化するか、さまざまな Linux ディストリビューションのメンテナーと協力してパッケージング手順を彼らに委ねるかのいずれかを行う必要がありました。後者は、ユーザーに新しいリリースを届けるのが遅れる原因となりますが、前者は開発者に多くの追加作業をもたらします。

Snap と Flatpak プロジェクトは、パッケージ配布の聖杯を提供しようとしています。つまり、アプリケーションを 1 回パッケージ化して、どの Linux ディストリビューションにもインストールできるということです。もちろん、探しているアプリケーションの Snap や Flatpak がある場合とない場合があります。

Git リポジトリをクローンしてソース コードからアプリケーションをビルドすることに抵抗がなければ、パッケージング システムを完全に排除することができます。しかし、誰でもそうできるわけではありません。また、すべてのアプリケーション(Linux 上のものでさえ)がオープン ソースであるとは限らないため、とにかくすべてをソースからビルドすることはできません。

一部のディストリビューションのメンテナーは、他のプラットフォームのパッケージを入手し、クローズド ソースのアプリケーションを含む独自のパッケージ管理システム用に再パッケージ化することに長けています。しかし、アプリケーションが DEB または RPM(2 つの主要なフォーマット)を提供し、他の誰もが自分で解決する必要がある場合があります。

alien のようなプログラムは、別のディストリビューションのパッケージ ファイルを、Linux コンピューターで必要なバージョンに変換するという問題を解決するために存在します。理論的には問題ありませんが、どのくらい成功しているのでしょうか?

alien の実験

百聞は一見に如かず。

3 つの異なる RPM を取り、alien を使用して DEB に変換しました。次に、新しく作成した DEB を Ubuntu にインストールしようとしました。

すべてのテスト ケースで、DEB をダウンロードすることもできました。つまり、私たちが行っていたことは実際には冗長でした。しかし、テスト アプリケーション(Microsoft Edge ブラウザ、Atom エディター、Slack)は、alien の機能をテストするのに適していると考えたため、既製の DEB は無視しました。

alien のインストール

alien のインストールは、Ubuntu、Fedora、および Manjaro では簡単でした。

Ubuntu では、次のコマンドを使用できます。

sudo apt install alien

Fedora では、次のように入力する必要があります。

sudo dnf install alien

Manjaro では、alien パッケージは Arch ユーザー リポジトリにあります。これは、pacman では表示できないことを意味するため、yay のような AUR ヘルパー プログラムを使用する必要があります。パッケージ名も少し異なります。

yay -S alien_package_converter

alien の使用

alien を使用するには、変換するファイルと変換先のフォーマットを指定します。同じファイル名(通常)で、要求したフォーマットの拡張子を持つファイルが作成されます。

alien を使用してパッケージを作成すると、alien によってパッケージのバージョン番号が増分されます。パッケージ番号がファイル名にある場合、ファイル名も変更されます。

これらは、alien が変換できるフォーマットです。

  • -d:Debian、Ubuntu、およびすべての派生物の DEB ファイルに変換します。
  • -r:RedHat、CentOS、および Fedora の RPM ファイルに変換します。
  • -t:Arch および Arch ベースのシステム(EndeavourOS や Manjaro など)の TAR.GZ アーカイブ ファイルに変換します。
  • -l:Linux Standard Base ファイルである LSB ファイルに変換します。これは、ディストリビューション間のパッケージ フォーマットを開発する別の取り組みでした。
  • -p:Solaris などで使用されるフォーマットである PKG ファイルに変換します。
  • --to-slp:廃止された Stampede Linux ディストリビューションで使用されるフォーマットである SLP パッケージに変換します。

DEB ファイルに変換するため、使用するフォーマット オプションは-d(DEB)です。また、パッケージに含まれるスクリプトを変換するために-c(スクリプト)オプションも使用します。

Microsoft Edge

Microsoft の Edge ブラウザの RPM をダウンロードし、次のコマンドを実行しました。

sudo alien -d -c microsoft-edge-beta-97.0.1072.54-1.x86_64.rpm

-c(スクリプト)オプションを使用せずに DEB ファイルを作成できず、エラーが報告されました。-c オプションを使用すると、DEB が作成されました。

DEB ファイル名には 54-1 ではなく 54-2 が含まれていることに注意してください。

スクリプトの変換はうまくいかない可能性があります。元のパッケージ ファイルの実際のターゲット プラットフォームに固有の特定の状況や構成に合わせて記述されている可能性があります。このため、期待は高くありませんでした。それにもかかわらず、dpkg プログラムと -i(インストール)オプションを使用して DEB のインストールを試みました。

sudo dpkg -i microsoft-edge-beta_97.0.1072.54-2_amd64.deb

機能しませんでした。

DEB ファイルをダブルクリックして Ubuntu Software アプリケーションを使用して DEB をインストールすることも試しました。興味深いことに、Software アプリケーションは DEB が alien によって作成されたことを認識していました。

それも機能しませんでした。Edge ブラウザが実際に Ubuntu にインストールされることを確認するために、公式の Microsoft Edge DEB ファイルをインストールしました。

sudo dpkg -i microsoft-edge-beta_97.0.1072.54-1_amd64.deb

問題なく機能しました。Ubuntu で実行されている Microsoft Edge を以下に示します。

Atom エディター

人気の Atom エディターの RPM インストール パッケージをダウンロードしました。同じ alien コマンドを使用して DEB に変換しました。

sudo alien -d -c atom.x86_64.rpm

警告やエラーなしに DEB ファイルが作成されました。-i(インストール)オプションを指定して dpkg コマンドを使用してインストールしました。

sudo dpkg -i atom_1.58.0-1.1_amd64.deb

完全に機能しました。

Slack ビジネス メッセージング アプリ

最後に、Slack RPM を DEB に変換してみました。

sudo alien -d -c slack-4.23.0-0.1.fc21.x86_64.rpm

ここでも、警告やエラーなしに DEB が作成されました。次のインストール コマンドを使用しました。

sudo dpkg -i slack_4.23.0-1.1_amd64.deb

インストールは完全に機能しました。Slack は問題なく起動して実行されました。

さまざまな結果

alien のようなユーティリティは、必然的に困難な戦いを強いられています。あらゆるケースで機能できる可能性は低く、これは少数のテストで裏付けられました。そうは言っても、機能した場合は素晴らしいものでした。

他に選択肢がない状況にある場合は、alien を試してみてください。しかし、他に利用可能な方法(Snap、Flatpak、またはソースからのビルド)がある場合は、それらを最初に試してください。alien の作者でさえその限界を知っており、man ページに次のような警告を入れています。

alien は、システムの機能に不可欠な init、libc、またはその他の重要なシステム パッケージを置き換えるために使用しないでください。これらのパッケージの多くは、ディストリビューションごとに異なる方法で設定されており、異なるディストリビューションのパッケージは相互に交換して使用することはできません。一般に、システムを壊さずにパッケージを削除できない場合は、alien バージョンに置き換えようとしないでください。

窮地を脱するのに役立つ場合もありますが、alien に頼る前に他のすべてを試していることを確認してください。

しかし、他に選択肢がない場合は、alien があなたを驚かせるかもしれません。