Was ist ein Binärpaket? Wie erstellt man es?

Was ist ein Binärpaket? Wie erstellt man es?

Ich möchte Einzelheiten zu Binärpaketen erfahren und sie unter Linux ausführen. Ich verwende das auf Debian basierende (Ubuntu/Linux Mint) Linux-Betriebssystem.

  1. Wie erstelle ich ein Binärpaket aus dem Quellcode? Und kann ich Binärpakete für Anwendungen (wie Firefox usw.) und Spiele (wie Boswars usw.) direkt herunterladen?
  2. Ich führe ein direktes Paket im Format „xyz.linux.run“ aus. Was sind diese Pakete? Sind sie unabhängig von Abhängigkeiten? Oder sind es vorgefertigte Binärpakete?
  3. So erstellen Sie sie, sodass sie auf dem Linux-Betriebssystem ausgeführt werden können, indem Sie direkt „xyz.linux.run“ auf Linux ausführen.
  4. Was ist der Unterschied zwischen einem Binärpaket und einem Deb-Paket?

Antwort1

Streng genommen ist eine Binärdatei eine Datei, die nicht als menschenlesbarer Text zeichenkodiert ist. Umgangssprachlich bezieht sich „Binär“ auf eine Datei, die kompilierter, ausführbarer Code ist, obwohl die Datei selbst möglicherweise nicht ausführbar ist (wobei sich dies nicht so sehr auf Berechtigungen bezieht, sondern auf die Fähigkeit, allein ausgeführt zu werden; einige Binärcodedateien wie Bibliotheken werden kompiliert, können aber unabhängig von Berechtigungen nicht allein ausgeführt werden). Eine Binärdatei, die als eigenständige ausführbare Datei ausgeführt wird, ist eine „ausführbare Datei“, obwohl nicht alle ausführbaren Dateien Binärdateien sind (und hier geht es um Berechtigungen: Ausführbare Textdateien, die einen Interpreter über ein Shebang aufrufen, #!/bin/shsind ebenfalls ausführbare Dateien).

Was ist ein Binärpaket?

Ein Binärpaket im Linux-Kontext ist ein Anwendungspaket, das (vorgefertigte) ausführbare Dateien und keinen Quellcode enthält.

Beachten Sie, dass dies nicht bedeutet, dass eine Paketdatei selbst eine ausführbare Datei ist. Eine Paketdatei ist ein Archiv (ähnlich wie ein .zip), das andere Dateien enthält, und eine „binäre“ Paketdatei ist eine Datei, die speziell ausführbare Dateien enthält (obwohl ausführbare Dateien nicht unbedingt wirklich Binärdateien sind und tatsächlich Binärpakete für kompilierte Bibliotheken verwendet werden können, die Binärcode, aber keine ausführbaren Dateien sind). Das Paket muss jedoch entpackt werden, damit Sie auf diese Dateien zugreifen können.

Normalerweise übernimmt dies ein Paketverwaltungssystem (z. B. apt/dpkg), das das Paket herunterlädt und die darin enthaltenen Binärdateien für Sie entpackt und installiert.

Was ist der Unterschied zwischen einem Binärpaket und einem Deb-Paket?

Das ist nicht der Fall – .debPakete sind Binärpakete, obwohl es .debstattdessen s gibt, die Quellcode enthalten, der normalerweise -srcan ihren Namen angehängt ist.

Ich führe ein direktes Paket im Format „xyz.linux.run“ aus. Um welche Pakete handelt es sich?

Dabei handelt es sich im Allgemeinen um selbstextrahierende Binärpakete. Sie funktionieren, indem sie eine binäre Nutzlast in ein Shell-Skript einbetten. „Selbstextrahierend“ bedeutet, dass Sie keine andere Anwendung (wie etwa einen Paketmanager) aufrufen müssen, um sie zu entpacken und zu verwenden. Da sie jedoch nicht mit einem Paketmanager funktionieren, kann das Auflösen ihrer Abhängigkeiten eher ein Glücksspiel sein, und daher verwenden einige dieser Paketestatisch verknüpftausführbare Dateien (sie haben alle notwendigen Bibliotheken integriert), die bei ihrer Verwendung etwas Speicher verschwenden.

Antwort2

da der Rest Ihrer Frage von Goldlöckchen beantwortet wurde, werde ich auf den ersten Teil eingehen, nämlich wie man Dinge aus dem Quellcode erstellt.

Kurz gesagt: Wenn Sie Quelldateien aus dem Internet herunterladen, ist diesen normalerweise eine Readme-Datei beigefügt, in der genau erklärt wird, wie Sie das Programm zum Laufen bekommen.

Aber wenn man Ihnen sagt, dass Sie die Readme-Datei lesen sollen, ist das keine wirkliche Antwort auf die Frage. Im Grunde genommen können Sie also ein sehr einfaches Programm schreiben, das

    #include <stdio.h>

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

und geben Sie es ein. Dadurch wird die Binärdatei erstellt gcc helloWorld.cund gccein Programm ausgegeben, das beim Ausführen „Hallo Welt!“ in die Konsole schreibt.

Ok, Sie haben jetzt also ein Programm erstellt. Aber wäre es nicht nervig, jedes Mal, wenn Sie etwas kompilieren müssen, jede einzelne Quelldatei, die Sie kompilieren möchten, eingeben zu müssen? Dafür gibt es ja welche . Wenn Sie auf ein Programm stoßen, das eine Menge Quelldateien hat, wird es normalerweise mit einem Makefile oder einer anderen Datei zur Automatisierung des Builds ( , , oder oder so etwas) makefilesgeliefert .antCmakeautoconf

Um diese Art von Programmen zu erstellen, führen Sie sie einfach make <build target>im Verzeichnis aus. Eine Makefile für mein Hallo-Welt-Programm könnte ein Ziel namens enthalten, helloworlddas einfach helloWorld.c kompiliert. Ich würde dies ausführen make helloworldund es würde eine Binärdatei ausgeben.

Beachten Sie, dass das Erstellen von Objekten aus dem Quellcode sehr lange dauern kann und große Speichermengen erfordert (Das Chromium-Team empfiehlt sogar eine zweite Festplatte zum Erstellen seiner Quelle!). Beachten Sie auch, dass Sie sich beim Erstellen von Dingen aus dem Quellcode mit Abhängigkeiten befassen müssen, anstatt dass der Paketmanager dies für Sie erledigt

Antwort3

Ich glaube, Sie suchen nach einer Lösung ähnlich dem OpenSuse Build Service-Projekt:

build.opensuse.org

Unterstützt auch Debian, CentOS, Red Hat.

verwandte Informationen