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

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

Я хочу получить подробную информацию о бинарных пакетах и ​​запустить их на Linux. Я использую Debian base (Ubuntu/Linux mint) Linux os.

  1. Как собрать бинарный пакет из исходников? И могу ли я напрямую скачать бинарный пакет для приложений (типа firefox и т. д.) и игр (типа boswars и т. д.)?
  2. Я запускаю некий прямой пакет в формате "xyz.linux.run" Что это за пакет? Они независимы от зависимостей? Или это готовые бинарные пакеты?
  3. Как собрать их, которые можно будет запустить в операционной системе Linux, напрямую с помощью «xyz.linux.run» в Linux.
  4. В чем разница между бинарным пакетом и deb-пакетом?

решение1

В строгом смысле двоичный файл — это файл, который не закодирован как текст, читаемый человеком. Говоря более разговорно, «двоичный» относится к файлу, который является скомпилированным исполняемым кодом, хотя сам файл может быть неисполняемым (имея в виду не столько разрешения, сколько возможность запускаться самостоятельно; некоторые файлы двоичного кода, такие как библиотеки, компилируются, но независимо от разрешений они не могут быть выполнены сами по себе). Двоичный файл, который работает как автономный исполняемый файл, является «исполняемым», хотя не все исполняемые файлы являются двоичными (и это касается разрешений: исполняемые текстовые файлы, которые вызывают интерпретатор через shebang, такие как #!/bin/shтакже являются исполняемыми).

Что такое бинарный пакет?

Двоичный пакет в контексте Linux — это пакет приложения, содержащий (предварительно собранные) исполняемые файлы, а не исходный код.

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

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

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

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

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

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

решение2

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

Если говорить совсем коротко, то при загрузке исходных файлов из Интернета к ним обычно прилагается файл 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 даже рекомендует использовать второй жесткий диск для сборки своего исходного кода!). Также обратите внимание, что при сборке чего-либо из исходного кода вам придется иметь дело с зависимостями, а не менеджер пакетов, который сделает это за вас.

решение3

Я думаю, вы ищете решение, похожее на проект OpenSuse Build Service:

build.opensuse.org

Также поддерживает Debian, CentOS, Red Hat.

Связанный контент