まだオープンソースではないアプリケーションを作成しました。実行可能ファイルをさまざまなLinuxディストリビューションに配布したいと思います。これを行うための最良の方法は何ですか。.rpmと.debのパッケージを少し調べましたが、それがバイナリに使用できるかどうかはわかりません。理想的には、OS XのPackageMakerや、Windowsの通常のインストーラーのように/ usr/binに自動的にコピーするものが欲しいです。それは.rpmおよび.debパッケージの目的ですか、それとも自動的に実行するシェルスクリプトをバンドルする必要がありますか?
5 に答える
RPMパッケージとDEBパッケージは、Linuxでバイナリパッケージを配布するための2つの主要なメカニズムです。RPMはRedHatとその派生物(Fedora、CentOS)で使用され、DEBはDebianとUbuntuで使用されます。
.rpmファイルと.debファイル自体は通常「ダム」アーカイブであり、プリインストールされたヘルパーアプリケーションによってファイルシステムの正しい場所にインストールされます。システムごとの特別な構成が必要な非常に複雑なアプリケーションでない限り、ファイルをインストールするためのスクリプトの作成について心配する必要はありません。
バイナリを配布するために私が見る通常のパターンは次のとおりです。
- 圧縮されたtarball(.tar.gzまたは.tar.bz2)をリリースし、配布パッケージャーに詳細を心配させます。これは人気のあるアプリケーションにはうまく機能しますが、新しくリリースされた場合、誰もあなたのアプリケーションをパッケージ化するのに十分気にすることはありません。
- tarballとしてリリースし、さらにRPMおよび/またはDEBパッケージ(顧客のニーズに応じて)としてリリースします。サポートされているディストリビューションをお持ちのお客様は、事前に作成されたパッケージをインストールできます。珍しいディストリビューションを使用している人は、とにかくtarballからインストールして喜んでいるでしょう。
MojoSetupは、ユーザーフレンドリーで完全にクロスディストロソリューションであり、適切にライセンスされています(zlib、非常に寛容)。必要なのは、sh
Linuxディストリビューションに付属している標準シェルだけです。また、freedesktop.org仕様のショートカットを作成することで、デスクトップショートカットを簡単に作成できます。これは、Linuxのほぼすべてのグラフィカル環境でサポートされています(したがって、さまざまな解像度でPNGをダンプし、.desktopファイルの空白を埋めるだけです)。
インストーラーは非常に単純なLuaプログラミング言語を使用してスクリプト化されており、Mercurialリポジトリにはいくつかのサンプルインストーラースクリプトと長いチュートリアルがあります。また、その開発を軽量のクロスディストリビューションインストーラーにバックアップするのにも何年もかかります。
rpmとdebはバイナリを保存します。ほとんどの場合、ディストリビューションごとに異なるバイナリを用意する必要があります。これは、ディストリビューションごとにパスのように物事が異なるためです。
私はあなたがrpmとdebを持っている2つから始めてそれらの2つのディストリビューションを釘付けにすることをお勧めします。次に、その他のディストリビューションでtarballを実行して、構造を抽出してディレクトリ構造にし、パーミッションを自分でコピーして処理できるようにします。
また、debのようなものについては、サイトをリポジトリとして設定できます。これにより、人々はリポジトリを追加したり、ubuntuでdebを取得/インストールしたりするのが非常に簡単になります。多くのサードパーティのクローズドソース開発者がそれを行っています。
これが.rpmファイルと.debファイルの機能ですが、インストール対象のディストリビューションが.rpmファイルと.debファイルを処理できることを確認する必要があります。複数のディストリビューションにまたがって実行されることが確実で、適切なパッケージマネージャーがあるかどうか確信が持てないものが必要な場合は、シェルスクリプトメソッドを使用する必要があります。.rpmと.debの両方のバイナリをビルドして、それを回避できる場合は、アドバイスします。このようにして、ほとんどのディストリビューションをカバーし、ユーザーが快適で慣れ親しんだ方法でインストールできるようにします。独自のインストーラー/アンインストーラーシェルスクリプトを作成する必要はありません。
おそらく、公式にサポートしているLinuxディストリビューションごとにネイティブパッケージを提供し(公式にサポートしているので、テストするので簡単です)、人々が立ち寄ることができる.tar.gzを提供する必要があります。その他のもの。
ユーザーは、サポートしていないエイリアンのディストリビューションに対して、いつでも独自の.rpmなどを作成できます。ただし、公式にサポートされているOSで動作しない限り、文句を言うことはできません。
どのOSを公式にサポートしていますか?明らかに、それらすべてをテストする必要があります(少なくとも、各リリースの各OSですべての回帰テストスイートに合格する必要があります)。
もちろん、複数のアーキテクチャをサポートしている場合、これは複雑です。