Définir le chemin d'accès de TeX Live pour root

19

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

Le problème est que quand je lance sudo tlmgr , j'obtiens:

sudo: tlmgr: command not found

Pour réparer le chemin pour 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/.bashrc et j'ai également essayé de l'ajouter à /etc/profile.d/zzz-texlive.sh comme le suggère Herbert dans lien mais cela n'aide pas.

    
posée N.N. 14.10.2011 - 08:26
la source

5 réponses

21

Correction rapide: puisque vous avez déjà le bon $PATH défini dans votre environnement (via les modifications /etc/profile ), vous pouvez utiliser:

sudo env PATH="$PATH" tlmgr

En gros, sudo réinitialise la valeur de $PATH (l'environnement entier, en effet) à un "bien connu" et est ignorant ainsi les modifications que vous avez apportées à votre environnement local. le La commande env ci-dessus définit la variable PATH dans l'environnement du tlmgr il s'exécute, donc il fonctionne avec le valeur de $PATH spécifiée 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 fichier .bashrc dans votre maison:

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

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

psudo tlmgr

De plus, sudo ne lance pas de login shell pour exécuter la commande, c'est pourquoi votre "profile.d" les astuces ne fonctionnaient pas pour root. Vous pouvez forcer sudo pour exécuter une commande dans un shell, qui est un autre moyen 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 cela:

alias shsudo='sudo sh -l -c'

qui peut être utilisé comme:

shsudo tlmgr
    
réponse donnée Riccardo Murri 15.10.2011 - 10:17
la source
7

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

Utilisation de l’interface graphique:

  1. sudo env PATH="$PATH" tlmgr --gui .
  2. Cliquez sur 'Actions - & gt; 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 depuis que j'ai utilisé l'interface graphique):

  1. sudo env PATH="$PATH" tlmgr path add . (Pour plus d’informations, consultez la réponse donnée Chris 27.07.2012 - 22:40
la source
3

Qu'est-ce qui a fonctionné pour moi: j'ai commencé tlmgr en mode interface graphique avec

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

puis dans le troisième menu a choisi le dernier élément sauf un (dans mon menu allemand, c'est le menu "Aktionen" (actions?) et le poste "Verwaltung der symbolischen Links" (administration des liens symboliques?). fenêtre de dialogue J'ai cliqué sur le bouton "Symbolische Links erneuern" (renouveler les liens symboliques?). Maintenant

sudo tlmgr --OPTIONS

fonctionne sans problème. Je suis sûr qu'il y a aussi une façon de faire en ligne de commande;)

    
réponse donnée Thomas Fehige 16.05.2012 - 13:39
la source
1

Pour transmettre le fichier $PATH à sudo j'ai modifié le fichier /etc/sudoers à l'aide de la commande visudo 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 beaucoup vos commentaires sur cette approche.

    
réponse donnée Andrej 21.11.2011 - 00:36
la source
1

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

sudo $(which tlmgr) update --list
    
réponse donnée user652427 08.02.2017 - 23:04
la source

Lire d'autres questions sur les étiquettes