web-dev-qa-db-fra.com

Définition du chemin TeX Live pour la racine

J'ai installé TeX Live 2011 Vanilla et je ne parviens pas à définir le chemin d'accès TeX Live pour root (sous Ubuntu 11.10).

Le problème est que lorsque je lance Sudo tlmgr, je reçois:

Sudo: tlmgr: command not found

Pour fixer le chemin 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 Herbert le suggère dans https://tex.stackexchange.com/questions/26624/tlmgr-inaccessible/26626#26626 = mais cela ne aide pas.

20
N.N.

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

Sudo env PATH="$PATH" tlmgr

En gros, Sudo réinitialise la valeur de $PATH (tout l'environnement, en fait) sur un "produit connu" et ignore donc les modifications apportées à votre environnement local. La commande env ci-dessus définit la variable PATH dans l'environnement du tlmgr à exécuter, de sorte qu'elle s'exécute avec la valeur de $PATH que vous spécifiez sur la ligne de commande.

Pour éviter de saisir tout cela pour chaque commande TeXlive, vous pouvez définir un alias dans votre shell: ajoutez la ligne suivante au fichier .bashrc de votre maison:

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

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

psudo tlmgr

En outre, Sudo n'exécute pas de shell de connexion pour exécuter la commande. C'est pourquoi vos astuces "profile.d" ne fonctionnaient pas pour root. Vous pouvez forcer Sudo à exécuter une commande dans un shell, ce qui constitue 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 ceci:

alias shsudo='Sudo sh -l -c'

qui peut être utilisé comme:

shsudo tlmgr
22
Riccardo Murri

Si vous ajoutez les liens symboliques, vous n'aurez pas besoin de créer de 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 -> Gérer les liens symboliques dans les répertoires système'.
  3. Cliquez sur 'Mettre à jour les liens symboliques'.

En utilisant la ligne de commande (non testé, puisque j'ai utilisé l'interface graphique):

  1. Sudo env PATH="$PATH" tlmgr path add. (Plus d’informations sur documentation tlmgr )
7
Chris

Ce qui a fonctionné pour moi: j’ai démarré tlmgr en mode gui avec

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

et ensuite dans le troisième menu, choisissez le dernier élément avant (dans mon menu allemand, le menu "Actions") et l'élément "Liens symboliques" (administration des liens symboliques?). Dans la fenêtre de dialogue suivante cliqué sur le bouton "Symbolische Links erneuern" (renouveler les liens symboliques?). Maintenant

Sudo tlmgr --OPTIONS

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

3
Thomas Fehige

Pour transmettre le $PATH de l'utilisateur à Sudo, j'ai modifié le fichier /etc/sudoers à l'aide de la commande visudo et ajouter 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.

1
Andrej

Il n’est vraiment pas nécessaire d’ajouter le répertoire tlmgr au chemin. Une solution simple et rapide consiste à utiliser which, par exemple:

Sudo $(which tlmgr) update --list
1
user652427

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

0
George