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.
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
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:
Sudo env PATH="$PATH" tlmgr --gui
.En utilisant la ligne de commande (non testé, puisque j'ai utilisé l'interface graphique):
Sudo env PATH="$PATH" tlmgr path add
. (Plus d’informations sur documentation tlmgr )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;)
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.
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
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".