Qu'est-ce que le package binaire? Comment les construire?


12

Je veux obtenir des détails sur le paquet binaire et les exécuter sur linux. J'utilise la base Debian (Ubuntu / Linux mint) Linux os.

  1. Comment construire un paquet binaire à partir des sources? Et puis-je télécharger directement un package binaire pour des applications (comme Firefox, etc.) et des jeux (comme Boswars, etc.)?
  2. J'exécute un paquet direct qui est au format "xyz.linux.run" Quels sont ces paquets? Sont-ils indépendants des dépendances? Ou s'agit-il de packages binaires précompilés?
  3. Comment les construire qui peuvent être exécutées sur le système d'exploitation linux en "xyz.linux.run" directement sur linux.
  4. Quelle est la différence entre le paquet binaire et le paquet deb?

Avez-vous trouvé comment construire un paquet binaire à partir des sources?!
Dr.jacky

Réponses:


17

Au sens strict, un fichier binaire est un fichier qui n'est pas codé en tant que texte lisible par l'homme. Plus familièrement, un «binaire» fait référence à un fichier qui est compilé, du code exécutable, bien que le fichier lui-même ne soit pas exécutable (se référant moins aux autorisations qu'à la capacité à être exécuté seul; certains fichiers de code binaire tels que les bibliothèques sont compilés, mais indépendamment des autorisations, ils ne peuvent pas être exécutés par eux-mêmes). Un binaire qui s'exécute en tant qu'exécutable autonome est un "exécutable", bien que tous les fichiers exécutables ne soient pas des binaires (et il s'agit de permissions: des fichiers texte exécutables qui invoquent un interpréteur via un shebang comme le #!/bin/shsont aussi les exécutables).

Qu'est-ce qu'un paquet binaire?

Un package binaire dans un contexte Linux est un package d'application qui contient des exécutables (pré-construits), par opposition au code source.

Notez que cela ne signifie pas qu'un fichier de package est lui-même un exécutable. Un fichier de package est une archive (un peu comme un .zip) qui contient d'autres fichiers, et un fichier de package "binaire" est un fichier qui contient spécifiquement des exécutables (même si, encore une fois, les exécutables ne sont pas nécessairement de véritables binaires, et en fait des packages binaires peuvent être utilisés pour bibliothèques compilées qui sont du code binaire, mais pas des exécutables). Cependant, le package doit être décompressé pour que vous puissiez accéder à ces fichiers.

Habituellement, cela est pris en charge par un système de gestion de paquets (par exemple apt / dpkg) qui télécharge le paquet et décompresse et installe les fichiers binaires à l'intérieur pour vous.

Quelle est la différence entre le paquet binaire et le paquet deb?

Il n'y en a pas - les .debpaquets sont des paquets binaires, bien qu'il y ait des .debs qui contiennent la source à la place, ceux-ci sont généralement -srcajoutés à leur nom.

J'exécute un paquet direct qui est au format "xyz.linux.run" Quels sont ces paquets?

Ce sont généralement des packages binaires auto-extractibles; ils fonctionnent en incorporant une charge utile binaire dans un script shell. "Auto-extractible" signifie que vous n'avez pas besoin d'appeler une autre application (comme un gestionnaire de packages) pour les décompresser et les utiliser. Cependant, comme ils ne fonctionnent pas avec un gestionnaire de packages, la résolution de leurs dépendances peut être plus un crapshoot et donc certains de ces packages utilisent des exécutables liés statiquement (ils ont toutes les bibliothèques nécessaires intégrées), ce qui gaspille un peu de mémoire lors de leur utilisation. .


Excellente réponse !, Dois-je me séparer de ces questions: Comment construire un exécutable pré-construit (package binaire) à partir de la source?
Pandya

Ouais, ce serait une bonne question toute seule, si on ne répond pas déjà ici sous une forme ou une autre.
goldilocks

6

comme le reste de votre question a été répondu par goldilocks, je vais peser sur la première partie, comment construire les choses à partir de la source.

La version très courte est que lorsque vous téléchargez des fichiers source sur Internet, ils auront généralement un fichier Lisezmoi qui leur est associé, qui devrait vous dire exactement comment obtenir le programme et le faire fonctionner.

Mais vous dire de lire le fichier Lisezmoi ne répond pas vraiment à la question, donc dans un sens basique, vous pouvez écrire un programme très basique qui est

    #include <stdio.h>

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

et tapez gcc helloWorld.cet gccva construire ce binaire et sortir un programme qui écrit "Hello World!" à la console lors de l'exécution.

Ok, alors maintenant que vous avez construit un programme, ne serait-il pas nul d'avoir à taper chaque fichier source que vous vouliez compiler chaque fois que vous aviez besoin de compiler quelque chose? C'est pour ça makefiles. Si vous exécutez à travers un programme qui a un tas de fichiers source , il sera généralement venir avec un Makefile ou un autre fichier d'automatisation de construction ( ant, Cmakeou autoconfou quelque chose).

Pour construire ces types de programmes, exécutez simplement make <build target>à l'intérieur du répertoire. Un makefile pour mon programme hello world pourrait inclure une cible appelée helloworldqui compile juste helloWorld.c. Je courrais ceci par make helloworldet il produirait un binaire.

Notez que la construction de choses à partir de la source peut prendre très longtemps et de grandes quantités de mémoire ( l'équipe Chromium recommande même un deuxième disque dur pour construire leur source! ). Notez également que lorsque vous construisez des choses à partir de la source, vous devrez gérer les dépendances, plutôt que le gestionnaire de paquets le fasse pour vous.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.