Nach dem Versuch, virtualenv mit pip zu installieren
%Vor%Ich habe eine Fehlermeldung erhalten, die verweigert wurde
%Vor%Also habe ich Sudo benutzt, um virtualenv zu installieren
%Vor%Aber dann tauchte eine Warnung auf:
Das Verzeichnis '/ Benutzer / petertao / Library / Caches / pip / http' oder dessen Eltern Verzeichnis gehört nicht dem aktuellen Benutzer und der Cache wurde behindert. Bitte überprüfen Sie die Berechtigungen und Besitzer dieses Verzeichnisses. Ob Wenn Sie pip mit sudo ausführen, können Sie sudos -H-Flag verwenden.
Das Verzeichnis '/ Benutzer / petertao / Library / Caches / pip' oder dessen Eltern Verzeichnis gehört nicht dem aktuellen Benutzer und Caching Wheels wurde behindert. Überprüfen Sie die Berechtigungen und den Besitzer dieses Verzeichnisses. Ob Wenn Sie pip mit sudo ausführen, können Sie sudos -H-Flag verwenden.
Was bewirkt sudos -H-Flag?
man sudo
oder Ссылка
Der genaue Text kann variieren, aber es wird ähnlich sein.
-H
Die Option -H (HOME) fordert an, dass die Sicherheitsrichtlinie die HOME-Umgebungsvariable auf das Basisverzeichnis des Zielbenutzers (standardmäßig root) gemäß der Angabe in der Kennwortdatenbank setzt. Abhängig von der Richtlinie kann dies das Standardverhalten sein.
Warum ist das überhaupt eine Option? Normalerweise ändert die Verwendung von "sudo" die Umgebungsvariable $ HOME nicht.
zum Beispiel:
%Vor%Sie können sehen, dass ein normales sudo ändert, welcher Benutzer ich von "testuser" zu "root" bin, aber nicht, was $ HOME eingestellt ist, während ein sudo -H auch die Variable von "my" home-Verzeichnis zu root ändert Heimverzeichnis.
pip warnt Sie, dass es als Benutzer root ausgeführt wurde und Dinge in $ HOME ändern wollte, die auf '/ Users / peterta' gesetzt wurde, die nicht im Besitz von root ist (höchstwahrscheinlich der Benutzer "petertao") . Die Warnung zeigt an, dass pip $ HOME verwendet, um Dateien zu chachen, aber aufgrund der Diskrepanz des Besitzes des Ordners sein eigenes Caching deaktiviert hat.
Natürlich kann während der Ausführung als root pip '/ Users / petertao / Library / Caches / pip' geändert werden, da root (fast) allmächtig ist. Dies kann später problematisch werden, da ein Programm, das ohne root ausgeführt wird, diese Dateien nicht mehr überschreiben oder ändern kann. Stattdessen verweigert pip das Schreiben in ein Verzeichnis, das einem anderen Benutzer gehört.
Tags und Links python sudo pip virtualenv terminal