Définition du chemin TeX Live pour root

20

J'ai installé TeX Live 2011 vanilla et j'ai du mal à définir le chemin TeX Live pour root (dans Ubuntu 11.10).

Le problème est que lorsque je cours, sudo tlmgrj'obtiens:

sudo: tlmgr: command not found

Pour corriger le chemin d'accès non root, il suffisait d'ajouter

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

à /etc/profile.

J'ai essayé d'ajouter cette même ligne à /root/.bashrcet j'ai également essayé de l'ajouter à ce /etc/profile.d/zzz-texlive.shque suggère Herbert dans /tex/26624/tlmgr-inaccessible/26626#26626 mais cela n'aide pas.

NN
la source
En effet, cette question n'est pas liée à TeX, mais a répondu sur SO .

Réponses:

22

Solution rapide: puisque vous avez déjà le bon $PATHensemble dans votre environnement (via les /etc/profilemodifications), vous pouvez utiliser:

sudo env PATH="$PATH" tlmgr

Fondamentalement, sudo réinitialise la valeur de $PATH(l'ensemble de l'environnement, en effet) à un "bien connu", et ignore ainsi toutes les modifications que vous avez apportées à votre environnement local. La commande env ci-dessus définit la PATHvariable dans l'environnement de l' tlmgrexécution, de sorte qu'elle s'exécute avec la valeur que $PATHvous spécifiez sur la ligne de commande.

Pour éviter de taper tout cela pour chaque commande TeXlive, vous pouvez définir un alias dans votre shell: ajoutez la ligne suivante au .bashrcfichier de votre home:

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

puis vous pouvez simplement émettre ceci à une invite de commande:

psudo tlmgr

De plus, sudo n'exécute pas de shell de connexion pour exécuter la commande, c'est pourquoi vos astuces "profile.d" n'ont pas fonctionné pour root. Vous pouvez forcer sudo à exécuter une commande dans un shell, ce qui est une autre façon d'obtenir le même effet:

sudo sh -l -c tlmgr

Encore une fois, vous pouvez définir un alias de commande shell pour raccourcir ceci:

alias shsudo='sudo sh -l -c'

qui peut être utilisé comme:

shsudo tlmgr
Riccardo Murri
la source
Cela vous dérange-t-il d'inclure une description complète de la configuration $PATHdans mon environnement? Aussi, je dois donc faire envpour chaque commande du chemin TeX Live pour laquelle je veux activer sudo? Il y a beaucoup de binaires dans / usr / local / texlive / 2011 / bin / x86_64-linux que vous voudrez peut-être exécuter en tant que root.
NN
@NN J'ai mis à jour la réponse avec plus de détails; j'espère que c'est plus clair maintenant.
Riccardo Murri du
À votre santé! Appréciez vos explications.
NN
7

Si vous ajoutez les liens symboliques, vous n'aurez pas besoin de créer un script. Vous pouvez procéder de deux manières:

Utilisation de l'interface graphique:

  1. sudo env PATH="$PATH" tlmgr --gui.
  2. Cliquez sur 'Actions -> Gérer les liens symboliques dans les répertoires système'.
  3. Cliquez sur «Mettre à jour les liens symboliques».

Utilisation de la ligne de commande (non testée, car j'ai utilisé l'interface graphique):

  1. sudo env PATH="$PATH" tlmgr path add. (trouver plus d'informations dans la documentation tlmgr )
Chris
la source
3

Ce qui a fonctionné pour moi: j'ai commencé tlmgren mode gui avec

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

puis dans le troisième menu, j'ai choisi le dernier élément mais un (dans mon menu allemand, c'est-à-dire le menu "Aktionen" (actions?) et l'élément "Verwaltung der symbolischen Links" (administration des liens symboliques?). Dans la fenêtre de dialogue qui suit, je cliqué sur le bouton "Symbolische Links erneuern" (renouveler les liens symboliques?).

sudo tlmgr --OPTIONS

fonctionne sans problème. Je suis sûr qu'il y a aussi un moyen en ligne de commande de le faire;)

Thomas Fehige
la source
1

Pour passer l'utilisateur est $PATHà sudoI modifié le /etc/sudoersfichier en utilisant la visudocommande et ajoutez la ligne suivante:

Defaults        exempt_group=<group that I belong to>

Maintenant, je peux exécuter (par exemple)

sudo tlmgr update all

ou

sudo texhash

et tout fonctionne parfaitement.

J'apprécierais grandement tout commentaire sur cette approche.

Andrej
la source
1

Vous n'avez vraiment pas besoin d'ajouter le répertoire de tlmgrau chemin. Une solution simple et rapide utilise which, par exemple:

sudo $(which tlmgr) update --list
user652427
la source
0

Il n'est pas recommandé d'installer et de gérer TeX Live à l'aide des privilèges "root". Au lieu de cela, créez le /usr/local/texliverépertoire, par exemple, en utilisant sudo, puis changez la propriété de l'utilisateur qui gérera TeX Live. Après cela, TeX Live peut être installé et mis à jour sans utiliser les privilèges "root".

George
la source