O que é pacote binário? Como construí-los?

O que é pacote binário? Como construí-los?

Quero obter detalhes sobre o pacote binário e executá-los no Linux. Estou executando o sistema operacional Linux base Debian (Ubuntu/Linux mint).

  1. Como construir um pacote binário a partir do código-fonte? E posso baixar diretamente pacotes binários para aplicativos (como firefox, etc.) e jogos (como boswars, etc.)?
  2. Eu executo algum pacote direto que está no formato "xyz.linux.run". O que são esses pacotes? Eles são independentes de dependências? ou são pacotes binários pré-construídos?
  3. Como construí-los que podem ser executados no sistema operacional Linux diretamente "xyz.linux.run" no Linux.
  4. Qual é a diferença entre pacote binário e pacote deb?

Responder1

Em sentido estrito, um arquivo binário é aquele que não possui codificação de caracteres como texto legível por humanos. Mais coloquialmente, um "binário" refere-se a um arquivo que é compilado, código executável, embora o arquivo em si possa não ser executável (referindo-se não tanto às permissões, mas à capacidade de ser executado sozinho; alguns arquivos de código binário, como bibliotecas, são compilados, mas independentemente das permissões, eles não podem ser executados sozinhos). Um binário que roda como um executável independente é um "executável", embora nem todos os arquivos executáveis ​​sejam binários (e trata-se de permissões: arquivos de texto executáveis ​​que invocam um interpretador por meio de um shebang, como também #!/bin/shsão executáveis).

O que é um pacote binário?

Um pacote binário em um contexto Linux é um pacote de aplicativo que contém executáveis ​​(pré-construídos), em oposição ao código-fonte.

Observe que isso não significa que um arquivo de pacote seja um executável. Um arquivo de pacote é um arquivo (como um .zip) que contém outros arquivos, e um arquivo de pacote "binário" é aquele que contém especificamente executáveis ​​(embora, novamente, executáveis ​​não sejam necessariamente binários verdadeiros e, de fato, pacotes binários podem ser usados ​​para bibliotecas compiladas que são código binário, mas não executáveis). No entanto, o pacote deve ser descompactado para que você possa acessar esses arquivos.

Normalmente isso é feito por um sistema de gerenciamento de pacotes (por exemplo, apt/dpkg) que baixa o pacote, descompacta e instala os binários dentro dele para você.

Qual é a diferença entre pacote binário e pacote deb?

Não existe -- .debpacotes são pacotes binários, embora existam .debs que contenham código-fonte, eles geralmente são -srcanexados ao seu nome.

Eu executo algum pacote direto que está no formato "xyz.linux.run". O que são esses pacotes?

Geralmente são pacotes binários auto-extraíveis; eles funcionam incorporando uma carga binária em um script de shell. "Autoextração" significa que você não precisa invocar outro aplicativo (como um gerenciador de pacotes) para descompactá-los e usá-los. No entanto, como eles não funcionam com um gerenciador de pacotes, resolver suas dependências pode ser mais complicado e, portanto, alguns desses pacotes usamvinculado estaticamenteexecutáveis ​​(eles possuem todas as bibliotecas necessárias incorporadas), o que desperdiça um pouco de memória quando são usados.

Responder2

já que o restante da sua pergunta foi respondido por Cachinhos Dourados, vou analisar a primeira parte, como construir coisas a partir da fonte.

A versão realmente resumida é que quando você baixa arquivos de origem da Internet, eles geralmente terão um leia-me associado a eles, que deve informar exatamente como colocar o programa em funcionamento.

Mas dizer para você ler o leia-me não responde realmente à pergunta, então, em um sentido básico, você pode escrever um programa muito básico que seja

    #include <stdio.h>

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

e digite gcc helloWorld.ce gccconstruirá esse binário e gerará um programa que escreve "Hello World!" para o console quando executado.

Ok, agora você construiu um programa, mas não seria uma droga ter que digitar cada arquivo fonte que você deseja compilar toda vez que precisasse compilar algo? É para isso que makefilesservem. Se você encontrar um programa que possui vários arquivos de origem, ele geralmente virá com um makefile ou algum outro arquivo de automação de compilação ( ant, Cmake, ou autoconfou algo assim).

Para construir esses tipos de programas, basta executá-los make <build target>dentro do diretório. Um makefile para meu programa hello world pode incluir um alvo chamado helloworldque apenas compila helloWorld.c. Eu executaria isso make helloworlde geraria um binário.

Observe que construir coisas a partir do código-fonte pode levar muito tempo e consumir grandes quantidades de memória (a equipe do Chromium até recomenda um segundo disco rígido para construir sua fonte!). Observe também que quando você está construindo coisas a partir do código-fonte você terá que lidar com dependências, em vez de o gerenciador de pacotes fazer isso por você

Responder3

Acho que você está procurando uma solução semelhante ao projeto OpenSuse Build Service:

build.opensuse.org

Também suporta Debian, CentOS, Red Hat.

informação relacionada