バイナリ パッケージとは何ですか? どのようにビルドしますか?

バイナリ パッケージとは何ですか? どのようにビルドしますか?

バイナリ パッケージの詳細を取得し、Linux で実行したいと考えています。Debian ベース (Ubuntu/Linux mint) の Linux OS を実行しています。

  1. ソースからバイナリ パッケージをビルドするにはどうすればいいですか? また、アプリケーション (Firefox など) やゲーム (Boswars など) のバイナリ パッケージを直接ダウンロードできますか?
  2. 「xyz.linux.run」形式の直接パッケージを実行しています。これらのパッケージとは何ですか? 依存関係から独立していますか? または、事前に構築されたバイナリ パッケージですか?
  3. Linux 上で直接「xyz.linux.run」を実行して Linux オペレーティング システムで実行できるビルド方法。
  4. バイナリ パッケージと deb パッケージの違いは何ですか?

答え1

厳密に言えば、バイナリ ファイルとは、人間が読めるテキストとして文字エンコードされていないファイルのことです。より口語的に言えば、「バイナリ」とは、コンパイルされた実行可能コードであるファイルのことですが、ファイル自体は実行可能ではない場合があります (権限ではなく、単独で実行できるかどうかを指します。ライブラリなどの一部のバイナリ コード ファイルはコンパイルされていますが、権限に関係なく、単独では実行できません)。スタンドアロンの実行可能ファイルとして実行されるバイナリは「実行可能ファイル」ですが、すべての実行可能ファイルがバイナリであるわけではありません (これは権限に関するものです。シェバンを介してインタープリターを呼び出す実行可能テキスト ファイル#!/bin/shも実行可能ファイルです)。

バイナリパッケージとは何ですか?

Linux コンテキストにおけるバイナリ パッケージは、ソース コードではなく、(事前にビルドされた) 実行可能ファイルを含むアプリケーション パッケージです。

これは、パッケージ ファイル自体が実行可能ファイルであることを意味するものではないことに注意してください。パッケージ ファイルは、.zip他のファイルを含むアーカイブ ( のようなもの) であり、「バイナリ」 パッケージ ファイルは、特に実行可能ファイルを含むファイルです (ただし、実行可能ファイルは必ずしも真のバイナリではなく、実際、バイナリ パッケージは、バイナリ コードではあるが実行可能ファイルではないコンパイル済みライブラリに使用される場合があります)。ただし、これらのファイルにアクセスするには、パッケージを解凍する必要があります。

通常、これはパッケージ管理システム (apt/dpkg など) によって処理され、パッケージをダウンロードして、内部のバイナリを解凍してインストールします。

バイナリ パッケージと deb パッケージの違いは何ですか?

ありません。.debパッケージはバイナリ パッケージですが、.deb代わりにソースを含む も存在します。これらは通常、-src名前に が追加されます。

「xyz.linux.run」形式の直接パッケージを実行しています。これらのパッケージは何ですか?

これらは通常、自己解凍型のバイナリパッケージです。バイナリペイロードをシェルスクリプトに埋め込むことで機能します。「自己解凍型」とは、解凍して使用するために別のアプリケーション(パッケージマネージャなど)を呼び出す必要がないことを意味します。ただし、パッケージマネージャでは動作しないため、依存関係の解決は運任せになる可能性があり、そのため、このようなパッケージの一部は静的にリンク実行可能ファイル(必要なライブラリがすべて組み込まれている)は、使用時にメモリを少し浪費します。

答え2

質問の残りの部分は goldilocks によって回答されているので、私は最初の部分、つまりソースから構築する方法について意見を述べたいと思います。

簡単に言うと、インターネットからソース ファイルをダウンロードすると、通常、それらに関連付けられた readme があり、プログラムを起動して実行する方法が正確に説明されているはずです。

しかし、Readmeを読むように言っても質問の答えにはなりません。基本的な意味では、非常に基本的なプログラムを書くことができます。

    #include <stdio.h>

    int main( ) {
        printf("Hello World!");
    }

と入力するgcc helloWorld.cと、gccそのバイナリがビルドされ、実行時にコンソールに「Hello World!」と書き込むプログラムが出力されます。

さて、これでプログラムをビルドできましたが、何かをコンパイルする必要があるたびに、コンパイルしたいソース ファイルをすべて入力しなければならないのは面倒だと思いませんか? そのために があります。多数のソース ファイルを持つプログラムに遭遇した場合、通常は makefile またはその他のビルド自動化ファイル ( 、、またはなど)makefilesが付属しています。antCmakeautoconf

これらのタイプのプログラムをビルドするには、make <build target>ディレクトリ内で実行するだけです。私の hello world プログラムの makefile には、 helloworldhelloWorld.c をコンパイルする というターゲットが含まれている場合があります。これを実行するとmake helloworld、バイナリが出力されます。

ソースからビルドすると非常に長い時間と大量のメモリが必要になることに注意してください(Chromium チームは、ソースをビルドするために 2 台目のハード ドライブを推奨しています。また、ソースからビルドする場合は、パッケージマネージャーが代わりにやってくれるのではなく、依存関係に対処する必要があることに注意してください。

答え3

OpenSuse Build Service プロジェクトに似たソリューションを探していると思います:

ビルド

Debian、CentOS、Red Hat もサポートしています。

関連情報