I have installed TeX Live 2011 vanilla and I have trouble setting the TeX Live path for root (in Ubuntu 11.10).
The problem is that when I run sudo tlmgr
I get:
sudo: tlmgr: command not found
To fix the path for non-root it was sufficient to add
PATH=/usr/local/texlive/2011/bin/x86_64-linux:$PATH
to /etc/profile
.
I have tried adding this same line to /root/.bashrc
and I have also tried to add it to /etc/profile.d/zzz-texlive.sh
like Herbert suggest in https://tex.stackexchange.com/questions/26624/tlmgr-inaccessible/26626#26626 but it does not help.
Quick fix: since you already have the correct
$PATH
set in your environment (via the/etc/profile
modifications) you can use:Basically, sudo resets the value of
$PATH
(the whole environment, indeed) to a "known good" one, and is thus ignoring any changes you made to your local environment. The env command above sets thePATH
variable in the environment of thetlmgr
it executes, so it runs with the value of$PATH
you specify on the command line.To avoid typing all that for each TeXlive command, you can define an alias in your shell: add the following line to the
.bashrc
file in your home:and then you can simply issue this at a command prompt:
In addition, sudo does not run a login shell to execute the command, which is why your "profile.d" tricks did not work for root. You can force sudo to execute a command in a shell, which is an alternate way of achieving the same effect:
Again you can define a shell command alias to shorten this:
which can be used as:
If you add the symlinks then you won't need to make a script. You can do this two ways:
Using the GUI:
sudo env PATH="$PATH" tlmgr --gui
.Using the command line (untested, since I used the GUI):
sudo env PATH="$PATH" tlmgr path add
. (find more information at tlmgr documentation)What worked for me: I started
tlmgr
in gui mode withand then in the third menu chose the last item but one (in my German menu, that is menu "Aktionen" (actions?) and item "Verwaltung der symbolischen Links" (administration of symbolic links?). In the ensuing dialogue window I clicked the button "Symbolische Links erneuern" (renew symbolic links?). Now
works without problems. I'm sure there's also a command line way of doing this ;)
To pass the user's
$PATH
tosudo
I modified/etc/sudoers
file using thevisudo
command and add the following line:Now I can execute (e.g.)
or
and everything works perfect.
I would greatly appreciate any comments on this approach.
You really don't have to add the directory of
tlmgr
to the path. A simple quick solution is usingwhich
, e.g.:It is not good practice to install and manage TeX Live using "root" privileges. Instead, create the
/usr/local/texlive
directory, e.g, using sudo, and then change the ownership to the user that will be managing TeX Live. After that, TeX Live can be installed and updated without using "root" privileges.I created my account just to tell how it worked for me. I'm not a linux expert but after reviewing A LOT of forums with same issue and related issues I found this solution, I hope to help. I'm using Ubuntu 20.04 right now. For me it's incredible that there is no simpler installation option in both cases texlive and tlmgr:
Steps:
I Downloaded ISO image of texlive (you have to install perl before
Mount the image and then open a terminal in the mounted directory:
I choosed full instalation.
post instalation PATH export:
export INFOPATH=/usr/local/texlive/2021/texmf-dist/doc/info:$INFOPATH; export INFOPATH
export MANPATH=/usr/local/texlive/2021/texmf-dist/doc/man:$MANPATH; export MANPATH
export PATH=/usr/local/texlive/2021/bin/x86_64-linux:$PATH
sudo tlmgr: command not found
.Solution:
By giving entire PATH to sudo tlmgr in order to Update it:
sudo /usr/local/texlive/2021/bin/x86_64-linux/tlmgr update --self
Then start graphic user interface in order to update all packages and "handle symlinks in system dirs" in Action buton.
sudo /usr/local/texlive/2021/bin/x86_64-linux/tlmgr --gui