Como fazer tudo o que 'make install' faz com 'install' para um pacote pré-compilado?

2

Pergunto-me que make install faz isso depois de executar este comando com êxito depois de compilar um pacote de origem, o meu sistema toma conhecimento do novo pacote instalado.
Vamos supor que eu tenha recuperado um pacote Linux pré-compilado de algum lugar para minha distribuição e queira usar install em vez de meramente cp para instalar o pacote inteiro descompactado em /usr/local , certificando-se de fazer tudo que um típicosudo make install % faz para este pacote. Eu tentei correr sudo install -r -T ./[pre-compiled package] /usr/local com o objetivo de recursivamente copiar tudo para /usr/local , mas ele falha e parece não fazer nada.

    
por codezombie 27.07.2017 / 08:45

1 resposta

6

make install executa os comandos listados para o destino denominado install in ./Makefile (e os comandos para qualquer outro destino ainda não concluído depende da instalação - por exemplo, o destino da instalação geralmente depende do destino da compilação ( s)). Como disse o @Henrik, isso poderia ser qualquer coisa ... copiando arquivos, criando diretórios, configurando propriedade e / ou permissões, criando ou copiando arquivos de configuração iniciais, e muito mais.

BTW, make install e o comando install são duas coisas completamente diferentes. O primeiro executa um alvo Makefile chamado "install". O último é uma versão sofisticada de cp em esteróides que podem definir proprietário, grupo, permissões e fazer um monte de outras coisas que são úteis ao instalar o software - install é frequentemente usado por destinos de instalação em Makefiles. / p>

De qualquer forma, make e make install são praticamente irrelevantes para o que você deseja fazer - instalar um software pré-compilado.

Para instalar um software pré-compilado, se você tiver um pacote para sua distribuição (por exemplo, um arquivo .rpm ou .deb ), use as ferramentas de distribuição da distribuição para instalá-lo. dpkg no debian / ubuntu, rpm para o fedora etc. Se você ainda não tiver uma cópia do pacote, mas estiver disponível como um pacote para sua distribuição, use apt (debian) ou dnf ou yum (fedora) para buscar e instalá-lo.

Para softwares pré-compilados que não são apropriados (por exemplo, um tar.gz contendo um monte de arquivos), e você não consegue encontrar o código-fonte ou um pacote para ele, sua melhor opção é usar um programa como GNU Stow ou similar.

stow torna bastante fácil instalar software não-empacotado e ainda ser capaz de desinstalá-lo mais tarde (por exemplo, para se preparar para uma nova versão) sem deixar uma enorme confusão de arquivos órfãos para trás ... o que é exatamente o que um simples untar ou cp irá fazer.

O software não gerenciado é uma bagunça esperando para acontecer. Use as ferramentas de pacote fornecidas pelo seu sistema, se possível. se não, use algo como stow .

Um outro programa que eu pretendia mencionar quando escrevi isso ontem foi checkinstall , mas eu não conseguia lembrar nome até agora. O checkinstall facilita a criação de um pacote funcional, se não menos perfeito, de qualquer software que você instalaria com make install . Não é muito útil para programas pré-compilados somente binários (por exemplo, software proprietário), mas pode ser muito útil quando a fonte estiver disponível.

    
por 27.07.2017 / 11:30