I kept the package manager's packages installed. One reason is that I know from past experience that if I drop those packages then when I want to install related materials from the package manager, such as AUCtex or Asymptote, then the package manager will complain about unmet dependencies, and I'll try a --force install and later there will be an update ... and anyway at some point so that chaos sets in. (Lars Madsen posted a way to avoid this with his knowledge of the package system but of the choices available I went another way, partly because I didn't entirely understand his process and so would have trouble adjusting it if I needed to.)
A first go
I downloaded TeX Live. It put things in the default of /usr/local/texlive. My local files go in /usr/local/texlive/texmf-local. I changed the PATH variable in /etc/profile (maybe I should have used /etc/environment instead, or in addition?) and logged out and back in again.
To check my setup I copied some personal styles and classes.
ftpmaint@millstone:~$ ls /usr/local/texlive/texmf-local/tex/latex/local
charis.sty gentium.sty memo.cls present.sty
conc.sty jh.sty mins.cls pyweb.cls
charis.sty gentium.sty memo.cls present.sty
conc.sty jh.sty mins.cls pyweb.cls
I tried to remake the file database
ftpmaint at millstone:~$ sudo texhash [sudo] password for ftpmaint: texhash: Updating /usr/local/share/texmf/ls-R... texhash: Updating /var/lib/texmf/ls-R-TEXMFMAIN... texhash: Updating /var/lib/texmf/ls-R-TEXLIVE... texhash: Updating /var/lib/texmf/ls-R... texhash: Done.
but after then issuing kpsewhich conc.sty failed. Why?
Turns out (I am skipping over a great deal of head-scratching and googling here), on Ubuntu the sudo command was using the Ubuntu tex's texhash
ftpmaint at millstone:~$ which texhash /usr/local/texlive/2012/bin/i386-linux/texhash ftpmaint at millstone:~$ sudo which texhash /usr/bin/texhash
rather than tug.org's because it has its own PATH.
ftpmaint at millstone:~$ echo $PATH /usr/local/texlive/2012/bin/i386-linux:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games ftpmaint at millstone:~$ echo 'echo $PATH' | sudo sh /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Oops.
I got around it by calling the program with its full path.
ftpmaint at millstone:~$ sudo /usr/local/texlive/2012/bin/i386-linux/texhash texhash: Updating /usr/local/texlive/2012/texmf/ls-R... texhash: Updating /usr/local/texlive/2012/texmf-config/ls-R... texhash: Updating /usr/local/texlive/2012/texmf-dist/ls-R... texhash: Updating /usr/local/texlive/2012/../texmf-local/ls-R... texhash: Updating /usr/local/texlive/2012/texmf-var/ls-R... texhash: Done.
The answer
The above was an answer, but it obviously wasn't the answer. Lars commented, "On my systems I have a specific LaTeX user who owns the LaTeX installation, thus I do not have to run anything as root." This seemed right.
I created a new user texlive to own the material in /usr/local/texlive.
ftpmaint at millstone:~$ cd /usr/local
ftpmaint at millstone:~$ sudo chown -R ftpmaint:ftpmaint texlive
A comment about this user: I don't want texlive to appear on the choices on the login screen so I gave this account a user id below 500: sudo usermod -u 499 texlive (I got the parameter 500 from /etc/lightdm/users.conf).
Several people cautioned me to watch the umask of this user but because the system sets the default at 022 I was OK.
Lars mentioned that he may have multiple TeX Live trees under /usr/local/texlive, say /usr/local/texlive/2011 and /usr/local/texlive2012. He has a soft link that points to the current one.
texlive at millstone:~$ ln -s 2012 current
I often have trouble remembering what command options to run, etc., so I like to put that stuff in .sh files. Here the soft link does its magic; no need to change the script when I add another tree.
total 12
drwxr-xr-x 10 texlive texlive 4096 Aug 17 07:05 2012
lrwxrwxrwx 1 root root 4 Aug 16 17:47 current -> 2012
drwxr-xr-x 10 texlive texlive 4096 Aug 17 07:05 texmf-local
-rwxr--r-- 1 texlive texlive 181 Aug 16 17:48 update.sh
ftpmaint@millstone:/usr/local/texlive$ cat update.sh
#!/bin/bash
# Update the current TeX Live installation
# 2012-Aug-16 Jim Hefferon jhefferon@smcvt.edu
PATH=/usr/local/texlive/current/bin/i386-linux:$PATH
tlmgr update --all --self
The only remaining hiccup is to remember the password for texlive. This is the kind of account that a person only uses every couple of months where I could easily forget. But I use a password keeper program KeePassX to store my passwords so I put this user's information in there.