actually this is a further comment on corentin's answer, but it exceeds 600 characters.
Since http://www.tug.org/texlive/devsrc/Master/texmf-dist/tex/latex/ is an Apache directory listing you can try downloading packages with wget. For example if you want to download l3experimental
where xcoffins
is a subfolder you can invoke wget like
wget --cut-dir=4 -np -R "index.html*" -nH -P ~/texmf -r http://www.tug.org/texlive/devsrc/Master/texmf-dist/tex/latex/l3experimental/
or
wget --cut-dir=6 -np -R "index.html*" -P ~/texmf/tex/latex -r http://www.tug.org/texlive/devsrc/Master/texmf-dist/tex/latex/l3experimental/
this.
-P ~/dir/in/home/directory/
specifies the local directory where wget
should put your files.
-nH
tells wget
that you don't want to create directories named after the host i.e. ~/texmf/www.tug.org/*/*/
looks not so nice and latex won't find anything under ~/texmf/www.tug.org
. But you can omit -nH
and change the local directory to -P ~/textmf/tex/latex
. Then you have a seperate directory tree that latex also searches.
- whereby
--cut-dir=x
means that you don't want to create the first x folders of the uri in your local directory (you want to create ~/texmf/tex/latex/l3experimental/
or ~/texmf/tex/latex/www.tug.org/l3experimental/
instead of ~/textmf/texlive/devsrc/Master/texmf-dist/tex/latex/l3experimental
).
-R
instructs wget
to exclude all files beginning with index.html
.
-r
is for recursive fetch
- the argument of
-P
is the directory where you want to save all those things
-np
excludes all parent directories of l3experimental
(of course you can find a more detailed description in the manual pages of wget
)
but generally be careful if you download things with wget
recursively it could mess up a whole directory tree. I would recommend you to first download the files in a temporary directory (for example with -P ~/texmftemporary
) where you can examine the downloaded directory tree.
Since latex also searches recursively for packages in ~/texmf/tex/latex
you don't have to bother if xcoffins
is a subfolder of any other folder/folders.
Of course you can redefine things further if you write a little bash
, perl
or whatever
script that is based on the above command.
Maybe this helps you!?
Let's say you had a more specific question, like: "what new LaTeX packages are there in TeX Live 2013?"
After TL2013 comes out and you install it side by side to TL2012, assuming you've not changed the default install directory, you could do something like this (UNIX systems only):
ls /usr/local/texlive/2012/texmf-dist/tex/latex/ > 2012list & ls /usr/local/texlive/2013/texmf-dist/tex/latex/ > 2013list
followed by
diff 2012list 2013list | grep -v "^---" | grep -v "^[0-9c0-9]" > difflist
you'll get something like this inside the file named "difflist":
< ascii
> ascii-font
> asymptote
> beamertheme-upenn-bc
> dvipdfm
> enigma
> esami
> ipaex-type1
> ltablex
> mnotes
> rterface
> snotez
> songs
> spath3
> tikzmark
> titlecaps
> uiucredborder
> vdmlisting
> verbatimbox
(this is the difference from the last TL 2012 update and the latest 2013 pretest release, if you repeat this same procedure after the TL2013 relase you'll get
the complete list of new LaTeX packages).
The grep
stuff is used to remove some reference numbers automatically printed by the diff command.
Items marked with <
are present in TL2012 but not in TL2013 (may have been removed, renamed, etc.); items marked with >
are present in TL2013 but not in TL2012 (again, may be new packages, renamed packages, etc.).
If you also wanted to know what, e.g., new libraries that don't deserve a new directory have been added you could make the ls
command recursive, like this:
ls -R /usr/local/texlive/2012/texmf-dist/tex/latex/ > 2012list & ls -R /usr/local/texlive/2013/texmf-dist/tex/latex/ > 2013list
again followed by the same diff
command as before. If instead of LaTeX you want to know the new XeTeX additions, you have to point your ls
commands to /usr/local/texlive/2012/texmf-dist/xetex
, etc. You could also do a complete screening of /usr/local/texlive/2012/texmf-dist
, but that would produce a looooooong list, also because in TL2013 the content of the texmf
directory has been merged with texmf-dist
.
This is not rocket science and I'm not sure it also produces useful information for, e.g. ConTeXt.
If you have TL2011 installed you can do the same to find what packages have been added in TL2012.
Probably there are commands to do something like this in Windows also and directly in the SVN repository as well.
Using a tlmgr based approach
as suggested by texenthusiast an even better result is obtained using the command tlmgr list > <namefile>
. This is how I did it:
tlmgr list > 2013list
with PATH
pointing to /usr/local/texlive/2013/bin/
- change
PATH
to /usr/local/texlive/2012/bin/
tlmgr list > 2012list
- (for UNIX)
diff 2012list 2013list | grep -v "^---" | grep -v "^[0-9c0-9]" > difflist
- (for Windows)
FC 2012list 2013list
(not tested)
In my test I restricted the search to installed packages only with --only-installed
after list
so to keep the list shorter. The result is:
< i adobemapping: Adobe cmap and pdfmapping files
< i ascii: Support for IBM "standard ASCII" font.
> i ascii-font: Use the ASCII "font" in LaTeX.
> i beamertheme-upenn-bc: Beamer themies for Boston College and the University of Pennsylvania.
< i ccicons: (shortdesc missing)
> i ccicons: LaTeX support for Creative Commons icons.
< i cmap: (shortdesc missing)
> i cmap: Make PDF files searchable and copyable.
> i context-cyrillicnumbers: Write numbers as cyrillic glyphs.
> i context-transliterator: Transliterate text from 'other' alphabets.
< i dvisvgm: Converts DVI files to Scalable Vector Graphics format (SVG).
> i dvisvgm: Convert DVI files to Scalable Vector Graphics format (SVG).
> i enigma: Encrypt documents with a three rotor Enigma.
< i epstopdf: (shortdesc missing)
> i epstopdf: Convert EPS to 'encapsulated' PDF using GhostScript.
> i esami: Typeset exams with scrambled questions and answers.
< i gmverse: a package for typesetting (short) poems.
> i gmverse: A package for typesetting (short) poems.
> i ipaex-type1: IPAex fonts converted to Type-1 format Unicode subfonts.
> i ltablex: Table package extensions.
< i mandi: (shortdesc missing)
> i mandi: Macros for introductory physics and astronomy.
< i metafont-beginners: An introductory tutorial for MetaFont.
> i metafont-beginners: An introductory tutorial for Metafont.
> i mnotes: Margin annotation for collaborative writing.
< i mxedruli: A pair of Georgian fonts.
> i mxedruli: A pair of fonts for different Georgian alphabets.
< i pfarrei: LaTeX support of a priest's work.
> i pfarrei: LaTeX support of pastors' and priests' work.
< i pst-node: Draw connections using pstricks.
> i pst-node: Nodes and node connections in pstricks.
> i rterface: Access to R analysis from within a document.
> i snotez: Typeset notes, in the margine.
> i songs: Produce song books for church or fellowship.
> i spath3: Manipulate "soft paths" in PGF.
> i tikz-bayesnet: Draw Bayesian networks, graphical models and directed factor graphs.
> i tikzmark: Use TikZ's method of remembering a position on a page.
> i titlecaps: Setting rich-text input into Titling Caps.
> i uiucredborder: Class for UIUC thesis red-bordered forms.
> i vdmlisting: Typesetting VDM in ASCII syntax.
> i verbatimbox: Deposit verbatim text in a box.
> i xetexko: (shortdesc missing)
> i xevlna: Insert non-breakable spaces using XeTeX.
as you can see it now finds also additions which are not in the latex
directory (as xetexko
, which is missing in the previous list). And now we also got pretty descriptions!
Or you could just subscribe to the CTAN-ann RSS Feed and mail-archive :)
Best Answer
Ok, here's an answer as the main developer of tlmgr and the whole TeX Live infrastructure. You have to decide two things:
Concerning the former, freeze period: Normally during the year we do not make updates to the actual binaries, but only to scripts and the packaging. That means, that in preparation of a new release all the binaries have to be recompiled, which is a huge tasks and involved lots of time, and iterations. Bugs are fixed, code adapted so that it builds on all platforms (and there are many!). During this time we do not want to make partial upgrades of some binaries, because sometimes that needs to be accompanied with library file updates.
Another point is that during the freeze period critical new features are sometimes included in the texlive infrastructure and the tlmgr, which would be too dangerous to be released to the world in the normal course.
And finally, it is also about getting into a state that can be pressed onto DVD.
Now for the upgradability between releases: The reason in the first years were changes in the internals that did not allow upgrades (like format of the internal coding of options, etc.). This was in the first years (say 2008-2010) the most common reason. A normal upgrade was simply not trivially possible. Of course, one could write an upgrade script and make an NSIS installer for Windows, but we do not have time for that. We are volunteers and have to concentrate on the important things.
In the last years (say since 2010) there always was an upgrade procedure, although we normally didn't give it a lot of testing; that is the reason why we don't recommend it. Disk space is nowadays quite abundant, and having two installations in parallel is thus not such a pain. But still, there always was the way to upgrade.
On Windows this is unfortunately not so trivial, as the uninstaller and the registry etc etc is linked to release years, it is simply a pain on Windows, but that is a special case.
Finally, one more reason: In many cases in the last year, an update or a new installation would not have changed much in the amount of downloaded data, as often all the packages were updated in one way or the other (due to internal changes), which meant an upgrade would have involved downloading all packages, just like the installation.
I hope that all this makes our intention a bit more clear, and if there is anything unclear, or if someone has better ideas how to deal with it, we are open to suggestions!