summaryrefslogtreecommitdiff
path: root/Master/tlpkg
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2008-10-06 14:34:51 +0000
committerNorbert Preining <preining@logic.at>2008-10-06 14:34:51 +0000
commit2201d6217c39caa1da7591abbb52d4bcebd86c37 (patch)
tree207f31fa127133e8f866d05529243adf263fe5a8 /Master/tlpkg
parent681683035c133c92143388675e87bf9aab80ef98 (diff)
another try to commit that guit article
git-svn-id: svn://tug.org/texlive/trunk@10872 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg')
-rw-r--r--Master/tlpkg/doc/guit08/Makefile45
-rw-r--r--Master/tlpkg/doc/guit08/dviout.pngbin0 -> 25441 bytes
-rw-r--r--Master/tlpkg/doc/guit08/gui-collections.pngbin0 -> 71770 bytes
-rw-r--r--Master/tlpkg/doc/guit08/gui-installer.pngbin0 -> 127394 bytes
-rw-r--r--Master/tlpkg/doc/guit08/gui-lang.pngbin0 -> 60229 bytes
-rw-r--r--Master/tlpkg/doc/guit08/gui-scheme.pngbin0 -> 22217 bytes
-rw-r--r--Master/tlpkg/doc/guit08/gui-systems.pngbin0 -> 29332 bytes
-rw-r--r--Master/tlpkg/doc/guit08/install08text.tex57
-rw-r--r--Master/tlpkg/doc/guit08/psview.pngbin0 -> 10129 bytes
-rw-r--r--Master/tlpkg/doc/guit08/talk.tex389
-rw-r--r--Master/tlpkg/doc/guit08/tlmgr-article.bib8
-rw-r--r--Master/tlpkg/doc/guit08/tlmgr-article.pdfbin0 -> 1072733 bytes
-rw-r--r--Master/tlpkg/doc/guit08/tlmgr-article.tex921
-rw-r--r--Master/tlpkg/doc/guit08/tlmgrgui-arch.pngbin0 -> 60866 bytes
-rw-r--r--Master/tlpkg/doc/guit08/tlmgrgui-install.pngbin0 -> 80213 bytes
-rw-r--r--Master/tlpkg/doc/guit08/tlmgrgui-options.pngbin0 -> 57504 bytes
-rw-r--r--Master/tlpkg/doc/guit08/tlmgrgui-remove.pngbin0 -> 57797 bytes
-rw-r--r--Master/tlpkg/doc/guit08/tlmgrgui-update.pngbin0 -> 46119 bytes
18 files changed, 1420 insertions, 0 deletions
diff --git a/Master/tlpkg/doc/guit08/Makefile b/Master/tlpkg/doc/guit08/Makefile
new file mode 100644
index 00000000000..d44caeebbbb
--- /dev/null
+++ b/Master/tlpkg/doc/guit08/Makefile
@@ -0,0 +1,45 @@
+
+PNGS=gui-collections.png \
+ gui-installer.png \
+ gui-lang.png \
+ gui-scheme.png \
+ gui-systems.png \
+ tlmgrgui-arch.png \
+ tlmgrgui-install.png \
+ tlmgrgui-options.png \
+ tlmgrgui-remove.png \
+ tlmgrgui-update.png \
+ psview.png
+
+TEXSRC=tlmgr-article.tex \
+ install08text-crop.pdf \
+ $(PNGS)
+
+first: tlmgr-article.pdf
+
+tlmgr-article.pdf: $(TEXSRC) tlmgr-article.bbl
+ pdflatex tlmgr-article
+ pdflatex tlmgr-article
+ pdflatex tlmgr-article
+
+
+tlmgr-article.bbl: tlmgr-article.aux tlmgr-article.bib
+ bibtex tlmgr-article
+
+tlmgr-article.aux: $(TEXSRC)
+ pdflatex tlmgr-article
+
+install08text-crop.pdf: install08text.pdf
+ pdfcrop install08text.pdf
+
+install08text.pdf: install08text.tex
+ pdflatex install08text
+
+clean:
+ rm -f install08text-crop.pdf *~ *.{aux,log,bbl,blg,out}
+ rm -f install08text.pdf
+
+veryclean: clean
+ rm -f *.pdf
+
+
diff --git a/Master/tlpkg/doc/guit08/dviout.png b/Master/tlpkg/doc/guit08/dviout.png
new file mode 100644
index 00000000000..83c2cd3ff88
--- /dev/null
+++ b/Master/tlpkg/doc/guit08/dviout.png
Binary files differ
diff --git a/Master/tlpkg/doc/guit08/gui-collections.png b/Master/tlpkg/doc/guit08/gui-collections.png
new file mode 100644
index 00000000000..c542adddefc
--- /dev/null
+++ b/Master/tlpkg/doc/guit08/gui-collections.png
Binary files differ
diff --git a/Master/tlpkg/doc/guit08/gui-installer.png b/Master/tlpkg/doc/guit08/gui-installer.png
new file mode 100644
index 00000000000..81bfa5a3ad5
--- /dev/null
+++ b/Master/tlpkg/doc/guit08/gui-installer.png
Binary files differ
diff --git a/Master/tlpkg/doc/guit08/gui-lang.png b/Master/tlpkg/doc/guit08/gui-lang.png
new file mode 100644
index 00000000000..1d1cc2ac506
--- /dev/null
+++ b/Master/tlpkg/doc/guit08/gui-lang.png
Binary files differ
diff --git a/Master/tlpkg/doc/guit08/gui-scheme.png b/Master/tlpkg/doc/guit08/gui-scheme.png
new file mode 100644
index 00000000000..007f2910792
--- /dev/null
+++ b/Master/tlpkg/doc/guit08/gui-scheme.png
Binary files differ
diff --git a/Master/tlpkg/doc/guit08/gui-systems.png b/Master/tlpkg/doc/guit08/gui-systems.png
new file mode 100644
index 00000000000..24bfaada82c
--- /dev/null
+++ b/Master/tlpkg/doc/guit08/gui-systems.png
Binary files differ
diff --git a/Master/tlpkg/doc/guit08/install08text.tex b/Master/tlpkg/doc/guit08/install08text.tex
new file mode 100644
index 00000000000..56aa4f5c3a2
--- /dev/null
+++ b/Master/tlpkg/doc/guit08/install08text.tex
@@ -0,0 +1,57 @@
+\documentclass{article}
+\pagestyle{empty}
+\parindent 0pt
+\begin{document}
+\tiny
+\begin{verbatim}
+=================> TeX Live installation procedure <================
+
+==> Note: Letters/digits in <angle brackets> indicate menu items <==
+==> for commands or configurable options <==
+
+ Proposed platform: Intel x86_64 with GNU/Linux
+
+ <B> binary systems: 1 out of 15
+
+ <S> Installation scheme (scheme-full)
+
+ Customizing installation scheme:
+ <C> standard collections
+ <L> language collections
+ 83 collections out of 84, disk space required: 1426 MB
+
+ <D> directories:
+ TEXDIR (the main TeX directory):
+ /usr/local/texlive/2008
+ TEXMFLOCAL (directory for site-wide local files):
+ /usr/local/texlive/texmf-local
+ TEXMFSYSVAR (directory for variable and automatically generated data):
+ /usr/local/texlive/2008/texmf-var
+ TEXMFSYSCONFIG (directory for local config):
+ /usr/local/texlive/2008/texmf-config
+ TEXMFHOME (directory for user-specific files):
+ ~/texmf
+
+ <O> options:
+ [ ] use letter size instead of A4 by default
+ [X] create all format files
+ [X] install macro/font doc tree
+ [X] install macro/font source tree
+ [ ] create symlinks in standard directories
+
+ <V> set up for running from DVD
+
+Other options:
+====================================================================
+ <I> start installation to hard disk
+ <H> help
+ <Q> quit
+
+Enter command:
+\end{verbatim}
+\end{document}
+
+latex install08text.tex
+dvips -E install08text.dvi
+epstopdf install08text.ps
+
diff --git a/Master/tlpkg/doc/guit08/psview.png b/Master/tlpkg/doc/guit08/psview.png
new file mode 100644
index 00000000000..8322bdda693
--- /dev/null
+++ b/Master/tlpkg/doc/guit08/psview.png
Binary files differ
diff --git a/Master/tlpkg/doc/guit08/talk.tex b/Master/tlpkg/doc/guit08/talk.tex
new file mode 100644
index 00000000000..837e59b7cd9
--- /dev/null
+++ b/Master/tlpkg/doc/guit08/talk.tex
@@ -0,0 +1,389 @@
+\documentclass{beamer}
+\usefonttheme{serif}
+\usefonttheme{professionalfonts}
+\usepackage[latin1]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{hhline,bm,xspace,url}
+\usepackage[expert,seriftt]{lucidabr}
+\renewcommand{\rmdefault}{hlhj}
+\usepackage{fancyvrb}
+\usepackage{url,xcolor}
+\usepackage{marvosym}
+\usepackage[color]{guit}
+\usepackage{listings}
+\lstset{frame=lines,basicstyle=\ttfamily,showspaces=true,prebreak={\Righttorque},postbreak={\Lefttorque},breaklines}
+\newcommand{\tl}{\TeX~Live}
+\newcommand{\ctan}{CTAN}
+\newcommand{\tpm}{\texttt{tpm}}
+\newcommand{\tpms}{\tpm{}s}
+\newcommand{\tlpsrc}{\texttt{tlpsrc}}
+\newcommand{\tlpsrcs}{\tlpsrc{}s}
+\newcommand{\tlpobj}{\texttt{tlpobj}}
+\newcommand{\tlpobjs}{\tlpobj{}s}
+\newcommand{\tlpdb}{\texttt{tlpdb}}
+\newcommand{\tlpdbs}{\tlpdb{}s}
+
+\hyphenation{infra-struc-ture}
+\DefineShortVerb{\|}
+
+\usetheme[headheight=10pt,footheight=10pt]{boxes}
+\setbeamercolor*{black on white}{bg=white,fg=black}
+%\setbeamerfont*{black on white}{series=\scshape}
+\addfootbox{black on white}{\hbox{\vbox to 10pt{\hspace{3em}Norbert
+Preining, \tl's new infrastructure -- {\normalfont\guitmeeting 2007}
+ \hfill \insertframenumber\hspace{3em}~~\vfill}}}
+\addheadbox{black on white}{\hbox{\vbox to 10pt{~~~\hfill\leavevmode\vfill}}}
+\setbeamertemplate{navigation symbols}{}
+
+\setlength{\parskip}{\medskipamount}
+
+\def\cred#1{{\color{red}#1}}
+\def\prog#1{\texttt{#1}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% here begins the stuff
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\title{\tl's new infrastructure}
+\author{Norbert Preining}
+\institute{Vienna University of Technology, Austria}
+\date{\textsc{{\normalfont\guitmeeting*}~2007}
+
+Pisa, Ialia \hspace{\bigskipamount} 13~October 2007}
+
+\begin{document}
+
+\frame{\titlepage}
+
+
+\begin{frame}
+ \frametitle{Properties of the \tl\ distribution}
+
+ \begin{itemize}
+ \item includes all the free stuff from \textsc{ctan}
+ \item ready for ``consumption'', i.e., runs from \textsc{dvd}, but
+ can also installed into the file system
+ \item available for a wide range of platform--operating system
+ combinations
+ \item currently is replacing te\TeX\ in many (Unix) distributions as
+ default \TeX\ system
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Upstream organization}
+ \begin{itemize}
+ \item \textsc{svn} repository where many people have write permissions
+ \item loads of supporting scripts doing a variety of jobs:
+ \begin{itemize}
+ \item preparing the installation for mastering
+ \item installation from various media
+ \item installation of packages from \textsc{ctan} into the
+ \textsc{svn} repository
+ \item performing various checks on the whole archive (coverage,
+ double inclusion, etc.)
+ \end{itemize}
+ \end{itemize}
+
+ \pause
+ \begin{block}{Problems}
+ \begin{itemize}
+ \item hand-crafted, hard to read
+ \item not easily extensible
+ \item no documentation
+ \end{itemize}
+ \end{block}
+\end{frame}
+
+
+\begin{frame}
+ \frametitle{Previous infrastructure: tpms}
+ \TeX\ Package Manage[r/ment] files collected a variety of
+ information into on \textsc{xml} file:
+ \begin{itemize}
+ \item file patterns and file lists
+ \item title, description, license, versions
+ \item activation of map files, formats, hyphenation patterns
+ \end{itemize}
+ \pause
+ \begin{block}{Problems with tpms}
+ \begin{itemize}
+ \item mixture of generated and static information
+ \item duplicated information (version, license, descriptions,
+ \ldots) which were outdated
+ \item hard to parse, thus the necessity to generate another set of
+ files for the installer
+ \end{itemize}
+ \end{block}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Aims of the new infrastructure}
+ \begin{itemize}
+ \item Separation of static from generated content\\
+ Going from a `source' to the `object' should include automatically
+ data from various other sources (mainly the Catalogue and the
+ repository) \pause
+ \item Getting rid of any `additional' files (list files)\\
+ any additional files tend to be outdated, all the necessary
+ information should be present in \emph{one} place and be easily
+ parseable. \pause
+ \item Single package updates via the web\\
+ updates to single packages (e.g., a new beamer release)\pause
+ \item Better documentation\\
+ since \tl\ is replacing te\TeX\ we want to give people
+ incorporating \tl\ into distributions a better documented and
+ easier to handle system
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \frametitle{The new infrastructure -- the basics}
+ Three types of objects/files:
+ \begin{itemize}
+ \item \tlpsrc: provides only the minimal information
+ \item \tlpobj: the extension/compilation of a \tlpsrc\ file which
+ includes the complete file lists and all the additional
+ information derived from other sources
+ \item \tlpdb: the collection of all available/installed/upgradeable
+ \tlpobj{}s
+ \end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{\tlpsrc\ format by example}
+ \begin{lstlisting}[title={beamer.tlpsrc}]
+name beamer
+category Package
+depend Package/pgf
+\end{lstlisting}
+\pause
+\begin{lstlisting}[title={bin-cweb.tlpsrc}]
+name bin-cweb
+category TLCore
+docpattern f texmf/doc/man/man1/ctangle.1
+docpattern f texmf/doc/man/man1/cweave.1
+docpattern f texmf/doc/man/man1/cweb.1
+binpattern f bin/${ARCH}/ctangle
+binpattern f bin/${ARCH}/cweave
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{Allowed fields for \tlpsrc}
+ \begin{itemize}
+ \item name: identifies the package
+ \item category: one of (currently) |Collection|, |Scheme|, |TLCore|,
+ |Documentation|, |Package|
+ \item catalogue: link to the \TeX\ Catalogue
+ \item shortdesc, longdesc: description of the package
+ \item depend: |Category/Name| (multiple entries possible)
+ \item execute: activating maps, formats, hyphenation patterns
+ \item srcpatterns, \ldots: selecting member files of the package via patterns
+ \end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{The pattern language}
+ patterns are of the form
+ \begin{center}
+ |[PREFIX]TYPE PAT|
+ \end{center}
+ where |PREFIX| can be |+|, |!+|, or |!|,\pause and |TYPE PAT| can be:
+ \begin{description}
+ \item[f path]
+ includes all files which match |path| where \emph{only} the last
+ component of |path| can contain the usual glob characters * and ?
+ (but no others!).\pause
+ \item[d path]
+ includes all the files in and below the directory specified as
+ |path|. \pause
+ \item[t word1 ... wordN wordL]
+ includes all the files in and below all directories of the form
+ \begin{center}
+ \path{word1/word2/.../wordN/.../any/dirs/.../wordL/}
+ \end{center}\pause
+ \item[r regexp]
+ includes all files matching the Perl regexp \verb+/^regexp$/+
+ \end{description}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{Example patterns}
+ \begin{itemize}
+ \item |runpattern f texmf/chktex/*|\\
+ includes all files \emph{in} Master/texmf/chktex/\pause
+ \item |binpattern f bin/${ARCH}/bibtex|\\
+ includes the bibtex binaries into the bin-bibtex package,
+ depending on the architecture\pause
+ \item |runpattern d texmf/tex/lambda/base|\\
+ includes all files in and under the above path\pause
+ \item |runpattern t texmf-dist omega uni2char|\\
+ includes all files in texmf-dist/omega/\ldots/uni2char/\pause
+ \item |runpattern r .*/foobar|\\
+ includes the files matching the regexp
+ \end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{Autogenerated patterns}
+ To keep \tlpsrc\ files small, if a pattern section is empty or all
+ patterns are prefixed with |+|, the following patterns are
+ automatically generated:
+ \begin{itemize}
+ \item runpatterns in category Package:
+ \begin{center}
+ |t texmf-dist topdir name|
+ \end{center}
+ \item docpatterns in category Package:
+ \begin{center}
+ |t texmf-dist doc name|
+ \end{center}
+ \item docpatterns in category Documentation:
+ \begin{center}
+ |t texmf-doc doc name|
+ \end{center}
+ \item srcpatterns in category Package:
+ \begin{center}
+ |t texmf-dist source name|
+ \end{center}
+ \item srcpatterns in category Documentation:
+ \begin{center}
+ |t texmf-doc source name|
+ \end{center}
+ \end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{Additional tricks}
+ \begin{description}
+ \item[arch expansion]
+ In case the string \verb+${ARCH}+ occurs in one |binpattern| it is
+ automatically expanded to the respective architecture.
+ \item[bat/exe/dll for win32]
+ For |binpatterns| of the form |f bin/win32/foobar| files
+ |foobar.bat|, |foobar.dll|, and |foobar.exe| are also matched.
+ \end{description}
+ \pause
+ \begin{block}{Effects of auto generation and tricks}
+ total number of tlpsrc files: 1561\\
+ total number of tlpsrc files with patterns: 168\\
+ number of bin- and hyphen- tlpsrc files with patterns: 125\\
+ number of `normal' packages with patterns: 43
+ \end{block}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{\tlpobj\ format by example}
+\begin{lstlisting}[basicstyle=\ttfamily\small,title={Excerpt from bin-dvipsk.tlpobj},label=dvipsk]
+name bin-dvipsk
+category TLCore
+revision 4427
+docfiles size=959434
+ texmf/doc/dvips/dvips.html
+ ...
+runfiles size=1702468
+ texmf/dvips/base/color.pro
+ ...
+ texmf/scripts/pkfix/pkfix.pl
+binfiles arch=i386-solaris size=329700
+ bin/i386-solaris/afm2tfm
+ bin/i386-solaris/dvips
+ bin/i386-solaris/pkfix
+binfiles arch=win32 size=161280
+ bin/win32/afm2tfm.exe
+...
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Allowed fields in \tlpobj\ files}
+ \begin{itemize}
+ \item XXXfiles take the place of XXXpatterns\\
+ every files section has a size attribute, and the
+ binfiles section can occur more then once with different
+ arch tags (see above)
+ \item revision: maximum svn revision number of the
+ contained files, since version numbers are not
+ parseable, trustworthy, or not even present
+ \item catalogue-* keys: stuff taken from the catalogue\\
+ for example catalogue-version, catalogue-authors,
+ catalogue-license
+ \end{itemize}
+ \begin{block}{\tlpdb\ format}
+ concatenation of \tlpobj
+ \end{block}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{Perl programming \textsc{api}}
+ \begin{description}
+ \item[TeXLive::TLTREE] properties of the subversion
+ repository, in principle it is |svn status -v|
+ \item[TeXLive::TeXCatalogue] simple interface to the \TeX\
+ Catalogue
+ \item[TeXLive::TLPSRC] for \tlpsrc\ files, basic
+ functionality like reading in, writing out, and member
+ access functions. Generation of a |TLPOBJ| object from
+ a |TLPSRC| object using an instance of |TLTREE|.
+ \item[TeXLive::TLPOBJ] for \tlpobj\ files, basic
+ functionality like reading in, writing out, and member
+ access functions. Generation of zip files for web
+ updates and installation media.
+ \item[TeXLive::TLPDB] access to the \tl\ database.
+ \item[TeXLive::TLPUtils] some handy functions used in all the
+ other modules.
+ \end{description}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Documentation}
+ \begin{itemize}
+ \item all modules contain a full documentation in pod format
+ \item additional text \textsc{api} document
+ \item the article accompanying this talk
+ \end{itemize}
+
+ \pause
+ \begin{block}{Additional \textsc{api}s}
+ \begin{itemize}
+ \item shell \textsc{api} at a very basic level
+ \item python \textsc{api}
+ \end{itemize}
+ \end{block}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Integration into \tl}
+ \begin{itemize}
+ \item ctan2tl: installs packages from \textsc{ctan} into
+ \tl\ repository -- updated
+ \item installer: work has started
+ \item various cron jobs (updating the database): ready
+ \item consistency checks: missing
+ \item all tpm stuff has been removed from the repository,
+ everything new will be written using these modules
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Resources}
+ \begin{itemize}
+ \item \url{tex-live@tug.org} -- main contact point
+ \item \path{www.tug.org/texlive} -- the main entry point, with
+ links to developers' resources, documentation
+\item \path{www.tug.org/svn/texlive/trunk/} -- web view onto the
+ subversion repository;
+\item \path{svn://tug.org/texlive/trunk} -- svn repository, anonymous
+ access
+\item \path{www.tug.org/texlive/pkgupdate.html} -- an
+ explanation how updates from \ctan\ to \tl\ are done.
+ \end{itemize}
+
+ \pause
+ \begin{center}
+ Thanks a lot, and hope to see you around
+ \end{center}
+\end{frame}
+\end{document}
diff --git a/Master/tlpkg/doc/guit08/tlmgr-article.bib b/Master/tlpkg/doc/guit08/tlmgr-article.bib
new file mode 100644
index 00000000000..58731eb35b8
--- /dev/null
+++ b/Master/tlpkg/doc/guit08/tlmgr-article.bib
@@ -0,0 +1,8 @@
+@InProceedings{inst:package,
+ author = {Reinhard Kotucha and Siep Kroonenberg and Norbert Preining},
+ title = {A new Installer for {\TeX} Live},
+ booktitle = {Proceedings of the BachoTeX~2008},
+ year = 2008,
+ month = {April},
+ publisher = {GUST}}
+
diff --git a/Master/tlpkg/doc/guit08/tlmgr-article.pdf b/Master/tlpkg/doc/guit08/tlmgr-article.pdf
new file mode 100644
index 00000000000..684f62271bc
--- /dev/null
+++ b/Master/tlpkg/doc/guit08/tlmgr-article.pdf
Binary files differ
diff --git a/Master/tlpkg/doc/guit08/tlmgr-article.tex b/Master/tlpkg/doc/guit08/tlmgr-article.tex
new file mode 100644
index 00000000000..8c2ccaaa4bd
--- /dev/null
+++ b/Master/tlpkg/doc/guit08/tlmgr-article.tex
@@ -0,0 +1,921 @@
+%
+% Norbert Preining
+% Article presented on the 5th GuITmeeting, Pisa 18 October 2008
+%
+% Copyright 2008 Norbert Preining
+% You can redistribute and/or modify this document under the terms of the
+% GNU General Public License as published by the Free Software Foundation;
+% either version 2 of the License, or (at your option) any later version.
+%
+\documentclass{arstexnica}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{lmodern}
+\usepackage[english]{babel}
+\usepackage{graphicx}
+\usepackage{hyperref}
+\usepackage{fancyvrb}
+\usepackage{url}
+\usepackage{natbib}
+\usepackage{marvosym}
+\usepackage{listings}
+\lstset{frame=lines,basicstyle=\small\ttfamily,prebreak={\Righttorque},
+ postbreak={\Lefttorque},columns=flexible}%,breaklines}
+\newcommand{\tl}{\TeX~Live}
+\newcommand{\tlmgr}{\TeX~Live Manager}
+
+\newcommand{\tlpsrc}{\texttt{tlpsrc}}
+\newcommand{\tlpsrcs}{\tlpsrc{}s}
+\newcommand{\tlpobj}{\texttt{tlpobj}}
+\newcommand{\tlpobjs}{\tlpobj{}s}
+\newcommand{\tlpdb}{\texttt{tlpdb}}
+\newcommand{\tlpdbs}{\tlpdb{}s}
+\newcommand{\pl}{Perl}
+\newcommand{\gs}{Ghostscript}
+\newcommand{\tlu}{\texttt{texlua}}
+\newcommand{\kpse}{Kpathsea}
+\newcommand{\XeTeX}{Xe\TeX}
+\newcommand{\acro}[1]{\textsc{\MakeLowercase{#1}}}
+\newcommand{\ctan}{\acro{CTAN}}
+\newcommand{\cmd}[1]{\textsf{#1}}
+\newcommand{\button}[1]{\textsf{#1}}
+\newcommand{\var}[1]{\textsl{#1}}
+
+\hyphenation{infra-struc-ture}
+
+%\catcode`>=\active
+%\def>#1<{\texttt{#1}}
+\DefineShortVerb{\|}
+\begin{document}
+\begin{article}
+%\selectlanguage{italian}%
+
+\title{\tl~2008 and the \TeX\ Live Manager%
+ \thanks{Originally presented at the \GuIT\ Conference 2008 in Pisa, and
+ published in Ars\TeX nica, issue~6}}
+
+\author{Norbert Preining}
+\address{Vienna University of Technology\\
+ %Wiedner Hauptstr.\ 10\\
+ %1040 Wien, Austria
+}
+\netaddress{preining@logic.at}
+
+\maketitle
+
+
+\begin{abstract}
+\tl~2008 has been released recently, and the \acro{DVD}s are ready to
+go gold. This is the first release of \tl\ shipping the \tlmgr, tlmgr
+for short.
+
+Besides taking over some of the tasks from texconfig (which has never been
+available for Windows) it finally brings many new features
+to the \tl\ world, most importantly the option for dynamic updates.
+
+This article will present the new \tl\ Installer, the \tlmgr, and
+at the end lists other changes in \tl~2008.
+\end{abstract}
+
+\tableofcontents
+
+\section*{Important note}
+
+This article describes the status of the \tlmgr\ as it will be shipped
+around October~2008, and not the one on \acro{DVD}. The
+version on the \acro{DVD} works fine for local configuration
+tasks (which is why we felt it could be shipped), but is not
+sufficiently robust for reliable updates over the Internet. Users'
+first update will be to get the new tlmgr.
+
+\section{Introduction}
+\label{sec:intro}
+
+After more than one year of development work \tl~2008 has been
+released with a complete new infrastructure \citep{at:2007-4-069-preining}.
+At first these infrastructure changes were only relevant for the
+developers themselves, since it made life (a bit) easier and the
+system more consistent due to the elimination of duplicated
+information.
+
+As a first user-visible change came the unification of the installer,
+so that all supported platforms now share the same
+installer. Furthermore, this installer has gotten a \acro{GUI} which
+also is uniform across all platforms. On Unix systems the only
+prerequsites are a Perl installation, and for the \acro{GUI} the
+installation of Perl/Tk. On Windows we ship a minimal Perl with
+the necessary modules.
+
+The first part of this article will give an overview of the new
+installer.
+
+The second user-visible change came from the addition of the \tlmgr,
+or tlmgr for short, to the list of programs. It manages an existing \tl\
+installation, both packages and options. Besides performing many of
+the same actions as |texconfig| it has the ability to install
+additional packages, update and remove existing ones, make backups,
+search within and list all packages.
+
+\section{The new installer}
+\label{sec:installer}
+
+The creation of a new \tl\ installer was necessitated by the new
+package infrastructure \citep{at:2007-4-069-preining}. From a user's
+point of view the new installer has only one visual change, but there
+other significant changes. In particular:
+\begin{itemize}
+\item It is possible to install \tl\ from the Internet.
+\item There is just one installer, which can run either in text
+ mode, emulating the former install-tl.sh shell script,
+ or in \acro{GUI} mode (more or less emulating the \tl\ 2007 tlpmgui).
+\item The Windows installation is much closer to using the same
+ implementation as Unix.
+\end{itemize}
+
+\subsection{Install \tl\ from the Internet}
+
+If you got (by the time you read this article) a \tl\ \acro{DVD} you
+can just start the installer as usual. On Windows this will be by
+default the \acro{GUI} installer (see below), on Unix the text mode
+installer.
+
+We also ship an installation package \citep{inst:package} containing
+all the necessary files for an installation over the network. By
+default, normal installation will use a \ctan\ mirror,
+selected using the |http://mirror.ctan.org| service. (See
+|http://tug.org/ctan.html#sites|.)
+
+Two installers for network downloads are provided.
+|install-tl-unx.tar.gz| supports Unix only. |install-tl.zip|
+additionally contains a small subset of Perl for Windows which is
+required to bootstrap the system. The latter works on all platforms
+supported by \tl. The sole reason for providing a separate package
+for Unix is its significantly smaller size.
+
+In any case you can override the source from which you want to install
+with the command line option |-location|.
+
+\subsection{The text mode installer}
+
+If you have used \tl\ in recent years you will see no big changes in
+the text mode installer (see fig.~\ref{fig:text_main_menu}); we tried
+to keep it as close as possible to the one used in former
+releases. One new option is at the bottom of the menu, namely
+\emph{set up for running from DVD}. This is what we call \emph{live}
+installation:
+it sets up a minimal writable environment on your computer, while all the input
+files and binaries remain on the \acro{DVD}.
+
+\begin{figure}[ht!]
+ \centering
+ \resizebox{\columnwidth}{!}{\includegraphics{install08text-crop}}
+ \caption{Main menu of the text mode installer}
+ \label{fig:text_main_menu}
+\end{figure}
+
+\subsection{The GUI Installer}
+
+The \acro{GUI} installer has nearly the same functionality as the text
+version; the option to set up for live installation is the only missing
+piece. It is written in Perl/Tk and thus should run on all platforms (on
+Unix Perl/Tk has to be installed).
+
+\begin{figure}[ht!]
+ \centering
+ \resizebox{\columnwidth}{!}{\includegraphics{gui-installer.png}}
+ \caption{Main window of the \acro{GUI} installer}
+ \label{fig:gui_main_menu}
+\end{figure}
+
+The main window can be seen in fig.~\ref{fig:gui_main_menu}. It should
+remind you very much of the text mode installer. As with the text mode
+installer it allows you to change which binary systems should be
+installed (fig.~\ref{fig:gui_systems}), select the scheme to be
+installed (fig.~\ref{fig:gui_scheme}), where a \emph{scheme} is a
+pre-defined set of
+collections to be installed, and further specify in more detail which
+collections (a collection is a set of packages) and which language
+packages to
+install (fig.~\ref{fig:gui_coll} and~\ref{fig:gui_lang}). You
+can select the installation directories for \tl\ and toggle some
+options, all in line with the installer of recent years and the text
+mode installer.
+
+\begin{figure}[ht!]
+ \centering
+ \resizebox{0.5\columnwidth}{!}{\includegraphics{gui-systems.png}}
+ \caption{Binary system select window}
+ \label{fig:gui_systems}
+\end{figure}
+
+\begin{figure}[ht!]
+ \centering
+ \resizebox{\columnwidth}{!}{\includegraphics{gui-scheme.png}}
+ \caption{Scheme select window}
+ \label{fig:gui_scheme}
+\end{figure}
+
+\begin{figure}[ht!]
+ \centering
+ \resizebox{\columnwidth}{!}{\includegraphics{gui-collections.png}}
+ \caption{Collections select window}
+ \label{fig:gui_coll}
+\end{figure}
+
+\begin{figure}[ht!]
+ \centering
+ \resizebox{\columnwidth}{!}{\includegraphics{gui-lang.png}}
+ \caption{Language packs select window}
+ \label{fig:gui_lang}
+\end{figure}
+
+During installation the main window's status line will indicate what
+is going on currently, and at the same time the program will print out
+to the terminal the same output as the normal installer.
+
+For both the text mode installer and the \acro{GUI} mode installer, a
+log file with more details is
+created in the installation directory as |install-tl.log|. (If you
+report installation problems, please send us this log file.)
+
+\subsection{Bringing Windows in line with Unix}
+
+\tl\ 2008 supports Windows 2000 and later. By dropping older Windows
+versions, there is much less need to treat Windows specially.
+
+Under Windows 2000 and later, users have a real home directory,
+viz. \verb+%USERPROFILE%+, usually
+\verb+C:\Documents and Settings\+\textit{username}.
+
+This is now reflected in tilde expansion by \kpse:
+\verb+~/texmf+ is expanded to \verb+%USERPROFILE%\texmf+
+under Windows and to \verb+$HOME/texmf+ under Unix.
+
+It is also possible to differentiate between system settings and
+user settings. Happily, there is no longer any need to have a different
+set of \texttt{texmf} trees on Windows, or to leave out scripts such as
+\texttt{fmtutil-sys} and \texttt{updmap-sys}. We also
+have a single \texttt{texmf.cnf} used on all platforms.
+
+
+%
+%
+%
+\section{The \tlmgr}
+
+\tlmgr\ provides a wealth of options and commands; we will explain them
+all here, some tersely, some in more detail. Of course we expect to add
+more features in the future.
+
+\subsection{The \tl\ Database}
+
+First of all, it is important to understand where all the information about
+installed packages and other options are saved. This is the \tl\
+database, which normally can be found in \path{ROOT/tlpkg/texlive.tlpdb}
+(where |ROOT| is the destination folder you have choosen at
+installation time). It contains the list of all packages, all the
+files installed, and in addition to that collects configuration
+information like the default installation source, and the options you
+have set at installation time (e.g., whether you want A4 or letter-size
+paper by default).
+
+Most of tlmgr's actions will load the local database, and many
+actions will also load a remote database: If you want to install a
+package, the \tlmgr\ will load the database of the specified installation server
+and checks whether this package exists.
+
+Although we say \emph{remote}, it is not necessarily a remote
+network location. If you install from \acro{DVD} the default
+installation source will be the \acro{DVD}, and tlmgr will
+load the database located on the \acro{DVD} when needed.
+
+\subsection{General syntax of tlmgr}
+
+The general syntax of tlmgr is
+\begin{center}
+ \Verb+tlmgr [opt]... action [opt]... [arg]...+
+\end{center}
+The first set of options before the main |action| configure the general
+operation of tlmgr, while the second set of options are specific to
+the chosen |action|. We do not support mixing and reshuffling of all
+these options, partly for the sake of clarity, and also for programming
+reasons.
+
+The first set of options can contain
+\begin{itemize}
+\item |--location| \var{loc} specifies the location from which
+ packages should be installed or updated, overriding the location
+ found in the installation's \tl\ Package Database (\acro{TLPDB}).
+\item |--gui| starts the \acro{GUI} version of tlmgr.
+ The \acro{GUI} does not support all the bells
+ and whistles of the command-line program. It is in fact a separate
+ program that calls the command-line version to do the actual work.
+ The difference between this |--gui| option and the |gui| action (see
+ below) is that given the option,
+ tlmgr tries to open the \acro{GUI} directly at the screen
+ for the specified |action|.
+\item |--gui-lang| \var{ll} selects the language in which the \acro{GUI} will
+ appear. Normally the \acro{GUI} tries to deduce your language from
+ the environment (on Windows via the registry, on Unix via
+ |LC_MESSAGES|). If that fails you can select a different language by
+ giving this option a two-letter language code.
+\end{itemize}
+
+Furthermore, some standard options are supported: |--help| (also |-h|)
+for getting help, |-q| which supresses informational messages, and
+|-v| (verbose) for turning on debugging options. With |--version| the
+script will show you the version of your \tl\ system and of itself.
+
+\subsection{The actions}
+
+There is a (permanently growing) list of actions, currently: |help|, |version|,
+|gui|, |install|, |update|, |backup|, |restore|, |remove|, |option|,
+|paper|, |arch|, |search|, |show|, |list|, |check|, |uninstall|, |generate|.
+
+\paragraph{The general actions}
+
+\begin{itemize}
+\item |search [|\var{option}|...] |\var{what} Without any options, search in the list
+ of locally installed packages for package names or descriptions
+ matching |what|. If you give the option |--global| it also searches
+ the remote database. This might differ in case you have not
+ installed all of \tl, but only a part of it. Finally, if you specify
+ |--file| then files are searched, and not package names.
+\item |show |\var{pkg}|...| gives you more detailed information on the
+ listed packages. If all packages are installed locally, it does not
+ consult the remote database.
+\item \Verb+list [collections|schemes]+ With no argument, lists all
+ packages available at the default install location, prefixing those
+ already installed with "i ". With an argument lists only collections
+ or schemes, as requested.
+\item |uninstall| This action will ask for confirmation, and then remove
+ the entire installation. Don't do it or we will be sad. If you give
+ the |--force| option, it does not even ask, but proceeds
+ immediately with the removal.
+\item \Verb+check [files|collections|all]+ Executes one (or all)
+ check(s) on the consistency of the installation. For |files| it
+ checks that all files listed in the local database
+ are actually present, and lists those missing.%
+% \footnote{On Windows that will not work currently, since
+% Windows does not ship find. Also MacOS seems to ship a strange
+% find implementation that does not support -wholename, so that
+% will break, too.}
+ The option |--use-svn| will use the |svn| command to check for the
+ files.
+\item |gui| starts the \acro{GUI}, as explained above at |--gui|.
+\item |version| is the same as |--version|.
+\item |help| is the same as |--help|.
+\end{itemize}
+
+\paragraph{The configuration actions}
+\begin{itemize}
+\item |option [show]| Shows all configuration settings currently
+ saved in the local database. The |show| option is accepted and ignored.
+\item |option |\var{key} |[|\var{value}|]| Without the
+ \var{value}, shows the current value
+ of the configuration option \var{key}; with \var{value}, sets this
+ configuration option. Currently accepted |key|s are |location|
+ (default installation location), |formats| (create formats at
+ installation time), |docfiles| (install documentation files),
+ |srcfiles| (install source files). These are the options you have
+ set at installation time and will be honoured at \emph{later} install and
+ upgrade actions. For example, changing the |docfiles|
+ options from false to true will not install or remove the already
+ present documentation files. But a subsequent update will install or remove
+ them.
+\item |paper |\var{paper} Sets the default papersize; possible values
+ are |a4| and |letter|.
+\item \var{program} \Verb+paper [help|+\var{paper}|]|
+ This allows setting different paper sizes for the specified
+ \var{program}: |xdvi|, |dvips|, |pdftex|, |dvipdfm|,
+ |dvipdfmx|, |context|. Without any additional argument it reports the
+ currently selected papersize. With |help|, it issues all the
+ supported paper sizes for that program. And if you specify a paper size,
+ it will be set as default papersize for the given program.
+\item |generate |\var{what} This command generates one or more
+ configuration files, as follows:
+
+ Giving |language.dat| for \var{what}
+ generates the |language.dat| file which specifies the
+ hyphenation patterns to be loaded for \LaTeX-based formats.
+ Giving |language.def| for \var{what} generates the |language.def|
+ file which specifies hyphenation patterns to be loaded for
+ |etex|-based formats.
+ Specifying |language| for |what|
+ generates both of these files.
+
+ Giving |fmtutil| for \var{what} generates the |fmtutil.cnf| file which
+ contains the definitions of all formats available.
+
+ Giving |updmap| for \var{what} generates the |updmap.cfg| file which
+ lists all the installed font map files.
+
+ For |fmtutil| and the language files, recreating is normal and both the
+ installer and tlmgr routinely call that.
+
+ For |updmap|, however, neither the installer nor tlmgr use
+ |generate|, because the result would be to disable all maps which
+ have been manually installed via |updmap-sys --enable|, e.g., for
+ proprietary or local fonts. Only the changes in the |--localcfg|
+ file mentioned below are incorporated by |generate|.
+
+ On the other hand, if you only use the fonts and font packages
+ within \TeX\ Live, there is nothing wrong with using |generate updmap|.
+ Indeed, we use it to generate the |updmap.cfg| file that is
+ maintained in the live source repository.
+
+ If the files |language-local.dat|, |language-local.def|,
+ |fmtutil-local.cnf|, or |updmap-local.cfg| are present under
+ \path{TEXMFLOCAL} in the respective directories, their contents will
+ be simply merged into the final files, with no error checking of any
+ kind.
+\end{itemize}
+
+
+\paragraph{The package management actions}
+\begin{itemize}
+\item |install| \var{pkg}\ldots\ installs the packages given as argument.
+ By default, installing a package
+ also installs all of its dependencies.
+ The following options are supported: |--no-depends| will
+ not install dependent packages. There is also |--no-depends-at-all|
+ which in addition
+ disregards the tightly coupled packages architecture-specific
+ executables; for example,
+ |bin-bibtex| and |bin-bibtex.i386-linux|. That is something you
+ should never use unless you are sure you know what you are
+ doing. |--dry-run| fakes the installation without changing anything.
+\item |update| \var{pkg}\ldots\ updates the packages given as arguments.
+ In addition, if the \var{pkg} is a collection, and the remote server
+ has new packages in this collection, they will be installed,
+ following the dependencies specified in the collection. Options:
+ \begin{description}
+ \item |--list| Lists the packages which would be updated or newly
+ installed, but does not do the update. It also lists the revision
+ numbers of the local and the remote packages.
+ \item |--all| Update all out-of-date packages.
+ \item |--dry-run| Fake the updates without changing anything.
+ \item |--backupdir |\var{directory}
+ Save a snapshot of the current package (as installed) in \var{directory},
+ before the package is updated. This way one can easily recover
+ in case an update turned out as not working. See the
+ |restore| action for details.
+ \item |--no-depends| Do not install normal dependencies.
+ \item |--no-depends-at-all| See |install| above for this option.
+ \end{description}
+\item |remove| \var{pkg}\ldots\
+ removes the packages given as arguments. Removing a
+ collection will remove all package dependencies (but not collection
+ dependencies) in that collection, unless |--no-depends| is
+ specified. However, when removing a package, dependencies are
+ never removed.
+
+ Options:
+ \begin{description}
+ \item |--no-depends| Do not remove dependent packages.
+ \item |--no-depends-at-all| See |install| above for this option.
+ \item |--force|
+ By default, when removing a package or collection would
+ invalidate a dependency of another collection/scheme, the
+ package is not be removed and an error is given. With this
+ option, the package will be removed unconditionally. Use with
+ care.
+ \item |--dry-run|
+ Fake the removals without actually changing anything.
+ \end{description}
+\item |backup| \var{pkg}\ldots\
+ makes a backup of the given packages, or all packages
+ with |--all|, to the directory specified with |--backupdir| (must
+ exist and be writable.
+
+ The following options are supported:
+ \begin{description}
+ \item |--backupdir |\var{directory}
+ The directory is a required argument and must specify an existing
+ directory where backups are to be placed.
+ \item |--all|
+ Make a backup of all packages in the \TeX\ Live installation.
+ This will take quite a lot of space and time.
+ \end{description}
+
+\item |restore --backupdir |\var{dir} |[|\var{pkg} |[|\var{rev}|]]|\\
+ If no |pkg| is given (and thus no |rev|), lists the available backup
+ revisions for all packages.
+
+ With |pkg| given but no |rev|, list all available backup revisions
+ of |pkg|.
+
+ With both |pkg| and |rev|, tries to restore the package from the
+ specified backup.
+
+ The option |--backupdir dir| is required, and must specify a
+ directory with backups.
+
+ The option |--dry-run| is also supported, as usual.
+
+\item |arch |\var{operation} \var{arg}\ldots
+ If \var{operation} is |list|, this
+ lists the names of architectures (|i386-linux|, \ldots)\ available at
+ the default install location.
+
+ If \var{operation} is |add|, adds the executables for each of the following
+ arguments (architecture names) to the installation.
+
+ The option |--dry-run| is also supported, as usual.
+\end{itemize}
+
+
+\subsection{Typical usage of tlmgr}
+
+Here we present some typical usage examples of the \tlmgr.
+
+\paragraph{Installing a new collection}
+
+Suppose that you installed |scheme-medium| and then realize that the
+hyphenation patterns for some language you are using haven't been
+installed, say, Norwegian. First you fire up tlmgr to search for
+the support:
+\begin{lstlisting}
+$ tlmgr search --global norwegian
+collection-langnorwegian - Norwegian
+hyphen-norwegian -
+\end{lstlisting}
+and then to install this collection:
+\begin{lstlisting}
+$ tlmgr install collection-langnorwegian
+install: collection-langnorwegian
+install: hyphen-norwegian
+regenerating language.dat
+regenerating language.def
+\end{lstlisting}
+and then it continues to regenerate all the format files depending on
+either |language.dat| or |language.def|. (If the
+the |formats| option is changed to false in the local database, the
+format rebuilding will be skipped. The default is to do so, to keep
+them up to date without manual intervention.)
+
+
+\paragraph{Searching for a package}
+
+You want to typeset an invitation in a special form, say
+in the shape of a heart. Your first try is
+\begin{lstlisting}
+$ tlmgr search paragraph
+\end{lstlisting}
+but that yields no output. Maybe it's not installed?
+So try a global search:
+\lstset{breaklines}
+\begin{lstlisting}
+$ tlmgr search -global paragraph
+tlmgr: installation location /src/TeX/texlive-svn/Master
+ bigfoot - Footnotes for critical editions
+ edmargin - Multiple series of endnotes for critical editions
+ footmisc - A range of footnote options
+ genmpage - Generalization of LaTeX's minipages
+ hanging - Hanging paragraphs
+ ibycus-babel - Use the Ibycus 4 Greek font with Babel
+ insbox - A TeX macro for inserting pictures/boxes into paragraphs
+ layouts - Display various elements of a document's layout
+ lettrine - Typeset dropped capitals
+ lineno - Line numbers on paragraphs
+ lipsum - Easy access to the Lorem Ipsum dummy text
+ moresize - Allows font sizes up to 35.83pt
+ ncctools - A collection of general packages for LaTeX
+ paralist - Enumerate and itemize within paragraphs
+ picinpar - Insert pictures into paragraphs
+ plari - Typesetting stageplay scripts
+ seqsplit - Split long sequences of characters in a neutral way
+ shapepar - A macro to typeset paragraphs in specific shapes
+ vwcol - Variable-width multiple text columns
+\end{lstlisting}
+and here we are, \texttt{shapepar} seems to be what's needed. So let
+us see what it is:
+\begin{lstlisting}
+$ tlmgr show shapepar
+tlmgr: installation location /src/TeX/texlive-svn/Master
+Package: shapepar
+Category: Package
+ShortDesc: A macro to typeset paragraphs in specific shapes.
+LongDesc: \shapepar is a macro to typeset paragraphs in a
+special ...
+Installed: No
+Collection:collection-latexextra
+\end{lstlisting}
+Ok, confirmed, now we can either install the
+respective collection using
+\begin{lstlisting}
+$ tlmgr install collection-latexextra
+\end{lstlisting}
+which will install quite a lot of packages, or only that one single
+package in the hope that it does not depend on anything else:
+\begin{lstlisting}
+$ tlmgr install shapepar
+tlmgr: installation location /src/TeX/texlive-svn/Master
+install: shapepar
+running mktexlsr
+...
+\end{lstlisting}
+
+These examples are about finding uninstalled packages. The default for
+\tl\ is a full installation, i.e., everything is installed that is
+available.
+
+\paragraph{Updating your installation}
+
+After the initial installation you want to get the latest and
+greatest of everything, but first you want to see what that means:
+\begin{lstlisting}
+$ tlmgr update --list
+tlmgr: installation location /mnt/cdrom
+Cannot load TeX Live database from /mnt/cdrom at /home/norbert/tltest/2008/bin/i386-linux/tlmgr line 1505, <TMP> line 1982.
+\end{lstlisting}
+Hmm, there seems to be an error, it tries to install from the \acro{DVD}
+which you returned to your friend last week. Well, then you
+should switch to the network installation source; best to do it
+for all future sessions by saving it as default
+location. But what was that strange address again? Fortunately you can
+tell tlmgr to use \acro{CTAN} and it will know what to do:
+\begin{lstlisting}
+$ tlmgr option location ctan
+tlmgr: setting default installation location to http://mirror.ctan.org/systems/texlive/tlnet/2008
+\end{lstlisting}
+Fine. Now let us see what we can upgrade:
+\begin{lstlisting}
+$ tlmgr update --list
+shapepar: local: 10400, source: 10567
+bin-texlive: local: 10693, source: 10750
+pdftex: local: 10622, source: 10705
+texlive.infra: local: 10685, source: 10748
+\end{lstlisting}
+Well, some things are there, so let us update all of them at once:
+\begin{lstlisting}
+$ tlmgr update --all
+update: shapepar (10400 -> 10567) ... done
+update: bin-texlive (10693 -> 10750) ... done
+update: pdftex (10622 -> 10705) ... done
+update: texlive.infra (10685 -> 10748) ... done
+running mktexlsr ...
+\end{lstlisting}
+
+\paragraph{Paper size configuration}
+
+You are moving to Japan and want letter as your default paper size;
+nothing easier:
+\begin{lstlisting}
+$ tlmgr paper letter
+\end{lstlisting}
+will switch to letter for the most important programs, and at also
+recreate the formats.
+
+\section{The GUI for tlmgr}
+
+To make most Windows users and some Unix users happy we provide a
+front end for the \tlmgr\ written in Perl/Tk. It does not do the
+actual work, but leaves that for tlmgr. It also does not provide quite the
+full functionality of tlmgr, but almost all of it is there.
+
+This program features several screens for different functionalities:
+installation, update, and removal of packages, removal of \tl\ as a
+whole, architecture support and configuration.
+
+The \acro{GUI} is started with either \texttt{tlmgr gui} or
+\texttt{tlmgr --gui action} where \texttt{action} is one of the
+actions given above. In the latter case it tries to open the respective screen of
+the \acro{GUI}.
+
+\subsection{The install screen}
+
+The first window to be seen normally is the package installation
+screen (fig.~\ref{fig:gui:install}).
+
+\begin{figure}[ht!]
+ \centering
+ \resizebox{\columnwidth}{!}{\includegraphics{tlmgrgui-install.png}}
+ \caption{\tlmgr\ \acro{GUI} install screen}
+ \label{fig:gui:install}
+\end{figure}
+
+At the top you see the current installation source, as given either on
+the command line of tlmgr, or in the absence of a command line
+argument as taken from the default option. It is \emph{not} loaded
+automatically, you have to press the \button{Load} button, or the
+\button{Change} button to select a different installation source for
+this run only. Below you see the list of available packages on the
+left, first all the collections and schemes, then all the
+other packages in alphabetic order. You can search by entering a
+string into the search text field, which immediately jumps to the
+first entry. The button \button{Next} jumps to the next match. After
+selecting one package you can see its description in the right half of
+this screen. Below there is the action button for installing the
+selected package(s), and also a switch that allows you to install a
+package without those it depends on.
+
+\subsection{The update screen}
+
+The update screen is similar to the install screen, but only
+lists those packages which have an upgrade available on the
+installation location. The upper part of the right pane gives you
+information on the package, and in the action area below you see two
+buttons, one for updating only the selected packages, and one for
+updating all packages.
+
+In fig.~\ref{fig:gui:update} you can see the update screen with
+updates available and the information for the selected package shown
+in the right part of the screen.
+
+\begin{figure}[ht!]
+ \centering
+ \resizebox{\columnwidth}{!}{\includegraphics{tlmgrgui-update.png}}
+ \caption{\tlmgr\ \acro{GUI} update screen}
+ \label{fig:gui:update}
+\end{figure}
+
+\subsection{The remove screen}
+
+The remove screen is also similar to the install screen, with the
+list of all installed packages in the left part, the
+information window in the upper right part, and the action area with
+two toggles and the remove button in the lower right part; see
+fig.~\ref{fig:gui:remove}.
+
+The two toggles correspond to the option |--force| and |--no-depends|
+of the tlmgr |remove| action, see above.
+
+\begin{figure}[ht!]
+ \centering
+ \resizebox{\columnwidth}{!}{\includegraphics{tlmgrgui-remove.png}}
+ \caption{\tlmgr\ \acro{GUI} remove screen}
+ \label{fig:gui:remove}
+\end{figure}
+
+\subsection{The uninstallation screen}
+
+This screen only sports one button which allows you to completely remove
+the \tl\ installation from your system. This button is not present on
+Windows systems, being replaced by an informational note that you should
+use the \cmd{Add/Remove} entry from the Control Panel.
+
+\subsection{The architectures screen}
+
+\tl\ allows you to install the binaries for several
+architecture-operating system combinations in case you want to
+distribute your installation via \acro{NFS} or other means in an
+inhomogen local network, see fig.~\ref{fig:gui:arch}.
+
+\begin{figure}[ht!]
+ \centering
+ \resizebox{\columnwidth}{!}{\includegraphics{tlmgrgui-arch.png}}
+ \caption{\tlmgr\ \acro{GUI} architectures screen}
+ \label{fig:gui:arch}
+\end{figure}
+
+This screen lists the available architectures at the current
+installation source, and allows you to select new architectures to be
+installed by pressing the \button{Apply changes} button.
+
+Note that the \emph{removal} of architectures is currently not
+supported, and that the whole screen is disabled on Windows systems
+since Windows does not support normal symbolic links.
+
+\subsection{The config screen}
+
+This screen allows the user to comfortably examine and set the various
+options of the \tl\ installation, see figure~\ref{fig:gui:option}.
+
+\begin{figure}[ht!]
+ \centering
+ \resizebox{\columnwidth}{!}{\includegraphics{tlmgrgui-options.png}}
+ \caption{\tlmgr\ \acro{GUI} config screen}
+ \label{fig:gui:option}
+\end{figure}
+
+In the upper part you can change the defaults for the installation
+source, whether formats should be created (and updated) by default,
+and whether macro/font documentation and source files should be
+installed.
+
+In the lower left part you can set the letter for all the programs to
+either \texttt{A4} or \texttt{letter}, or for each program
+individually. In the latter case you can choose from a wide range of
+paper formats depending on the programs support.
+
+In the lower right part there are some convenience buttons for updating
+the |ls-R| databases, the outline font list (|updmap-sys|) and
+rebuilding all formats.
+
+\subsection{Execution of the commands}
+
+As mentioned above, this \acro{GUI} is only a front end and leaves the
+actual work to tlmgr itself. So every action you do (installation,
+removal, etc.)\ will pop up a window where the output of the tlmgr
+process is shown.
+
+On Unix systems that output will be shown immediately. Windows
+lacks good support for forking in Perl/Tk, and thus you have to wait
+until the whole process has terminated before the output appears. That
+can take quite some time, so please be patient.
+
+We are working on merging the tlmgr and its \acro{GUI} into one
+program so that the output would become more immediate in all cases.
+
+
+\section{What else is there?}
+
+Besides reworking the whole infrastructure, which is only user-visible in
+the new installer and the \tlmgr, as with every year, all the
+programs and packages have been updated. We currently ship around~1400
+normal packages, e.g., \LaTeX\ and font packages, and
+around~300 other packages, mostly documenation and a few packages
+which are \tl\ internal.
+
+The new player in the game
+this year is the new engine Lua\TeX\ (\url{http://luatex.org}); besides a
+new level of flexibility in typesetting, this provides an excellent
+scripting language for use both inside and outside of \TeX\
+documents.
+
+
+\subsection{Windows-specific features}
+
+To be complete, a \tl\ installation needs support packages that are not
+commonly found on a Windows machine. \tl{} provides the missing
+pieces:
+\begin{description}
+\item[Perl and Ghostscript.] Because of the importance of Perl and
+ Ghostscript, \tl{} includes `hidden' copies of these
+ programs. \tl{} programs that need them know where to find them,
+ but they don't betray their presence through environment variables
+ or registry settings. They aren't full-scale distributions, and
+ shouldn't interfere with any system installations of Perl or
+ Ghostscript.
+\item[Command-line tools.] A number of Windows ports of common Unix
+ command-line programs are installed along with the usual \tl{}
+ binaries. These include \cmd{gzip}, \cmd{chktex},
+ \cmd{jpeg2ps}, \cmd{unzip}, \cmd{wget} and the
+ command-line utilities from the \cmd{xpdf} suite. (The
+ \cmd{xpdf} viewer itself is not available for Windows, but the
+ Sumatra \acro{PDF} viewer is based on it:
+ \url{http://blog.kowalczyk.info/software/sumatrapdf}.)
+\item[\texttt{fc-cache}] helps \XeTeX{} to handle fonts more
+ efficiently.
+\item[PS\_View.] Also installed is PS\_View, a new PostScript viewer
+ that is free software; see fig.~\ref{fig:psview}. It also supports
+ viewing of \acro{PDF} files and is extremely fast. Please contact us
+ with any suggestions, this program is in active development.
+\item[dviout] This is a \acro{DVI} previewer which is shipped only in
+ the support directory of the \acro{DVD}, but you will get it if you
+ use the network update procedure. See fig.~\ref{fig:dviout} for a
+ screenshot.
+\end{description}
+
+\begin{figure}[ht!]
+ \centering
+ \resizebox{0.8\columnwidth}{!}{\includegraphics{psview.png}}
+ \caption{PS\_View allows very high magnification, and renders
+ \acro{PDF}, too}
+ \label{fig:psview}
+\end{figure}
+
+\begin{figure}[ht!]
+ \centering
+ \resizebox{0.8\columnwidth}{!}{\includegraphics{dviout.png}}
+ \caption{DVIout on Windows}
+ \label{fig:dviout}
+\end{figure}
+
+\section{Final remarks and other resources}
+
+The \tlmgr\ is very much work in progress, and its \acro{GUI} even
+more. We are adding new functionality frequently, and improving
+existing functionality to make it more robust. If you see any anomalies
+don't hesitate to contact us at \url{tex-live@tug.org}, and we
+will try to improve it further.
+
+As with most volunteer projects the group of core programmers is
+quite small. Most of tlmgr and its \acro{GUI} has been
+programmed by the author with some minor contributions from
+others. Anyone being more or less able to program Perl is heartily
+invited to join forces and help us, there are long lists of
+\acro{TODO}s for the \tlmgr, let alone for all of \tl.
+
+If you are searching more information on \tl\ your first starting
+place should be \url{http://tug.org/texlive/} and the documentation
+specific page \url{http://tug.org/texlive/doc.html}.
+
+The list of people to thank is too long to be included here, please
+see the online \tl\ documentation, Chapter~9
+(Acknowledgments), for the ever growing list. Of course one name has to
+be mentioned and that is Karl Berry who with great enthusiasm and
+perpetual support (and a sometimes critical voice if I was too fast in
+implementing something!)\ prepared the \tl~2008 release.
+
+\bibliographystyle{arstexnica}
+\bibliography{tlmgr-article,arstexnica}
+
+%
+% END OF ARTICLE
+%
+\end{article}
+\end{document}
+
+
diff --git a/Master/tlpkg/doc/guit08/tlmgrgui-arch.png b/Master/tlpkg/doc/guit08/tlmgrgui-arch.png
new file mode 100644
index 00000000000..410dc26c419
--- /dev/null
+++ b/Master/tlpkg/doc/guit08/tlmgrgui-arch.png
Binary files differ
diff --git a/Master/tlpkg/doc/guit08/tlmgrgui-install.png b/Master/tlpkg/doc/guit08/tlmgrgui-install.png
new file mode 100644
index 00000000000..6151039e056
--- /dev/null
+++ b/Master/tlpkg/doc/guit08/tlmgrgui-install.png
Binary files differ
diff --git a/Master/tlpkg/doc/guit08/tlmgrgui-options.png b/Master/tlpkg/doc/guit08/tlmgrgui-options.png
new file mode 100644
index 00000000000..d9051c72a79
--- /dev/null
+++ b/Master/tlpkg/doc/guit08/tlmgrgui-options.png
Binary files differ
diff --git a/Master/tlpkg/doc/guit08/tlmgrgui-remove.png b/Master/tlpkg/doc/guit08/tlmgrgui-remove.png
new file mode 100644
index 00000000000..163b75ae866
--- /dev/null
+++ b/Master/tlpkg/doc/guit08/tlmgrgui-remove.png
Binary files differ
diff --git a/Master/tlpkg/doc/guit08/tlmgrgui-update.png b/Master/tlpkg/doc/guit08/tlmgrgui-update.png
new file mode 100644
index 00000000000..cc15c5cb218
--- /dev/null
+++ b/Master/tlpkg/doc/guit08/tlmgrgui-update.png
Binary files differ