バイナリパッケージとは何ですか?それらを構築する方法?


12

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

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

ソースからバイナリパッケージをビルドする方法を見つけましたか?!
Dr.jacky

回答:


17

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

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

Linuxコンテキストのバイナリパッケージは、ソースコードではなく、(ビルド済みの)実行可能ファイルを含むアプリケーションパッケージです。

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

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

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

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

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

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


すばらしい答え!、この質問から分離する必要があります:ビルド済みの実行可能ファイル(バイナリパッケージ)をソースからビルドする方法は?
Pandya 2014年

ええ、ここですでに何らかの形で答えられていなければ、それだけでそれは良い質問になります。
goldilocks 2014年

6

あなたの質問の残りはgoldilocksによって答えられたので、私は最初の部分、ソースから物を構築する方法について検討します。

本当に短いバージョンは、インターネットからソースファイルをダウンロードすると、通常、それらに関連付けられたreadmeがあり、プログラムを起動して実行する方法を正確に伝える必要があります。

しかし、readmeを読むように指示しても、実際には質問に答えられないので、基本的な意味で、次のような非常に基本的なプログラムを書くことができます。

    #include <stdio.h>

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

そして、タイプgcc helloWorld.cし、gccそのバイナリ出力に書き込むプログラム構築する「Hello Worldのを!」実行時にコンソールに。

さて、これでプログラムを構築できましたが、何かをコンパイルする必要があるたびにコンパイルしたいすべてのソースファイルを入力する必要はありませんか?それmakefilesが目的です。あなたがソースファイルの束を持っているプログラム全体を実行した場合には、通常(メイクファイルまたはいくつかの他のビルドの自動化ファイルが付属しますantCmakeまたはautoconfか何か)。

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

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

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