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

11

Eu quero obter detalhes sobre o pacote binário e executá-los no linux. Eu estou executando a base Debian (Ubuntu / Linux mint) Linux OS.

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

2 respostas

16

Em um sentido estrito, um arquivo binário é aquele que não é codificado como texto legível por seres humanos. Mais coloquialmente, um "binário" refere-se a um arquivo que é compilado, código executável, embora o próprio arquivo possa não ser executável (referindo-se não tanto às permissões quanto à capacidade de ser executado sozinho; alguns arquivos binários como bibliotecas são compilados, mas independentemente das permissões, eles não podem ser executados sozinhos). Um binário que é executado como um executável autônomo é um "executável", embora nem todos os arquivos executáveis sejam binários (e isso é sobre permissões: arquivos de texto executáveis que invocam um intérprete por meio de um shebang como #!/bin/sh são executáveis também). p>

What is a binary package?

Um pacote binário em um contexto linux é um pacote de aplicativos que contém executáveis (pré-criados), ao contrário do 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 .zip ) que contém outros arquivos, e um arquivo de pacote "binário" é aquele que contém especificamente executáveis (apesar de que executáveis não são necessariamente binários e, na verdade, pacotes binários podem ser usado 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.

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

What is diference between binary package and deb package?

Não existem - .deb packages são pacotes binários, embora existam .deb s que contêm source, em geral, eles têm -src anexados ao seu nome.

I run some direct package which is in "xyz.linux.run" format What are these package?

Esses são geralmente pacotes binários auto-extraíveis; eles trabalham incorporando uma carga binária em um script de shell. "Autoextrair" 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 uma armadilha e, portanto, alguns desses pacotes usam executáveis estaticamente vinculados (eles têm todas as bibliotecas necessárias incorporadas) que desperdiça um pouco de memória quando eles são usados.

    
por 08.05.2014 / 13:16
6

desde que o resto da sua pergunta foi respondida por Cachinhos Dourados, eu irei pesar na primeira parte, como construir coisas a partir da fonte.

A versão realmente curta é que, quando você faz o download de arquivos fonte da Internet, eles geralmente têm um readme associado a eles, o que deve lhe dizer exatamente como colocar o programa em funcionamento.

Mas dizer a você para ler o readme não responde a pergunta, então, em um sentido básico, você pode escrever um programa muito básico que é

    #include <stdio.h>

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

e digite gcc helloWorld.c e gcc criarão esse binário e produzirão um programa que grava "Hello World!" para o console quando executado.

Ok, então agora você construiu um programa, mas não seria ruim ter que digitar cada arquivo de origem que você queria compilar toda vez que você precisasse compilar alguma coisa? Isso é o que makefiles é para. Se você se deparar com um programa que possui vários arquivos de origem, ele geralmente virá com um makefile ou algum outro arquivo de automação de construção ( ant , Cmake ou autoconf ou algo assim).

Para criar esses tipos de programas, basta executar make <build target> dentro do diretório. Um makefile para o meu programa hello world pode incluir um alvo chamado helloworld que compila helloWorld.c. Eu executaria isso por make helloworld e produziria um binário.

Observe que criar elementos da origem pode levar muito tempo e grandes quantidades de memória ( A equipe do Chromium recomenda até mesmo 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 as dependências, ao invés do gerenciador de pacotes fazer isso para você

    
por 08.05.2014 / 17:20