Was bedeutet sudo -H tun?
Nach dem Versuch zu installieren virtualenv mit pip
$ pip install virtualenv
Bekam ich einen permission denied-Fehler
IOError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/virtualenv.py'
Also habe ich sudo für die Installation virtualenv
$ sudo pip install virtualenv
Aber dann eine Warnung auftauchte:
Verzeichnis '/Users/petertao/Library/Caches/pip/http' oder seine Eltern
Verzeichnis ist nicht im Besitz des aktuellen Benutzers und der cache wurde
deaktiviert. Überprüfen Sie bitte die Berechtigungen und Besitzer des Verzeichnisses. Wenn
ausführen mit sudo pip, möchten Sie vielleicht sudo-s -H Flagge.Verzeichnis '/Users/petertao/Library/Caches/pip' oder seine Eltern
Verzeichnis ist nicht im Besitz des aktuellen Benutzers Zwischenspeichern und Räder hat
deaktiviert. überprüfen Sie die Berechtigungen und Besitzer des Verzeichnisses. Wenn
ausführen mit sudo pip, möchten Sie vielleicht sudo-s -H Flagge.
Was bedeutet sudo-s -H-flag zu tun?
sudo
und sehen, dass sudo manual Seite mit -H
wird die Meldung "legen Sie die Umgebungsvariable HOME auf das home-Verzeichnis spezifiziert durch die target-Benutzer die Passwort-Datenbank-Eintrag."Ich werde die Abstimmung zu schließen, ist diese Frage off-topic, weil der Mangel an Grundlagenforschung vor der Buchung.
Vielen Dank für immer zurück, und ich entschuldige mich, wenn dies scheint wie eine triviale Frage für alle. Ich bin gerade erst auf die Verwendung von python, pip, und das terminal. Was ich versuche immer noch zu verstehen ist, wie die Einstellung der Umgebungsvariable HOME auf das home-Verzeichnis behebt diese Warnungen.
Während diese genaue Frage, ist schmerzhaft trivial, die unterschätzt Frage von "Warum
pip
beschweren sich über nicht-superuser-Berechtigungen und Besitz, wenn die Ausführung als superuser an?" ist nicht trivial interessant. user3141593'N gut verfasste Antwort erklärt, pip
beschwert sich, weil das erstellen von superuser-owned Unterverzeichnisse in nicht-superuser-home-Verzeichnisse ist eine schlechte Idee. Glücklicherweise, diese Frage offen blieb lange genug, um zu erhalten, eine nützliche Antwort.Was ist mit der anmaßende Haltung?
InformationsquelleAutor Peter Tao | 2017-04-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Regel
man sudo
(der genaue Wortlaut kann variieren, aber es wird ähnlich sein):Also warum ist das überhaupt eine option?
Normalerweise mithilfe von "sudo" nicht ändern, der $HOME environment-variable.
Beispiel:
Können Sie sehen, dass eine normale sudo-änderungen, die Benutzer bin ich von "testuser" , "root", aber nicht das, was $HOME gesetzt ist, während ein sudo -H ändert sich auch die variable von "meinem" home-Verzeichnis root-Verzeichnis.
In Ihrem Fall
pip warnt Sie, dass es ausgeführt wurde, als der Benutzer root und wollte, Dinge zu ändern in $HOME, die war auf '/Users/petertao', die nicht im Besitz von root (wahrscheinlich die "petertao" Benutzer).
die Warnung zeigt an, dass pip verwendet $HOME, um cache-Dateien, aber deaktiviert hat seinen eigenen caching-weil der Ordner Besitz Diskrepanz.
Natürlich während der Ausführung als root pip ändern können, '/Users/petertao/Library/Caches/pip", denn root ist (fast) Allmächtigen.
Dies kann lästig werden später an, weil ein Programm läuft ohne root könnte nicht mehr überschreiben oder modifizieren diese Dateien.
Stattdessen pip weigert sich zu schreiben, um ein Verzeichnis im Besitz eines anderen Benutzers.
InformationsquelleAutor user3141593