Je suivais ce tutoriel - http://howtonode.org/introduction-to-npm - et définissais / usr / local à $ USER, ce qui, je le réalise maintenant, était une grave erreur.
Est-ce que quelqu'un sait comment je peux annuler ces modifications, tout en permettant à Homebrew, Node, Ruby, etc. de s'installer sans nécessiter de sudo?
sudo chown -R $USER /usr/local
. Cela est critiqué dans un commentaire sur la même page. Comment annuler cela dépend de la manière dont elle/usr/local
a été utilisée précédemment.Réponses:
En ce qui concerne la première partie de votre question, vous ne pouvez pas ⌘ Zannuler les modifications, il n'y a pas de commande ou d'annuler, mais vous pouvez définir les autorisations de manière à deviner ce qu'elles étaient auparavant. Plus à ce sujet dans la première puce ci-dessous.
Pour installer un logiciel,
/usr/local
vous devez disposer d' autorisations d'écriture dans le répertoire (et ses sous-répertoires). Il y a plusieurs façons d'y parvenir:sudo chown -R $USER /usr/local
. Mon arrière-plan d’administrateur système Linux me dit que ce n’est pas la méthode standard, car elle se/usr/local
trouve en dehors de votre répertoire personnel et ne devrait pas vous appartenir. Mais je ne dirais pas que vous avez endommagé quoi que ce soit de façon irréparable.Utilisez
sudo
, mais vous ne voulez pas être obligé de l'utiliser.(De mon point de vue, la meilleure solution . Pourquoi?
sudo
Vous protège de vous-même. Vous réfléchissez à deux fois si vous devez tapersudo
(sauf si vous suivez un tutoriel de http://howtonode.org:-)
).)/usr/local
et modifiez les autorisations eng+rwx
/g+rw
. Lourd. Ne fais pas ça.Vous avez fait 1. et voulez annuler les modifications, 2. vous ne voulez pas, et je ne recommande pas 4., alors je vais expliquer 3 .:
Commençons par "annuler" les modifications que vous avez apportées.
/usr/local
appartenait probablement à l'utilisateurroot
, au groupewheel
. Vous pouvez le définir comme suit:Définissez les ACL de sorte que vous ayez toutes les autorisations:
(voir la
man chmod
sectionACL MANIPULATION OPTIONS
pour plus de détails.)Vous verrez que tous les fichiers ont une
+
annexe,ls -e
affiche les ACL:(J'ai testé les commandes ci-dessus, mais j'ai peut-être fait une faute de frappe. Comme meilleure pratique, je vous recommande d'exécuter les commandes ci-dessus dans un répertoire de test . Vous pouvez le faire
mkdir ~/tmpacl
. Ensuitecd ~/tmpacl
,sudo rsync -av /usr/local/ .
copiez le contenu de/usr/local
dans~/tmpacl
. Ensuite, passezcd /usr/local
chaque ci-dessus pour appliquer les commandes~/tmpacl
. Lorsque vous avez terminé,rm -rf ~/tmpacl
).Maintenant, vous pouvez installer des logiciels (ou faire n'importe quoi, d'ailleurs)
/usr/local
sanssudo
.Notez que tout fichier que vous créez dans vous
/usr/local
appartiendra (commemyACLtestfile
dans la liste ci-dessus), de sorte que vous verrez que certains fichiers sont la propriété deroot
et d’autres par vous.(Si vous changez d'avis et souhaitez revenir dans le monde merveilleux de
sudo
, supprimez les ACL comme suit:et définissez les autorisations sur
root:wheel
:)
** MODIFIER **
Si la routine d'installation du logiciel que vous souhaitez installer utilise
/usr/bin/install
cette solution, cela peut s'avérer une solution beaucoup plus simple. Ajouter:à
~/.bashrc
. Ensuite, faites. ~/.bashrc
en sorte que les modifications prennent effet.Puis éditez
/etc/sudoers
avec la commandesudo visudo
, ajoutez:et enregistrez et fermez le fichier avec
:x
.(Si vous utilisez une autre
install
commande ailleurs dans le système de fichiers, telle que l'installation de GNU, modifiez le chemin ci-dessus de manière appropriée.)Pour que cela fonctionne, le logiciel doit utiliser
/usr/bin/install
. C'est généralement le cas avecmake install
.** /MODIFIER **
la source
/usr/bin/install
doit être utilisé), veuillez le vérifier au bas de ma réponse.Démarrez votre système de récupération HD et voyez si vous voulez utiliser un terminal pour réparer le Mac HD / usr / local manuellement ou si vous préférez simplement restaurer à partir d’une sauvegarde pratique.
Comme les Mac n'ont besoin d'aucun élément dans / usr / local, je ne vois pas en quoi un système ou un élément critique est affecté, alors je ne comprends peut-être même pas votre situation.
la source