[Tex/LaTex] How to update TeX Live distribution manually (without using the frozen TeX Live Manager)

packagestexliveupdating

As an illustration, let consider that I want to update the installed tcolorbox package to the new one from the CTAN.

  1. I have downloaded the newest tcolorbox.zip package from ctan.org/pkg/tcolorbox. I extracted it and its contents are shown as follows.

    enter image description here

  2. I noticed there are two folders related to the installed (old) tcolorbox as shown in the following figure.

    enter image description here

Questions:

  1. How do I know which files in the extracted folder should be copied to ...\doc\latex and ...\tex\latex?

  2. Is there a more convenient way to do it?

  3. Do I need to invoke texhash at the end?

  4. Should the package authors separate the main files from the document files with two subfolders in their zipped packages to ease manual update?

Best Answer

In the distribution documentation is separated from run time files, but it isn't essential that you do that, so if in doubt (or in a hurry) just leave all the files together in a directory in your input path.

Whether you need to run texhash afterwards depends where you put them. Some directories are marked as being hashed so if the new files are not hashed they will not be found, other directories are marked as not hashed and for them kpse searches the file system so just putting the files there is enough. (For example you never need texhash for the current directory)

kpsepath tex

will tell you your input path

mine is

$ kpsepath tex
.:/home/davidc/.texlive2012/texmf-config/tex/kpsewhich//:
/home/davidc/.texlive2012/texmf-var/tex/kpsewhich//:
/home/davidc/texmf/tex/kpsewhich//:
!!/usr/local/texlive/2012/texmf-config/tex/kpsewhich//:
!!/usr/local/texlive/2012/texmf-var/tex/kpsewhich//:
!/usr/local/texlive/2012/texmf/tex/kpsewhich//:
!!/usr/local/texlive/2012/../texmf-local/tex/kpsewhich//:
!!/usr/local/texlive/2012/texmf-dist/tex/kpsewhich//:
/home/davidc/.texlive2012/texmf-config/tex/generic//:
/home/davidc/.texlive2012/texmf-var/tex/generic//:
/home/davidc/texmf/tex/generic//:
!!/usr/local/texlive/2012/texmf-config/tex/generic//:
!!/usr/local/texlive/2012/texmf-var/tex/generic//:
!!/usr/local/texlive/2012/texmf/tex/generic//:
!!/usr/local/texlive/2012/../texmf-local/tex/generic//:
!!/usr/local/texlive/2012/texmf-dist/tex/generic//:
/home/davidc/.texlive2012/texmf-config/tex///:
/home/davidc/.texlive2012/texmf-var/tex///:
/home/davidc/texmf/tex///:
!!/usr/local/texlive/2012/texmf-config/tex///:
!!/usr/local/texlive/2012/texmf-var/tex///:
!!/usr/local/texlive/2012/texmf/tex///:
!!/usr/local/texlive/2012/../texmf-local/tex///:
!!/usr/local/texlive/2012/texmf-dist/tex///

which is an unmodified texlive 2012 setup.

Path segments prefixed by !! require texhash path segments ending in // include all subdirectories to any depth.

Related Question