web-dev-qa-db-fra.com

Quel est le paquet binaire? Comment les construire?

Je veux obtenir des détails sur le paquet binaire et les exécuter sous Linux. Je suis exécuté de Debian Base (Ubuntu/Linux Mint) OS Linux.

  1. Comment construire un package binaire de la source? Et puis-je télécharger directement un package binaire pour les applications (comme Firefox, etc.) et des jeux (comme Boswars, etc.)?
  2. Je gère un paquet direct qui se trouve dans "xyz.linux.run" format que sont ces paquets? Sont-ils indépendants des dépendances? Ou s'agit-il des forfaits binaires pré-construits?
  3. Comment les construire, ce qui peut être exécuté sur le système d'exploitation Linux par directement "xyz.linux.run" sur Linux.
  4. Quelle est la différence entre le paquet binaire et le paquet deb?
12
Pandya

Dans un sens strict, un fichier binaire est celui qui n'est pas un caractère codé en tant que texte lisible humain. Plus colloquablement, un "binaire" fait référence à un fichier compilé, de code exécutable, bien que le fichier lui-même ne soit pas exécutable (se référant pas tellement aux autorisations quant à la capacité d'être exécutée seule; certains fichiers de code binaire tels que les bibliothèques sont compilé, mais quelles que soient les autorisations, elles ne peuvent pas être exécutées tout seuls). Un binaire qui fonctionne comme une exécutable autonome est un "exécutable", bien que tous les fichiers exécutables sont des fichiers binaires (et il s'agit des autorisations: des fichiers texte exécutables qui invoquent un interprète via un shebang tel que #!/bin/sh sont des exécutables aussi).

Qu'est-ce qu'un paquet binaire?

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

Notez que cela ne signifie pas qu'un fichier de colis est lui-même exécutable. Un fichier de paquet est une archive (en quelque sorte comme un .Zip) qui contient d'autres fichiers et un fichier de package "binaire" est celui qui contient spécifiquement des exécutables (bien que des exécutables ne soient pas nécessairement véritablement des fichiers binaires, et des packages binaires peuvent être utilisés pour les bibliothèques compilées qui sont du code binaire, mais pas exécutables). Cependant, le paquet doit être déballé pour que vous accédez à ces fichiers.

Habituellement, cela est pris en charge par un système de gestion de paquets (E.G. APT/DPKG) qui télécharge le package et déballe 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 a pas - .deb Les paquets sont des packages binaires, bien qu'il y ait .debs qui contiennent la source à la place, ils ont généralement -src annexé à leur nom.

Je gère un paquet direct qui se trouve dans "xyz.linux.run" format que sont ces paquets?

Ce sont généralement des packages binaires auto-extrayants; Ils travaillent en incorporant une charge utile binaire dans un script shell. "Auto-extraite" signifie que vous n'avez pas à invoquer une autre application (telle qu'un gestionnaire de paquets) afin de les décompresser et de les utiliser. Cependant, comme ils ne fonctionnent pas avec un gestionnaire de paquets, la résolution de leurs dépendances peut être davantage une crêche et d'où certains packages de ce type sont utilisés lié statiquement exécutables (ils ont toutes les bibliothèques nécessaires les intégrées) qui gaspille une peu de mémoire quand ils sont utilisés.

17
goldilocks

depuis que le reste de votre question a été répondu par Goldilocks, je vais peser dans la première partie, comment construire des choses à partir de la source.

La version vraiment courte est que lorsque vous téléchargez des fichiers source à partir d'Internet, ils auront généralement un readme associé à eux, ce qui devrait vous dire exactement comment obtenir le programme.

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

    #include <stdio.h>

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

et tapez gcc helloWorld.c et gcc _ _ _ _ _ _ _ _ va construire ce programme binaire et émis un programme qui écrit "Hello World!" à la console lorsqu'il est exécuté.

OK, alors maintenant, vous avez construit un programme, cependant ne serait-il pas suce qu'il faut taper dans chaque fichier source que vous vouliez compiler chaque fois que vous aviez besoin de compiler quelque chose? C'est ce que makefiles sont pour. Si vous rencontrez un programme qui possède un groupe de fichiers source, il viendra généralement avec un makefile ou un autre fichier d'automatisation de construction (ant, Cmake ou autoconf ou quelque chose ).

Pour construire ces types de programmes, il suffit de courir make <build target> Dans le répertoire. Un makefile pour mon programme World Hello pourrait inclure une cible appelée helloworld qui vient de compiler helloworld.c. Je voudrais courir cela par make helloworld Et cela émettrait un binaire.

Notez que les choses de construction de la source peuvent prendre beaucoup de temps et de grandes quantités de mémoire ( l'équipe du chrome recommande même un deuxième disque dur de construire leur source! ). Notez également que lorsque vous construisez des choses à partir de la source, vous devrez faire face aux dépendances, plutôt que le gestionnaire de paquets qui le font pour vous

6
Chris Pickard