Was ist ein Binärpaket? Wie baue ich sie?

12

Ich möchte Details über Binärpakete erhalten und sie unter Linux ausführen. Ich verwende Debian Base (Ubuntu / Linux Mint) Linux OS.

  1. Wie erstelle ich ein Binärpaket aus dem Quellcode? Und kann ich ein Binärpaket 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, die unter Linux ausgeführt werden können, indem Sie direkt "xyz.linux.run" unter Linux ausführen.
  4. Was ist der Unterschied zwischen Binärpaket und Deb-Paket?
Pandya
quelle
Haben Sie herausgefunden, wie man ein Binärpaket aus dem Quellcode erstellt?!
Dr. Jacky

Antworten:

17

Im engeren Sinne ist eine Binärdatei eine Datei, die nicht als lesbarer Text codiert ist. Umgangssprachlich bezieht sich eine "Binärdatei" auf eine Datei, die kompilierter, ausführbarer Code ist, obwohl die Datei selbst möglicherweise nicht ausführbar ist (dies bezieht sich weniger auf Berechtigungen als auf die Fähigkeit, alleine ausgeführt zu werden; einige Binärcodedateien wie Bibliotheken sind es kompiliert, aber unabhängig von den Berechtigungen können sie nicht alleine 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 es handelt sich um Berechtigungen: ausführbare Textdateien, die einen Interpreter über einen Shebang aufrufen, z. B. #!/bin/shauch ausführbare Dateien).

Was ist ein Binärpaket?

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

Beachten Sie, dass dies nicht bedeutet, dass eine Paketdatei selbst eine ausführbare Datei ist. Eine Paketdatei ist ein Archiv (ähnlich wie a .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 echte Binärdateien sind und tatsächlich Binärpakete verwendet werden können kompilierte Bibliotheken, die Binärcode, aber keine ausführbaren Dateien sind). Das Paket muss jedoch entpackt werden, damit Sie auf diese Dateien zugreifen können.

Normalerweise erledigt das ein Paketverwaltungssystem (zB apt / dpkg), das das Paket herunterlädt und die darin enthaltenen Binärdateien entpackt und installiert.

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

Es gibt keine - .debPakete sind Binärpakete, obwohl es .debs gibt, die stattdessen Quelle enthalten, haben diese normalerweise -srcan ihren Namen angehängt.

Ich führe ein direktes Paket im Format "xyz.linux.run" aus. Was sind diese Pakete?

Dies sind im Allgemeinen selbstextrahierende Binärpakete. Sie arbeiten, indem sie eine binäre Nutzlast in ein Shell-Skript einbetten. "Selbstextrahierend" bedeutet, dass Sie keine andere Anwendung (z. B. einen Paketmanager) aufrufen müssen, um sie zu entpacken und zu verwenden. Da sie jedoch nicht mit einem Paketmanager zusammenarbeiten, kann das Auflösen ihrer Abhängigkeiten eher ein Crapshoot sein. Daher verwenden einige dieser Pakete statisch verknüpfte ausführbare Dateien (in die alle erforderlichen Bibliotheken integriert sind), die bei ihrer Verwendung etwas Speicherplatz verschwenden .

Goldlöckchen
quelle
Ausgezeichnete Antwort! Sollte ich mich von diesen Fragen trennen: Wie erstelle ich eine vorgefertigte ausführbare Datei (Binärpaket) aus dem Quellcode?
Pandya
Ja, das wäre eine gute Frage für sich, wenn sie hier nicht schon in irgendeiner Form beantwortet wird.
Goldlöckchen
6

Da der Rest Ihrer Frage von Goldlöckchen beantwortet wurde, werde ich im ersten Teil abwägen, wie man Dinge aus der Quelle baut.

Die wirklich kurze Version ist, dass wenn Sie Quelldateien aus dem Internet herunterladen, ihnen normalerweise eine Readme-Datei zugeordnet ist, die Ihnen genau sagen sollte, wie Sie das Programm zum Laufen bringen.

Wenn Sie jedoch aufgefordert werden, die Readme-Datei zu lesen, wird die Frage nicht wirklich beantwortet. Im Grunde genommen können Sie also ein sehr einfaches Programm schreiben

    #include <stdio.h>

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

und geben Sie ein gcc helloWorld.cund gccerstellen Sie diese Binärdatei und geben Sie ein Programm aus, das "Hello World!" zur Konsole beim Ausführen.

Ok, jetzt haben Sie ein Programm erstellt, aber wäre es nicht scheiße, jedes Mal, wenn Sie etwas kompilieren mussten, jede einzelne Quelldatei eingeben zu müssen, die Sie kompilieren wollten? Dafür makefilessind da. Wenn Sie über ein Programm ausführen, das eine Reihe von Quelldateien hat , wird es in der Regel mit einer Make - Datei oder einer anderen Build - Automatisierung Datei kommen ( ant, Cmake, oder autoconfoder etwas).

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

Beachten Sie, dass das Erstellen von Dingen aus dem Quellcode sehr lange dauern und viel Speicherplatz beanspruchen kann ( das Chromium-Team empfiehlt sogar eine zweite Festplatte, um den Quellcode zu erstellen! ). 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

Chris Pickard
quelle