Diferença entre "make install" e "sudo make install"

15

Às vezes, encontro problemas com o uso, o make installque gera um permission deniederro ao gravar em algumas pastas. Então, instintivamente, eu uso sudo make install. Isso introduzirá problemas adicionais?

Estou usando o Debian Etch.

lokheart
fonte

Respostas:

16

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. Por definição, se você estiver fazendo make installisso significa que está fazendo uma instalação local e se precisar fazer sudo make installisso significa que não tem permissão para onde quer que esteja escrevendo.

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

Observe que, inversamente, o sistema de gerenciamento de pacotes não é instalado no /usr/localFHS. Veja a Seção 9.1 do Manual de Políticas Debian - Hierarquia do sistema de arquivos para uma visão geral.

Faheem Mitha
fonte
3

Aqui está um resumo básico dos comandos:

  • sudo- executa um comando como root
  • make-run um script para construir a partir da fonte

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

Em resumo, se você não confia no software, não o instale. Se você confia no software, a execução como root não deve prejudicar nada.

Nota:

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

beatgammit
fonte
3
Você estava certo ao terminar com "na maioria dos casos". Aqui está um caso de canto.
ederag
3

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

O problema que posso prever é que, posteriormente, você poderá desinstalar ou atualizar o programa. Se você ainda tiver a árvore de diretórios do código-fonte make uninstall, o A desinstalará o programa, mas se, como muitos outros usuários comuns, você tiver excluído a árvore de diretórios do código-fonte, ficará 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 no diretório inicial. Passe a opção --prefix=/home/<user>/<some>/<directory>para ./configure. Isso permitirá que você use em make installvez de sudo make installuma vez que /home/<user>/<some>/<directory>é gravável por você. A desinstalação também é fácil -rm -rf /home/<user>/<some>/<directory>

latexnewbie
fonte