171 votes

'sudo gem install' ou 'gem install' et les emplacements des gemmes

Running sudo gem list --local et gem list --local ' me donnent des résultats différents. Le chemin de mes gemmes est fixé à mon dossier personnel et ne contient que les gemmes de ' gem list --local '.

Il n'est probablement pas bon d'avoir des gemmes installées dans différents répertoires sur mon ordinateur, donc je devrais avoir le chemin des gemmes défini différemment, et je devrais toujours utiliser sudo lors de l'installation de quelque chose ?

my ~/.profile
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"

~/.bash_profile est vide.

2 votes

Je pense que c'est une question valable pour ceux d'entre nous qui doivent utiliser une gemme qui nécessite des privilèges Root.

1 votes

En rapport : stackoverflow.com/questions/21141584/ . J'utilise rbenv pour gérer les versions de Ruby et j'ai rencontré un problème parce que j'ai utilisé sudo gem install rails au lieu de gem install rails .

4 votes

"Je pense que c'est une question valable pour ceux d'entre nous qui doivent utiliser une gemme qui nécessite des privilèges Root." Je pense que toute gemme qui nécessite des privilèges Root, soit pour être installée, soit pour s'exécuter, est très suspecte. Les gemmes devraient pouvoir fonctionner dans un bac à sable et s'exécuter avec les autorisations de l'utilisateur.

9voto

Todd Vierling Points 121

Dans le même ordre d'idée (pour les utilisateurs de bundler), si vous voulez une alternative plus légère à RVM qui placera tout dans un répertoire connu et spécifique à l'utilisateur, je recommande d'utiliser :

bundle install --path $HOME/.gem

si vous voulez installer les gemmes au même endroit que les

gem install --user-install GEMNAME

les installera, .gem/ruby/RUBYVERSION dans votre homedir. (Voir l'autre commentaire sur cette question à propos de --user-install .)

Cela rendra les gemmes visibles pour gem list désinstallable via gem uninstall etc. sans avoir besoin de sudo accès. Les scripts exécutables installés par gem ou bundler peuvent être mis dans votre chemin en ajoutant

$HOME/.gem/ruby/RUBYVERSION/bin

à votre $PATH . gem vous en informe s'il n'est pas défini lorsque vous faites gem install --user-install .

0 votes

Merci pour cette initiative. Est-il possible de faire en sorte que bundler fasse cela par défaut (et si oui, est-ce une bonne idée ?).

3voto

Chadi Saad Points 11

Vous pouvez installer des gems dans un dossier spécifique (par exemple vendor/) de votre application Rails en utilisant :

bundle install --path vendor

0 votes

Ceci. De nos jours, le seul programme qui devrait avoir besoin de sudo pour installer un logiciel est votre gestionnaire de paquets.

2voto

monfresh Points 2330

L'installation de gemmes Ruby sur un Mac est une source fréquente de confusion et de frustration. Malheureusement, la plupart des solutions sont incomplètes, dépassées, et fournissent de mauvais conseils. Je suis content que la réponse acceptée ici dise de NE PAS utiliser sudo ce que vous ne devriez jamais avoir à faire, surtout si vous ne comprenez pas ce qu'il fait. Bien que j'aie utilisé RVM il y a des années, je recommande chruby en 2020.

Certaines des autres réponses ici fournissent des options alternatives pour l'installation des gemmes, mais elles ne mentionnent pas les limitations de ces solutions. Ce qui manque, c'est une explication et une comparaison des différentes options et pourquoi vous pourriez choisir l'une plutôt que l'autre. J'ai essayé de couvrir les scénarios les plus courants dans mon Guide définitif d'installation des gemmes Ruby sur un Mac .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X