Что такое бинарный пакет? Как их построить?


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 - это пакет приложения, который содержит (предварительно созданные) исполняемые файлы, а не исходный код.

Обратите внимание, что это не означает, что файл пакета сам по себе является исполняемым файлом. Файл пакета - это архив (вроде как a .zip), который содержит другие файлы, а «двоичный» файл пакета - это тот, который конкретно содержит исполняемые файлы (хотя, опять же, исполняемые файлы не обязательно являются действительно двоичными файлами, и фактически двоичные пакеты могут использоваться для скомпилированные библиотеки, которые являются двоичным кодом, но не исполняемыми файлами). Однако для доступа к этим файлам пакет должен быть распакован.

Обычно об этом заботится система управления пакетами (например, apt / dpkg), которая загружает пакет, распаковывает и устанавливает двоичные файлы внутри вас.

В чем разница между бинарным пакетом и пакетом deb?

Нет, .debпакеты - это бинарные пакеты, хотя есть .debs, которые содержат исходные тексты, обычно они -srcдобавляются к их имени.

Я запускаю какой-то прямой пакет в формате "xyz.linux.run". Что это за пакет?

Как правило, это самораспаковывающиеся двоичные пакеты; они работают, встраивая двоичную полезную нагрузку в сценарий оболочки. «Самораспаковывающийся» означает, что вам не нужно вызывать другое приложение (например, менеджер пакетов), чтобы распаковать и использовать их. Тем не менее, поскольку они не работают с менеджером пакетов, разрешение их зависимостей может быть не совсем удачным, и, следовательно, некоторые такие пакеты используют статически связанные исполняемые файлы (в них есть все необходимые библиотеки, встроенные в них), что приводит к потере памяти при использовании. ,


Отличный ответ !, Должен ли я отделиться от этого Вопросы: Как собрать предварительно собранный исполняемый файл (бинарный пакет) из исходного кода?
Пандя

Да, это был бы хороший вопрос сам по себе, если бы здесь не было ответа в какой-то форме.
Златовласка

6

Поскольку на остальную часть вашего вопроса ответили златовласка, в первой части я расскажу, как строить вещи из исходного кода.

Действительно короткая версия заключается в том, что когда вы загружаете исходные файлы из Интернета, с ними обычно ассоциируется файл readme, который должен точно сказать вам, как запустить и запустить программу.

Но сказать вам, что вы читаете readme, на самом деле не отвечает на этот вопрос, поэтому в простом смысле вы можете написать очень простую программу, которая

    #include <stdio.h>

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

и введите gcc helloWorld.cи gccсоздаст этот двоичный файл и выведет программу, которая пишет "Hello World!" в консоль при запуске.

Итак, теперь вы создали программу, однако разве не было бы неприятно вводить каждый исходный файл, который вы хотите компилировать каждый раз, когда вам нужно что-то скомпилировать? Вот для чего makefiles. Если вы натыкаетесь программу , которая имеет кучу исходных файлов он обычно приходят с Makefile или какой - либо другой файл автоматизации сборки ( ant, Cmakeили , autoconfили что - то).

Чтобы создать программы такого типа, просто запустите make <build target>внутри каталога. Makefile для моей программы hello world может включать в себя цель под названием, helloworldкоторая просто компилирует helloWorld.c. Я бы запустил это, make helloworldи он вывел бы двоичный файл.

Обратите внимание, что создание объектов из исходного кода может занять очень много времени и большого объема памяти ( команда Chromium даже рекомендует использовать второй жесткий диск для создания своего источника! ). Также обратите внимание, что когда вы создаете вещи из исходного кода, вам придется иметь дело с зависимостями, а не с менеджером пакетов, делающим это за вас.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.