Diferença entre “make install” e “sudo make install”

14

Às vezes, encontro problemas ao usar make install , o que me dá um erro permission denied ao gravar em algumas pastas. Então instintivamente eu uso sudo make install . Isso introduzirá problemas adicionais?

Estou usando o Debian Etch.

    
por lokheart 18.09.2011 / 04:12

3 respostas

15

Evite fazer instalações locais nos diretórios do sistema. Os diretórios do sistema, por exemplo, /usr , são reservados para o sistema de gerenciamento de pacotes usar. Por definição, se você estiver fazendo make install , isso significa que você está fazendo uma instalação local e, se precisar fazer sudo make install , isso significa que você não tem permissão para onde quer que esteja escrevendo.

Portanto, se você estiver recebendo erros de permissão com make install , verifique se está tentando instalar nos diretórios do sistema e instale em /usr/local ou semelhante. /usr/local está reservado para instalações locais. Talvez seja necessário se permitir gravar em /usr/local , mas isso geralmente é feito com facilidade. No Debian isto pode ser feito adicionando-se ao grupo staff . Melhor ainda, encontre ou crie um pacote binário e instale-o. Dessa forma, você pode acompanhar facilmente os pacotes instalados e obter outros benefícios do gerenciamento de pacotes.

Observe que o sistema de gerenciamento de pacotes não é instalado em /usr/local , de acordo com o FHS. Veja Seção 9.1 do Manual de Políticas Debian - Hierarquia do sistema de arquivos para uma visão geral.

    
por 18.09.2011 / 04:32
3

Aqui está um resumo básico dos comandos: pergunta:

  • sudo - executa um comando como root
  • execute um script para criar a partir da fonte

Como o comando sudo executa o comando que você passa como root, isso significa que o comando make possui privilégios de superusuário. Isso significa que, se o makefile for malicioso ou qualquer um dos scripts que ele chamar for malicioso, ele poderá comprometer seu sistema.

Em suma, se você não confiar no software, não o instale. Se você confia no software, então executar como root não deve atrapalhar nada.

Nota:

sudo make install é o mesmo que su; make install na maioria dos casos.

    
por 18.09.2011 / 04:20
3

Como foi respondido acima, sudo make install permite que você instale os arquivos em diretórios que são de outra forma somente leitura para você como usuário.

O problema que posso prever é que em uma data posterior você pode querer desinstalar ou atualizar o programa. Se você ainda tiver a árvore de diretórios do código-fonte, um make uninstall irá desinstalá-lo, mas se, como muitos outros usuários comuns, você tiver excluído a árvore de diretórios do código-fonte, você estará sem sorte. E como você não instalou o programa usando um sistema de gerenciamento de pacotes, também poderá não conseguir desinstalar o programa dessa maneira.

A melhor maneira de instalar esses programas pode ser instalá-los em seu diretório pessoal. Passe a opção --prefix=/home/<user>/<some>/<directory> para ./configure . Isso permitirá que você use make install em vez de sudo make install , pois /home/<user>/<some>/<directory> é gravável por você. A desinstalação também é rápida - rm -rf /home/<user>/<some>/<directory>

    
por 18.09.2011 / 07:29