Différence entre «make install» et «sudo make install»

15

Parfois, je rencontre des problèmes d'utilisation make installqui me donnent une permission deniederreur lors de l'écriture dans certains dossiers. Donc instinctivement j'utilise sudo make install. Cela introduira-t-il des problèmes supplémentaires?

J'utilise Debian Etch.

lokheart
la source

Réponses:

16

Évitez de faire des installations locales dans les répertoires système. Les répertoires système, par exemple /usr, sont réservés au système de gestion de paquets à utiliser. Par définition, si vous faites make installcela, cela signifie que vous effectuez une installation locale, et si vous devez le faire, sudo make installcela signifie que vous n'avez pas la permission de l'endroit où vous écrivez.

Donc, si vous obtenez des erreurs d'autorisation avec make install, vérifiez et voyez si vous essayez d'installer dans les répertoires système, et installez dans /usr/localou similaire à la place. /usr/localest réservé aux installations locales. Vous devrez peut-être vous autoriser à écrire /usr/local, mais cela se fait généralement facilement. Sur Debian, cela peut être fait en vous ajoutant au staffgroupe. Mieux encore, recherchez ou créez un package binaire et installez-le à la place. De cette façon, vous pouvez facilement garder une trace des packages installés et obtenir les autres avantages de la gestion des packages.

Notez que le système de gestion des packages ne s'inverse pas dans /usr/local, selon le FHS. Voir la section 9.1 du manuel de politique Debian - Hiérarchie du système de fichiers pour un aperçu.

Faheem Mitha
la source
3

Voici un aperçu de base des commandes:

  • sudo- exécuter une commande en tant que root
  • make- exécutez un script pour construire à partir de la source

Puisque la commande sudo exécute la commande que vous lui passez en tant que root, cela signifie que la commande make a des privilèges de super-utilisateur. Cela signifie que si le makefile est malveillant, ou si l'un des scripts qu'il peut appeler est malveillant, cela pourrait compromettre votre système.

En bref, si vous ne faites pas confiance au logiciel, ne l'installez pas. Si vous faites confiance au logiciel, l'exécution en tant que root ne devrait rien faire de mal.

Remarque:

sudo make installest le même que su; make installdans la plupart des cas.

beatgammit
la source
3
Vous avez eu raison de terminer par "dans la plupart des cas". Voici un cas d'angle.
ederag
3

Comme il a été répondu ci-dessus, sudo make installvous permet d'installer les fichiers dans des répertoires qui sont autrement en lecture seule pour vous en tant qu'utilisateur.

Le problème que je peux prévoir est qu'à une date ultérieure, vous souhaiterez peut-être désinstaller ou mettre à niveau le programme. Si vous avez toujours l'arborescence du répertoire du code source make uninstall, a désinstallera le programme pour vous, mais si, comme beaucoup d'autres utilisateurs typiques, vous avez supprimé l'arborescence du répertoire du code source, vous n'avez pas de chance. Et comme vous n'avez pas installé le programme à l'aide d'un système de gestion de packages, vous ne pourrez peut-être pas non plus désinstaller le programme de cette façon.

La meilleure façon d'installer de tels programmes peut être de les installer dans votre répertoire personnel. Passez l'option --prefix=/home/<user>/<some>/<directory>à ./configure. Cela vous permettra d'utiliser make installau lieu de sudo make installpuisque /home/<user>/<some>/<directory>vous pouvez l'écrire. La désinstallation est également un jeu d'enfant -rm -rf /home/<user>/<some>/<directory>

latexnewbie
la source