Festlegen des TeX Live-Pfades für root

20

Ich habe TeX Live 2011 Vanilla installiert und Probleme beim Einstellen des TeX Live-Pfads für root (in Ubuntu 11.10).

Das Problem ist, dass ich beim Laufen sudo tlmgrFolgendes bekomme:

sudo: tlmgr: command not found

Um den Pfad für Nicht-Root-Benutzer zu reparieren, war es ausreichend, ihn hinzuzufügen

PATH=/usr/local/texlive/2011/bin/x86_64-linux:$PATH

zu /etc/profile.

Ich habe versucht, dieselbe Zeile hinzuzufügen, /root/.bashrcund ich habe auch versucht, sie hinzuzufügen, /etc/profile.d/zzz-texlive.shwie es Herbert in /tex/26624/tlmgr-inaccessible/26626#26626 vorschlägt, aber es hilft nicht.

NN
quelle
Diese Frage hat zwar nichts mit TeX zu tun, wird aber auf SO beantwortet .

Antworten:

22

Schnellkorrektur: Da Sie bereits das richtige $PATHSet in Ihrer Umgebung haben (über die /etc/profileÄnderungen), können Sie Folgendes verwenden:

sudo env PATH="$PATH" tlmgr

Grundsätzlich setzt sudo den Wert von $PATH(in der Tat die gesamte Umgebung) auf einen "bekannt guten" Wert zurück und ignoriert daher alle Änderungen, die Sie an Ihrer lokalen Umgebung vorgenommen haben. Der obige Befehl env legt die PATHVariable in der Umgebung fest, in der tlmgrsie ausgeführt wird, sodass sie mit dem Wert ausgeführt wird, den $PATHSie in der Befehlszeile angegeben haben.

Um zu vermeiden, dass Sie all das für jeden TeXlive-Befehl eingeben, können Sie in Ihrer Shell einen Alias definieren : Fügen Sie der .bashrcDatei in Ihrem Home die folgende Zeile hinzu :

alias psudo='sudo env PATH="$PATH"'

und dann können Sie dies einfach an einer Eingabeaufforderung ausgeben:

psudo tlmgr

Außerdem führt sudo keine Login-Shell aus, um den Befehl auszuführen, weshalb Ihre "profile.d" -Tricks für root nicht funktionierten. Sie können sudo zwingen , einen Befehl in einer Shell auszuführen. Dies ist eine alternative Methode, um denselben Effekt zu erzielen:

sudo sh -l -c tlmgr

Auch hier können Sie einen Shell-Befehlsalias definieren , um dies zu verkürzen:

alias shsudo='sudo sh -l -c'

welches verwendet werden kann als:

shsudo tlmgr
Riccardo Murri
quelle
Stört es Sie, eine vollständige Beschreibung der Einrichtung $PATHin meiner Umgebung beizufügen? Muss ich also envfür jeden Befehl im TeX Live-Pfad, den ich aktivieren möchte, etwas tun sudo? In / usr / local / texlive / 2011 / bin / x86_64-linux befinden sich ziemlich viele Binärdateien, die Sie möglicherweise als root ausführen möchten.
NN
@NN Ich habe die Antwort mit weiteren Details aktualisiert. hoffe es ist jetzt klarer.
Riccardo Murri
Prost! Schätzen Sie Ihre Erklärungen.
NN
7

Wenn Sie die Symlinks hinzufügen, müssen Sie kein Skript erstellen. Sie können dies auf zwei Arten tun:

Verwendung der GUI:

  1. sudo env PATH="$PATH" tlmgr --gui.
  2. Klicken Sie auf "Aktionen -> Symlinks in Systemverzeichnissen verarbeiten".
  3. Klicken Sie auf "Symbolische Links aktualisieren".

Verwenden der Befehlszeile (ungetestet, da ich die GUI verwendet habe):

  1. sudo env PATH="$PATH" tlmgr path add. (Weitere Informationen finden Sie in der tlmgr-Dokumentation. )
Chris
quelle
3

Was bei mir funktioniert hat: Ich habe tlmgrim GUI-Modus mit begonnen

sudo env PATH="$PATH" tlmgr --gui

und wählte dann im dritten Menü den vorletzten Punkt (in meinem deutschen Menü Menü "Aktionen") und den Punkt "Verwaltung der symbolischen Links". Im folgenden Dialogfenster I Klicken Sie auf den Button "Symbolische Links erneuern"

sudo tlmgr --OPTIONS

funktioniert ohne probleme. Ich bin mir sicher, dass es auch eine Befehlszeilenmethode gibt;)

Thomas Fehige
quelle
1

Um den Benutzer mit dem Befehl $PATHan die von sudomir geänderte /etc/sudoersDatei zu übergeben, visudofügen Sie die folgende Zeile hinzu:

Defaults        exempt_group=<group that I belong to>

Jetzt kann ich ausführen (zB)

sudo tlmgr update all

oder

sudo texhash

und alles funktioniert perfekt.

Ich würde mich über Kommentare zu diesem Ansatz sehr freuen.

Andrej
quelle
1

Sie müssen das Verzeichnis von wirklich nicht tlmgrzum Pfad hinzufügen . Eine einfache schnelle Lösung ist whichzB:

sudo $(which tlmgr) update --list
user652427
quelle
0

Es ist nicht ratsam, TeX Live mit "root" -Privilegien zu installieren und zu verwalten. Erstellen Sie stattdessen das /usr/local/texliveVerzeichnis, z. B. mit sudo, und ändern Sie dann den Besitzer in den Benutzer, der TeX Live verwalten soll. Danach kann TeX Live installiert und aktualisiert werden, ohne "root" -Rechte zu verwenden.

George
quelle