Passando do Windows para o Linux, não consigo entender o processo de instalação do software no Linux. No Windows, quando executamos um arquivo de instalação, ele pergunta onde você deseja instalar o programa, provavelmente apenas na pasta de arquivos do programa. Mais tarde, edita o registro. Isso é chamado de instalação no Windows. O que significa 'instalar software' no Linux significa exatamente?
Suponha que eu baixei o código-fonte, configure-o e construa o binário usando make
. Agora é apenas um programa binário, ainda não utilizável. Como é que vai ser 'instalado'? Por make install
? E o que esse comando faz exatamente?
make
installation
KawaiKx
fonte
fonte
make install
etapas do ponto de vista dos programadores.Respostas:
Make é um programa de fluxo de trabalho de uso geral, geralmente usado para compilação. Mas pode ser usado para qualquer coisa.
Quando você faz algo como "make all", o programa make executa uma regra chamada "all" de um arquivo no diretório atual chamado "Makefile". Essa regra geralmente chama o compilador para compilar algum código-fonte em binários.
Quando você faz "make install", o programa make pega os binários da etapa anterior e os copia em alguns locais apropriados para que eles possam ser acessados. Ao contrário do Windows, a instalação requer apenas a cópia de algumas bibliotecas e executáveis e não há nenhum requisito de registro como tal. Em resumo, "make install" apenas copia os arquivos compilados nos locais apropriados.
fonte
all
noMakefile
e como é o marcador final dessa seção, para que eu possa ver onde o processamento das regras paraall
.make install
faz o que oMakefile
autor deseja. Normalmente, a essa altura, é tarde demais para alterar o diretório de instalação, como costuma ser conhecido anteriormente , durante a construção, para que os arquivos de ajuda e os arquivos de configuração possam ser referenciados com os nomes de caminho corretos.Muitos projetos usam as ferramentas automáticas GNU para tentar melhorar sua portabilidade entre as diferenças de hardware e sistema operacional. (Diferentes variantes do Unix usam cabeçalhos ligeiramente diferentes para declarações de funções que estão um pouco fora do caminho usual - exceto que a maioria dos programas precisa de um ou outro daqueles declarados em locais diferentes.)
Quando um projeto usa as Autotools, o mantra normal para instalá-lo é:
O
./configure
tipicamente permite que você use uma opção de linha de comando como--prefix /opt/apache
ou algo semelhante para especificar um caminho diferente./usr/local/
é um padrão comumprefix
. É muito mais fácil o software construído localmente residir em um local e o software fornecido pela distribuição residir nos "diretórios principais":/usr/
/bin/
e assim por diante. (Os empacotadores têm muito cuidado para nunca tocar nos arquivos/usr/local/
- eles sabem que é exclusivo para administradores de sistema.)De qualquer forma, o
./configure --prefix /path/to/new/prefix
irá definir uma variável noMakefile
que está disponível ao compilar o programa, modificando as páginas de manual para que eles apontam para os locais corretos para arquivos, modificar arquivos de configuração, etc. Então,make
vai construir o software especificamente para o local que deseja instalar emake install
irá instalá-lo nesse local.A maioria dos programas pode ser executada mesmo sem a
make install
etapa final - apenas./program_name
os inicia com frequência. Definitivamente, isso é uma coisa por projeto - alguns, comopostfix
,qmail
etc., são feitos de muitas peças móveis diferentes e dependem de todos eles trabalhando juntos. Outros, comols
ousu
podem ser independentes o suficiente para executar bem a partir do diretório em que foram criados. (Isso geralmente não é útil - mas às vezes é muito útil).No entanto, nem todos os projetos usam o Autotools - eles são enormes , complicados e miseráveis de manter.
Makefile
S manuscritos são muito mais simples de escrever, e eu pessoalmente acho que apenas distribuir um simplesMakefile
com variáveis de configuração disponíveis é muito mais fácil para desenvolvedores e usuários. (Embora o./configure ; make ; make install
mantra seja realmente fácil para os usuários quando funciona.)fonte
make install
faz nada menos do que executar ainstall
função / seção em seuMakefile
fonte
make clean
, basicamente, apenas executa os códigos na seção.O mais importante a ser mencionado sobre a instalação de software no Linux é que é muito mais confiável e fácil instalar o software da sua distribuição (esse é o seu objetivo!). Use apenas
make install
se não houver outra maneira (considere também programas alternativos).O erro comum dos usuários do Windows é baixar programas de diferentes locais e tentar instalá-los, esquecendo de verificar seus pacotes de distribuição, que podem ser instalados com um único clique ou comando (no gerenciador de pacotes).
Lembre-se também de que um dos principais motivos para a ausência de infecções por vírus no Linux é que o software é (ou deveria ser) instalado a partir de um local central (confiável) em vez de muitos sites aleatórios.
Como nota adicional, enquanto distribuições como o Ubuntu sempre contêm pacotes desatualizados, também existem distribuições como o Arch Linux que estão sempre atualizadas (embora não ofereçam literalmente todos os programas já lançados para Linux, como o Debian / Ubuntu).
Quanto ao que exatamente aconteceria quando você usa o gerenciador de pacotes, ele verifica as dependências, baixa os pacotes, descompacta e coloca todos os arquivos em seus diretórios apropriados, de acordo com as diretrizes da FHS e da própria distribuição e algumas outras rotinas que você provavelmente pode descobrir sobre na página de manual do gerenciador de pacotes.
fonte