Neste pequeno guia, vou explicar (e ensinar a você) porque é melhor que você compile um programa (digamos Firefox, Vlc, etc) a partir de seu código-fonte, do que baixá-lo (do The Software Center, Yumex, Pacman, etc. ) e instalar.
Primeiro vamos com a teoria:
O que é "compilar"?
Compilar é transformar o código-fonte (código escrito em uma determinada linguagem de programação, digamos C, C ++, etc.) em um programa executável para sua operação por meio do uso do processador para converter a linguagem usada para gerar o código em binário e montador. Também é freqüentemente chamado de embalagem.
Por que é melhor "compilar"?
Primeiro você precisa saber o seguinte para entender o porquê. Dito de forma «bruta» (simples, pouco profissional, etc), cada raça (Pentium, Core, Atom, etc) e suas espécies (Intel, AMD, ARM, etc.) de processador possuem instruções (software escrito em assembler que processa o código) de seu modelo (Core i7, Core i5, Atom x2, Phantom x8, Arm, etc.) e também tem instruções gerais que todos os seus tipos possuem.
Quando você baixa dos repositórios através do Centro de Software / apt-get / Yumex / Yum / Pacman / etc, um programa que instala automaticamente diz que este pré-compilado para operação em todos os processadores possíveis (Intel e Amd). Por se tratar de um programa pré-compilado, aquelas instruções típicas daquele modelo de processador específico se perdem (pense que se um programa como Firefox ou Chrome, que tem mais de 7 ou 8 milhões de linhas de código, eles teriam que colocar todas as instruções específicas para cada processador no mercado, a quantidade de código seria tão grande que aquele programa não seria mais eficiente) restando nada mais do que os gerais de sua marca criadora (Intel, Amd, Arm).
Quando você baixa, descompacta e compila o código-fonte de um programa, ele é compilado com as instruções específicas de TU processador, (o que não significa que não funcionará em uma máquina diferente, apenas que será otimizado especificamente e exclusivamente para o seu processador), libertando e libertando assim toda a potência que o seu processador é capaz de dar graças às suas instruções específicas.
Em detalhes mais técnicos, essas instruções específicas estão intimamente ligadas ao que é conhecido como o chipset de sua placa-mãe, o que é a grande dor de cabeça para quem tem Intel quando queremos atualizar o processador e a placa-mãe.
Você ficaria surpreso com o poder que seu AMD Atom x2 ou voce Intel Core por dentro, 2 Core Duo, i3, etc. do seu PC antigo. Agora você entende por que se fala tanto no mundo Linux sobre a compilação do famoso Kernel (coração de todo sistema operacional)? Imagine se você compilar um sistema completo (ambiente gráfico (Gnome, Kde, etc), Kernel, programas comumente usados (Firefox, Vlc, Chrome, Wine, etc.) especialmente para o seu pc) toda a velocidade e nível de otimização que você teria.
Este princípio de compilação para obter um código otimizado especialmente para sua máquina é aquele usado por distros como Gentoo e derivados (sobre os quais não vou falar agora, uso Fedora minimal com compilação de Gnome 3, kernel e outros programas) onde o sistema, suas atualizações e seus programas são sempre compilados.
Contras da compilação:
Já expliquei todas as vantagens, mas como tudo no universo tem uma contra.
No caso de compilação, eles são;
- O tempo necessário para isso (Firefox com um i7 4790K (sem overclock porque sou muito ruim com voltagens) leva 3 minutos, o Gnome Shell (a barra nada mais) com Gnome-Control-Center me levou cerca de 2 minutos, ambos sendo compilados em ao mesmo tempo no Fedora. Mas em uma máquina com um processador menos potente, este tempo pode ser desproporcionalmente longo).
- O processador usa 100% de sua potência com todos os seus núcleos no máximo, então o consumo e o calor disparam (leve isso em consideração se você tiver overclock ou se for principalmente um notebook), por isso é conveniente que você prepare um mate ou um café para a ocasião.
- Talvez esteja faltando uma biblioteca (ferramenta) que usa um programa para que não haja erros na compilação. Em geral, todas as distros possuem pacotes ou conjuntos deles para evitar isso (eles vêm embalados com várias bibliotecas e outras coisas que permitem que o kernel se comunique como deveria com o processador durante o processo).
Como posso compilar?
Aqui estou falando sobre compilar um programa para uso normal, não um kernel.
aptitude install build-essential dh-make devscripts fakeroot debhelper debian-policy ccache dh-autoreconf autotools-dev build-dep ardor
Eu coloquei debian-policy, mas se sua distribuição não for Debian e der um erro de que tal pacote não existe, apenas ignore. Devo esclarecer que não uso esses sistemas há muito tempo, então se um pacote não estiver mais nos repositórios, não se preocupe.
Para Fedoras:
sudo yum -y instalar cabeçalhos do kerneldesenvolvimento do kernelsudo yum groupinstall "Ferramentas de Desenvolvimento"sudo yum groupinstall "Bibliotecas de Desenvolvimento"
Aqui tenho que pedir desculpas a quem usa Arch (não conheço bem a distro) e OpenSuse, pois não conheço essas distros ou os respectivos pacotes para fazer uma compilação correta (e não corroborei o que está na rede, de modo que para esses dois não sei se funcionam).
Agora que você tem todos os requisitos necessários, você só precisa baixar o código-fonte do programa que deseja compilar, dependendo da extensão que você descompactou usando o terminal (não se preocupe, deixarei os comandos) e quando você vai para a pasta (sempre com o terminal) você faz o mesmo a seguir:
Se você tem a possibilidade de se configurar para escolher os componentes e outros:
./configure
Então você digita:
make
E finalmente para instalar o programa no seu linux:
make install
Comandos para descompactar usando o terminal (o arquivo é descompactado em uma pasta onde o arquivo está localizado):
Arquivos .Tar (tar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pacote | tar cvf arquivo.tar / arquivo / * Descompacte | tar xvf file.tar Exibir conteúdo | tar tvf file.tar
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.gz - .tar.z - .tgz (tar com gzip ) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pacote e zíper | tar czvf archive.tar.gz / archive / Descompacte e descompacte | tar xzvf file.tar.gz Exibir conteúdo (não extraído) | tar tzvf arquivo.tar.gz
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .gz (gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Compressa | arquivo gzip -q (o arquivo é compactado e renomeado como "arquivo.gz") Descompacte | gzip -d file.gz (O arquivo descompacta-o e deixa-o como "arquivo" Observação: o gzip compacta apenas arquivos, não diretórios
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .bz2 (bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Compressa | arquivo bzip2 | arquivo bunzip2 (o arquivo é compactado e renomeado como "arquivo.bz2") Descompacte | bzip2 -d file.bz2 | bunzip2 file.bz2 (O arquivo o descompacta e o deixa como "arquivo") Observação: bzip2 compacta apenas arquivos, não diretórios
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.bz2 (tar com bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Compressa | arquivos tar -c | bzip2> file.tar.bz2 Unzip | bzip2 -dc file.tar.bz2 | tar -xv | tar jvxf file.tar.bz2 (versões recentes do tar) Ver conteúdo | bzip2 -dc file.tar.bz2 | tar -tv
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .zip (zip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Compressa | zip file.zip / mayo / archives Descompacte | descompacte arquivo.zip Exibir conteúdo | descompacte -v arquivo.zip
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .rar (rar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Compressa | rar -a file.rar / may / archives Descompacte | rar -x file.rar Exibir conteúdo | rar -v file.rar | rar -l file.rar
E isso é tudo. Saudações de Buenos Aires, Argentina. Boas Festas e Ano Novo! :).