diff options
author | Norbert Preining <preining@logic.at> | 2009-09-15 18:56:50 +0000 |
---|---|---|
committer | Norbert Preining <preining@logic.at> | 2009-09-15 18:56:50 +0000 |
commit | 995770ec5a02a4379ee49acbad1ce091601f7203 (patch) | |
tree | 1d78cb5bf9ab257c8c5d66ceb3127337fbd4b0b3 /Master/tlpkg/doc/articles | |
parent | 29b6bc51ba93d568c16f16e04fbc509653d85241 (diff) |
rework tlpkg/doc and tlpkg/dev layout
git-svn-id: svn://tug.org/texlive/trunk@15301 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg/doc/articles')
59 files changed, 4940 insertions, 0 deletions
diff --git a/Master/tlpkg/doc/articles/bachotex08/install08gui.png b/Master/tlpkg/doc/articles/bachotex08/install08gui.png Binary files differnew file mode 100644 index 00000000000..44895895d96 --- /dev/null +++ b/Master/tlpkg/doc/articles/bachotex08/install08gui.png diff --git a/Master/tlpkg/doc/articles/bachotex08/install08text.pdf b/Master/tlpkg/doc/articles/bachotex08/install08text.pdf Binary files differnew file mode 100644 index 00000000000..639551f96a3 --- /dev/null +++ b/Master/tlpkg/doc/articles/bachotex08/install08text.pdf diff --git a/Master/tlpkg/doc/articles/bachotex08/install08text.tex b/Master/tlpkg/doc/articles/bachotex08/install08text.tex new file mode 100644 index 00000000000..8fd709ec88f --- /dev/null +++ b/Master/tlpkg/doc/articles/bachotex08/install08text.tex @@ -0,0 +1,51 @@ +\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 local styles etc): + /usr/local/texlive/texmf-local + TEXMFSYSVAR (Directory for local config): + /usr/local/texlive/2008/texmf-var + + <O> options: + [ ] use letter size instead of A4 by default + [ ] create all format files + [X] install macro/font doc tree + [X] install macro/font source tree + [ ] create symlinks in standard directories + +Other options: +==================================================================== + <I> start installation + <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/articles/bachotex08/tlinst-BT08-abstract.pdf b/Master/tlpkg/doc/articles/bachotex08/tlinst-BT08-abstract.pdf Binary files differnew file mode 100644 index 00000000000..9a6cb330025 --- /dev/null +++ b/Master/tlpkg/doc/articles/bachotex08/tlinst-BT08-abstract.pdf diff --git a/Master/tlpkg/doc/articles/bachotex08/tlinst-BT08-abstract.tex b/Master/tlpkg/doc/articles/bachotex08/tlinst-BT08-abstract.tex new file mode 100644 index 00000000000..7eb25f58bcc --- /dev/null +++ b/Master/tlpkg/doc/articles/bachotex08/tlinst-BT08-abstract.tex @@ -0,0 +1,105 @@ +% +% A new installer for TeX Live +% Norbert Preining, Reinhard Kotucha, Siep Kroonenberg +% Article presented on the 16th BachoTeX meeting, Bachotek ?? May 2008 +% +% Copyright 2007 Norbert Preining at al. +% 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} +\documentclass{ltugproc} +\usepackage[latin1]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{lmodern} +\usepackage[english]{babel} +\usepackage{graphicx} +\usepackage{fancyvrb} +\usepackage{url} +\usepackage{marvosym} +\usepackage{listings} +\lstset{frame=lines,basicstyle=\ttfamily,showspaces=true,prebreak={\Righttorque},postbreak={\Lefttorque},breaklines} +\usepackage{microtype} + +\usepackage{hyperref} % should be loaded last because it patches other + % packages. + +\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} + +\hypersetup{pdftitle={A new installer for \tl}, + pdfauthor={R. Kotucha, S. Kroonenberg, N. Preining}, + pdfsubject={A new installer for \tl}, + pdfkeywords={TeX Live, installer, ...}} + +\hyphenation{infra-struc-ture} + +%\catcode`>=\active +%\def>#1<{\texttt{#1}} +\DefineShortVerb{\|} +\begin{document} +%\begin{article} +%\selectlanguage{italian}% + +\title{A new installer for \tl}%%%\thanks{% +% Article presented on the 16th Bacho\TeX meeting, Bachotek ?? May 2008}} + +\author{Reinhard Kotucha} +\address{Marschnerstr.~25\\ + 30167~Hannover, Germany} +\netaddress{reinhard.kotucha@web.de} + +\author{Siep Kroonenberg} +\address{Rijksuniversiteit Groningen\\ + Department of Economics\\ + P.O.~Box~800\\ + 9700~AV~Groningen, the Netherlands} +\netaddress{siepo@cybercomm.nl} + +\author{Norbert Preining} +\address{Vienna University of Technology\\ + Wiedner Hauptstr.\ 10\\ + 1040 Wien, Austria} +\netaddress{preining@logic.at} + + +\begin{abstract} + \tl\ has a new package infrastructure, primarily developed by + Norbert Preining, and inspired by the Debian/Linux packaging + system. + + We shall present a new \tl\ installer, based on the new package + infrastructure. It includes a text based as well a graphical user + interface. Among other new features, installing \tl\ from the + internet is now possible. It should work on all platforms + supported by \tl. +\end{abstract} + +\maketitle + +\end{document} +% +% does not work in normal arstexnika mode, needs standalone, I leave +% this up to the editors +%\tableofcontents + +\section{Introduction} +\label{sec:intro} + +%\bibliographystyle{arstexnica} +%\bibliography{atsample} + +\end{article} + +\end{document} + + diff --git a/Master/tlpkg/doc/articles/bachotex08/tlinst-BT08.pdf b/Master/tlpkg/doc/articles/bachotex08/tlinst-BT08.pdf Binary files differnew file mode 100644 index 00000000000..b9b9f40db19 --- /dev/null +++ b/Master/tlpkg/doc/articles/bachotex08/tlinst-BT08.pdf diff --git a/Master/tlpkg/doc/articles/bachotex08/tlinst-BT08.tex b/Master/tlpkg/doc/articles/bachotex08/tlinst-BT08.tex new file mode 100644 index 00000000000..437df118280 --- /dev/null +++ b/Master/tlpkg/doc/articles/bachotex08/tlinst-BT08.tex @@ -0,0 +1,274 @@ +% +% A new installer for TeX Live +% Norbert Preining, Reinhard Kotucha, Siep Kroonenberg +% Article presented on the 16th BachoTeX meeting, Bachotek ?? May 2008 +% +% Copyright 2007 Norbert Preining at al. +% 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} +\documentclass{ltugproc} +\usepackage[latin1]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{lmodern} +\usepackage[english]{babel} +\usepackage{graphicx} +\usepackage{fancyvrb} +\usepackage{url} +\usepackage{marvosym} +\usepackage{listings} +\lstset{frame=lines,basicstyle=\ttfamily,showspaces=true,prebreak={\Righttorque},postbreak={\Lefttorque},breaklines} +\usepackage{microtype} + +\usepackage{hyperref} % should be loaded last because it patches other + % packages. + +\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} + +\newcommand{\pl}{Perl} +\newcommand{\gs}{Ghostscript} +\newcommand{\tlu}{\texttt{texlua}} +\newcommand{\kpse}{\texttt{kpathsea}} + +% from l2tabuen: +\tolerance 1414 +\hbadness 1414 +\emergencystretch 1.5em +\hfuzz 0.3pt +%\widowpenalty -10000 +\vfuzz \hfuzz +%\raggedbottom + + +\setcounter{topnumber}{4} +\setcounter{bottomnumber}{4} +\setcounter{totalnumber}{10} +\renewcommand{\textfraction}{0.15} +\renewcommand{\topfraction}{0.85} +\renewcommand{\bottomfraction}{0.70} +\renewcommand{\floatpagefraction}{0.66} + + +\hypersetup{pdftitle={A new installer for \tl}, + pdfauthor={R. Kotucha, S. Kroonenberg, N. Preining}, + pdfsubject={A new installer for \tl}, + pdfkeywords={TeX Live, installer, ...}} + +\hyphenation{infra-struc-ture} + +%\catcode`>=\active +%\def>#1<{\texttt{#1}} +\DefineShortVerb{\|} +\begin{document} +%\begin{article} +%\selectlanguage{italian}% + +\title{A new installer for \tl}%%%\thanks{% +% Article presented on the 16th Bacho\TeX meeting, Bachotek ?? May 2008}} + +\author{Reinhard Kotucha} +\address{Marschnerstr.~25\\ + 30167~Hannover, Germany} +\netaddress{reinhard.kotucha@web.de} + +\author{Siep Kroonenberg} +\address{Rijksuniversiteit Groningen\\ + Department of Economics\\ + P.O.~Box~800\\ + 9700~AV~Groningen, the Netherlands} +\netaddress{siepo@cybercomm.nl} + +\author{Norbert Preining} +\address{Vienna University of Technology\\ + Wiedner Hauptstr.\ 10\\ + 1040 Wien, Austria} +\netaddress{preining@logic.at} + + +\begin{abstract} + \tl\ has a new package infrastructure, primarily developed by + Norbert Preining, and inspired by the Debian GNU/Linux packaging + system. + + We shall present a new \tl\ installer, based on the new package + infrastructure. It includes a text based as well a graphical user + interface. Among other new features, installing \tl\ from the + Internet is now possible. It should work on all platforms + supported by \tl. +\end{abstract} + +\maketitle + +% +% does not work in normal arstexnika mode, needs standalone, I leave +% this up to the editors +%\tableofcontents + +\section{Introduction} +\label{sec:intro} + +In this paper we introduce the new \tl\ installer. Its creation was +necessitated by the new package infrastructure, which is described +elsewhere in these proceedings. + +However, there is more news, also from a user's point of view. In +particular: +\begin{itemize} +\item It will be possible to install \tl\ from the Internet. +\item The Windows version is much more in line with Unix versions. +\item There is just one installer, which can run either in text + mode, emulating the former install-tl.sh shell script, + or in GUI mode, emulating the former tlpmgui. +\end{itemize} + +\begin{figure}[htb] + \centering + \resizebox{\columnwidth}{!}{\includegraphics{install08text}} + \caption{Main menu of the text mode installer} + \label{fig:text_main_menu} +\end{figure} + +\section{\tlu} +\label{sec:texlua} + +Nowadays \TeX{} contains a customized copy of Lua as embedded +scripting language. When called as \tlu, it acts as a standalone Lua +interpreter, customized for a \TeX{} environment. This is a very +attractive scripting solution: +\begin{itemize} +\item no version worries: \tlu{} scripts should simply match the + \TeX{} version they are part of. +\item \tlu{} has \kpse\ compiled in. In a \tlu{} script \kpse{} + file searching happens within the same process, which can speed + things up a lot. +\item An embedded scripting language is immune from the kind of + bloat suffered by popular scripting languages such as \pl{} and + Ruby. +\end{itemize} +Under Windows, the |.texlua| extension is made an executable file +type. + +\section{Install \tl\ from the Internet} +\label{sec:internet} + +It is now possible to install \tl\ from a remote server. Thanks to +the new infrastructure, the package database which tells the +installer which packages have to be downloaded and how to install +them, is a single file. + +Two installers for network downloads are provided. +|install-tl-unx.tar.gz.| supports Unix only. |install-tl.zip| +additionally contains a small subset of \pl\ 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. + + +\section{A new compression Algorithm} +\label{sec:lzma} + +Using |.tar.lzma| compression instead of |.zip| reduces the size of the +compressed packages by 20\%. It cannot be assumed that |lzma| +decompressors are available on any platform, hence they have to be +provided for all platforms supported by \tl. Fortunately there is a +program `|lzmadec|' available for all platforms. The size of the +executable file is only 12\,kB. + +\section{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. + +\subsection{\texttt{\$HOME} and multi-user support} +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, thanks to Karl +Berry: \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. Now there is no reason any more to have a different +set of \texttt{texmf} trees or to leave out scripts such as +\texttt{fmtutil-sys} and \texttt{updmap-sys}. It also shares the +Unix \texttt{texmf.cnf}. + +\subsection{Scripting} +We cannot count on the presence of the usual Unix scripting +languages. We deal with this by including a limited subset of \pl{} +for Windows, which contains just enough modules to run the installer +and the \pl{} scripts which are part of \tl. + +To prevent interference with any pre-existing \pl, we make it +invisible to the system by not placing it on the searchpath and by +not creating or changing any \pl-related settings. Instead, the +\tl\ \pl\ scripts are called via wrapper scripts that know how to +find Perl and that create the environment variables it needs for the +duration of the job. In the case of the installer itself, the +wrapper is a simple batchfile (but not so simple that it would have +worked under earlier Windows versions). But in most cases, the +wrapper is written in \tlu; see section \ref{sec:texlua}. + +Most likely, there won't be a Bourne-compatible shell either. But in +the new \tl, most shell scripts have been replaced by \pl- and +\tlu{} scripts, which also work under Windows. So we just about got +rid of \texttt{.exe} files replacing Unix scripts. + +\subsection{\gs} + +\tl{} for Windows also includes a hidden copy of \gs, another +fixture of Unix systems that is usually absent from Windows. The +most important batch files provided by \gs\ have been ported to +\tlu{}, see \ref{sec:texlua}. + +\begin{figure*}[htb] + \centering + \resizebox{\textwidth}{!}{\includegraphics{install08gui}} + \caption{The main menu of the GUI installer} + \label{fig:gui_main_menu} +\end{figure*} + +\section{Testing with virtual machines} +We do much of our testing with virtual machines. With programs such +as VirtualBox or VMware you can run a guest operating system as a +program inside a host operating system. + +Even if host and guest are the same operating system, it is a huge +advantage that the host will be unaffected, and that the guest is +free from the idiosyncrasies of the host. + +Normally, the filesystem of the guest is on a virtual disk, which is +a very large file on the host system. An installation can simply be +reverted by making a fresh copy from backup of this very large file. + +The guest can access the \tl{} files via e.g. a shared folder or +Samba, using a virtual network interface. An Internet install can be +simulated with a webserver or ftp server on the host, also via a +virtual network interface. These server programs can simply use the +\tl{} working copy. + +\newpage +\begin{thebibliography}{1} +\bibitem{PreiBT08} Norbert \textsc{Preining} +\newblock \emph{The new \TeX~Live Infrastructure and Installer} +Talk held at Bacho\TeX\,2008. +\end{thebibliography} + +%\bibliographystyle{arstexnica} +%\bibliography{atsample} + +%\end{article} + +\end{document} diff --git a/Master/tlpkg/doc/articles/cstug08/berry.jpg b/Master/tlpkg/doc/articles/cstug08/berry.jpg Binary files differnew file mode 100644 index 00000000000..27b5b574899 --- /dev/null +++ b/Master/tlpkg/doc/articles/cstug08/berry.jpg diff --git a/Master/tlpkg/doc/articles/cstug08/cstug08.pdf b/Master/tlpkg/doc/articles/cstug08/cstug08.pdf Binary files differnew file mode 100644 index 00000000000..9170e643af9 --- /dev/null +++ b/Master/tlpkg/doc/articles/cstug08/cstug08.pdf diff --git a/Master/tlpkg/doc/articles/cstug08/cstug08.tex b/Master/tlpkg/doc/articles/cstug08/cstug08.tex new file mode 100644 index 00000000000..411ef6dfcf8 --- /dev/null +++ b/Master/tlpkg/doc/articles/cstug08/cstug08.tex @@ -0,0 +1,975 @@ +\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,ctable} +\usepackage{marvosym} +\usepackage{tikz} +\usepackage{listings} +\lstset{frame=lines,basicstyle=\ttfamily,showspaces=true,prebreak={\Righttorque},postbreak={\Lefttorque},breaklines} +\newcommand{\tl}{\TeX~Live} +\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} +\newcommand{\tlmgr}{\tl~Manager} +\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}} +\newcommand{\XeTeX}{Xe\TeX} + +\def\bigit{\\[\bigskipamount]} +\def\medit{\\[\medskipamount]} + +\hyphenation{infra-struc-ture} +\DefineShortVerb{\|} + +\usetheme[headheight=75pt,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~2008 -- {\normalfont Brno, CSTUG Meeting 2008} + \hfill \insertframenumber\hspace{3em}~~\vfill}}} +\addheadbox{black on white}{\includegraphics{texlive2008-logo-2.png}} +\setbeamertemplate{navigation symbols}{} + +\setlength{\parskip}{\medskipamount} + +\def\cred#1{{\color{red}#1}} +\def\cblue#1{{\usebeamercolor[fg]{structure}#1}} +\def\prog#1{\texttt{#1}} + +\def\img#1#2#3#4{% + \bgroup% + \setbox0=\hbox{\hskip #3\vbox to 0pt{\vskip #4 \includegraphics[height=#2]{#1}}}% + \dp0=0pt % + \ht0=0pt % + \wd0=0pt % + %\hbox to \textwidth{\hfill\hbox{\box0}}% + \hbox{\box0} + \egroup} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% here begins the stuff +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\title{} %\tl~2008} +\title{Norbert Preining} +%\author{Norbert Preining} +\author{Vienna University of Technology, Austria\\[\bigskipamount] +\textsc{cstug Meeting 2008, Brno, Czech Republic}} +\date{13 December 2008} + +%Bachotek, Poland \hspace{\bigskipamount} 13~December 2008} + +\begin{document} + +\frame{\titlepage} + +\begin{frame} + \frametitle{Layout} + \begin{center} + \begin{tabular}[h!]{ll} + \cblue{Part for users} & \cblue{Technical part} \\ + \midrule + Overview & Getting things into \tl \\ + Installation & The new infrastructure \\ + \tlmgr \qquad\qquad & Internals of the \tlpdb, config options\\ + Other news + \end{tabular} + \end{center} +\end{frame} + +\section{Users' perspective} + +\subsection{Overview} + +\begin{frame} + \frametitle{History} + \begin{itemize} + \item late 1993 Dutch \TeX\ Users Group, 4All\TeX\ CD, \acro{tds} + working group\pause + \item 1995 Unix-based \acro{TDS} \acro{CD} based on te\TeX\pause + \item 1996 first edition, Sebastian Rahtz% + \uncover<3-3>{\img{rahtz.png}{110pt}{10pt}{-5pt}}\pause + \item 2000 5th edition, non-free software removed\pause + \item 2002 7th edition: Mac OS X support\pause + \item 2005 addition of the -sys scripts\pause + \item 2006-07 Xe\TeX\ addition, end of te\TeX\ development, Karl Berry + \uncover<7-7>{\img{berry.jpg}{100pt}{150pt}{-130pt}} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Features} + + \begin{itemize} + \item `complete' -- all the free stuff from \textsc{ctan}\bigit + \item multi-platform\bigit + \item uniform across platforms\bigit + \item practically daily updates\bigit + \item \textsc{dfsg} free with a few exceptions + \end{itemize} +\end{frame} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Installation} + +\begin{frame} + \frametitle{Features of the new installer} + \begin{itemize} + \item Installation from various sources\bigit + \item Text and \acro{GUI} mode\bigit + \item Windows == Unix (\emph{cum grano salis}) + \end{itemize} +\end{frame} + + +\begin{frame} + \frametitle{Installation sources} + \begin{itemize} + \item \acro{DVD}\\ + \uncover<1-1>{update \tlmgr, noexec% + \img{texcollection2008-large.png}{120pt}{10pt}{-50pt}} + \item Network\\ + \uncover<2-2>{automatic detection of nearest \ctan-mirror} + \item local (hard disk) mirror of \ctan\\ + \uncover<3-3>{use it like a \acro{DVD}} + \item svn checkout + \item another installation\\ + \uncover<5-5>{recent installations, -location argument necessary} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Where to start} + \begin{itemize} + \item Go and get it at + \url{http://mirror.ctan.org/systems/texlive/tlnet/2008}\\ + ~~ + \item \Verb+install-tl-unx.tar.gz+ for Unix-ish systems\\ + ~~ + \item \Verb+install-tl.zip+ for all systems\\ + \uncover<2-2>{supports all systems, but ships Perl for \acro{W32}} + \item \acro{W32}: double-click the \url{.bat} file\\ + \uncover<3-3>{or start it from a cmd shell for additional arguments} + \item Unix: \url{./install-tl}\\ + \uncover<4-4>{and add arguments if you need them} + \end{itemize} +\end{frame} + + +\begin{frame} + \frametitle{Arguments for the Installer} + \begin{itemize} + \item \url{-location} installation source, can be\\ + \url{/normal/path}\\ + \url{file:/some/path}\\ + \url{ftp://some.server/path}\\ + \url{http://some.server/path} + \bigit + \item \url{-gui} tries to start the \acro{GUI} installer, + \url{-no-gui} for \acro{W32} to disable the default \acro{GUI} + installer \bigit + \item \url{-lang} specifies a language code, currently supported: + en, de, fr, it, nl, pl, sl, zh\_cn, zh\_tw + \item some more: \url{-profile}, \url{-non-admin}, \ldots + \end{itemize} +\end{frame} + + +\begin{frame} + \frametitle{Installation settings} + \begin{itemize} + \item binary systems + \uncover<1-1>{\img{gui-systems.png}{\textheight}{20pt}{-60pt}}\bigit + \pause + \item schemes + \uncover<2-2>{\img{gui-scheme}{80pt}{-50pt}{10pt}}\pause\bigit + \item collections + \uncover<3-3>{\img{gui-collections}{160pt}{40pt}{-100pt}}\pause\bigit + \item language collections and docs + \uncover<4-4>{\img{gui-lang}{100pt}{-50pt}{-120pt}} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Installation settings cont.} + \begin{itemize} + \item destination folders + \begin{itemize} + \item \textsc{texdir} + \item \textsc{texmfsysvar} + \item \textsc{texmfsysconfig} + \item \textsc{texmfhome} + \end{itemize}\uncover<1-1>{\img{install-directory.png}{70pt}{0pt}{0pt}} + \pause + \item options + \begin{itemize} + \item papersize + \item create formats + \item install font/macro documentation + \item install font/macro sources + \end{itemize}\uncover<2-2>{\img{install-options.png}{60pt}{110pt}{-110pt}} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Post installation actions} + \begin{block}{Windows systems} + \vspace{-\baselineskip} + \begin{itemize} + \item Menu entry for \tl\ with all programs\medit + \item Desktop link to ps-view\medit + \item adjusting the \acro{PATH} environment\medit + \end{itemize}\pause + \end{block} + \begin{block}{Unix systems} + \vspace{-\baselineskip} + \begin{itemize} + \item add \acro{TEXDIR}/bin/<\acro{ARCH}> to \acro{PATH}\medit + \item adjust \acro{MANPATH} and \acro{INFOPATH} + \end{itemize} + \end{block} +\end{frame} + +\begin{frame} + \frametitle{Other ways to use the installer} + \begin{block}{Running from \acro{DVD}} + only text mode, writable root necessary, only the texmf trees and + binaries are not copied + \end{block} + \pause + \begin{block}{Portable usage \texttt{tl\_portable(.bat)}} + minimal impact on the system, first time it runs creates files in + home directory, second time startup much faster, gives a shell + that is set up for running \tl\ from there + \end{block} +\end{frame} + +\begin{frame}[plain] + \frametitle{Demo Text and \acro{GUI} mode installer} + \begin{tabular}{ll} + \resizebox{0.5\columnwidth}{!}{\includegraphics{install08text-crop}} + & + \resizebox{0.5\columnwidth}{!}{\includegraphics{gui-installer.png}} + \end{tabular} +\end{frame} + +\subsection{\tlmgr} + +\begin{frame} + \begin{center} + \Large The new player\\[\bigskipamount] + \tlmgr + \end{center} +\end{frame} + +\begin{frame} + \frametitle{\TeX\ Live Manager \texttt{tlmgr}} + \begin{itemize} + \item installation/removal of additional packages or collections + \item update all packages to the newest versions available + \item backups and restore + \item paper configuration like texconfig, but also for Windows + \item managing the installed binary systems + \item searching the installed and all available packages + \item list and searching all schemes, collections, packages + \item setting some default values like the installation location + \item regenerate fmtutil.cnf, language.dat, and updmap.cfg from the + information stored in the database and local additions + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{\tlmgr\ -- Syntax} + \begin{center} + \texttt{tlmgr \alt<2>{\cred{[opt]...}}{[opt]...} \alt<3>{\cred{action}}{action} [opt]... [arg]...} + \end{center} + \only<2>{ + With first set of options: + \begin{itemize} + \item \url{-location} installation source, see above + \item \url{-gui} starts the \acro{GUI} + \item \url{-gui-lang} should be auto-detected, can be overridden + \item standard options \url{-help}, \url{-q}, \url{-v}, + \url{-version} + \end{itemize} + } + \only<3>{ + \begin{itemize} + \item general actions: search, show, list, uninstall, check, gui, + version, help\bigit + \item configuration actions: option, paper, generate\bigit + \item package management actions: install, update, remove, backup, + restore, arch + \end{itemize} + } +\end{frame} + +\begin{frame} + \frametitle{The search (and show) action} + \begin{center} + \texttt{tlmgr [opt]... search \cred{[opt]... what}} + \end{center} + searches the \emph{locally} installed package names and descriptions + for \texttt{\cred{what}}. + + Options: + \begin{itemize} + \item \texttt{-global} also searches the remote database + \item \texttt{-file} searches for file names + \end{itemize} + \pause + \begin{center} + \texttt{tlmgr [opt]... show \cred{what}} + \end{center} + shows information on the given packages +\end{frame} + +\begin{frame} + \frametitle{The install action} + \begin{center} + \texttt{tlmgr [opt]... install \cred{[opt]... what}} + \end{center} + installs the package \texttt{what} including all dependencies + + Options: + \begin{itemize} + \item \texttt{-no-depends} do not install dependencies + \item \texttt{-no-depends-at-all} do not even install architecture + specific sub-packages + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{The update action} + \begin{center} + \texttt{tlmgr [opt]... update \cred{[opt]... what}} + \end{center} + installs the package \texttt{what} including all dependencies + + Options: + \begin{itemize} + \item \texttt{-list} list packages to be updated (or added) with + revisions + \item \texttt{-all} update everything + \item \texttt{-dry-run} don't actually do it + \item \texttt{-backupdir dir} saves a snapshot of the current status to + the specified directory + \item \texttt{-no-depends}, \texttt{-no-depends-at-all} as before + \end{itemize} +\end{frame} + + +\begin{frame}[plain] + \frametitle{The \acro{GUI} of the \tlmgr} + + \begin{figure}[ht!] + \centering + \resizebox{\columnwidth}{!}{\includegraphics{tlmgrgui-update.png}} + \end{figure} +\end{frame} + +\begin{frame} + \frametitle{Concluding remarks on \texttt{tlmgr}} + \begin{itemize} + \item very much work in progress, please do update your tlmgr + immediately after a new installation + \pause + \item the \acro{GUI} needs a lot of work, does not exhibit all the + functionality of the cmd line version + \pause + \item Perl programmers -- join us! + \end{itemize} + \pause + Recovering from crashed \texttt{tlmgr} or perl modules\pause + \begin{itemize} + \item for Windows systems: \ctan: \texttt{update-tlmgr-latest.exe} + \uncover<5-5>{\img{update-tlmgr-w32.png}{95pt}{-200pt}{-140pt}% + \img{update-tlmgr-finish.png}{95pt}{-50pt}{-140pt}} + \pause\bigit + \item for Unix systems: \ctan: \texttt{update-tlmgr-latest.sh} + \end{itemize} +\end{frame} + + +\subsection{Other news} + +\begin{frame} + \frametitle{Other (user visible) news} + \begin{itemize} + \item \cblue{hyph-utf8:} all engines share the same patterns\pause + \item \cblue{lua\TeX:} embedded lua interpreter\pause + \item \cblue{xindy} indexing program\pause + \item \cblue{(W32) Perl and Ghostscript.} + `hidden' copies, no interference with + full-scale distributions\pause + \item \cblue{(W32) \texttt{fc-cache}} helps \XeTeX{} to handle fonts more + efficiently.\pause + \item \cblue{(W32) PS\_View.} a new PostScript\\ + (and \acro{PDF} viewer + that is free software% + \uncover<6-6>{\img{psview.png}{120pt}{-40pt}{-160pt}}% + \pause + \item \cblue{(W32) dviout} \acro{DVI} previewer + \uncover<7-7>{\img{dviout.png}{120pt}{-40pt}{-150pt}} + \end{itemize} +\end{frame} + + +\section{Intermezzo for package writers} + +\begin{frame} + \begin{center} + \huge Intermezzo for + + \bigskip + Package writers + \end{center} +\end{frame} + +\subsection{Getting things into CTAN} + +\begin{frame} + \frametitle{Getting things into \tl} + + \begin{tikzpicture}[node distance=5mm, + foo/.style={ + rectangle,minimum size=6mm,rounded corners=3mm, + very thick,draw=black!50, + top color=white,bottom color=black!20}, + ask/.style={ + rectangle,minimum size=6mm,rounded corners=3mm, + very thick,draw=black!50, + top color=white,bottom color=black!20, + font=\itshape + }, + point/.style={circle,draw,inner sep=0pt}] + \node (new) at (0,4) [foo] {New package};\pause + \node (ctan) at (0,3) [foo] {upload CTAN}; + \path (new) edge[->] (ctan);\pause + \node (2known) at (0,2) [ask] {known to ctan2tds?}; + \path (ctan) edge[-] (2known);\pause + \node (temp) at (1,1) [point] {yes}; + \path (2known) edge[-] (temp); + \node (call) at (0,0) [foo] {call ctan2tds}; + \path (temp) edge[->] (call);\pause + \node (adjust) at (-1,1) [foo] {adjust ctan2tds}; + \path (2known) edge[->] (adjust); + \path (adjust) edge[->] (call);\pause + + \node (refsvn) at (5,4) [foo] {\acro{TUG} reference checkout}; + \node (p1) at (0,-0.5) [point] {}; + \node (p2) at (2,-0.5) [point] {}; + \node (p3) at (2,4) [point] {}; + \path (call) edge[-] (p1); + \path (p1) edge[-] (p2); + \path (p2) edge[-] (p3); + \path (p3) edge[->] (refsvn); + \pause + + \node (tlnet) at (5,3) [foo] {update tlnet}; + \path (refsvn) edge[->] (tlnet); + \pause + \node (cambridge) at (5,2) [foo] {mirror to Cambridge \acro{CTAN}}; + \path (tlnet) edge[->] (cambridge); + \pause + \node (mirror) at (5,1) [foo] {mirrors to other \ctan\ mirrors}; + \path (cambridge) edge[->] (mirror); + \pause + \node (user) at (5,0) [foo] {User's computer}; + \path (mirror) edge[->] (user); + \end{tikzpicture} + +\end{frame} + +\section{Technical part} + +\begin{frame} + \begin{center} + \huge Technical part + \end{center} +\end{frame} + +\subsection{The new infrastructure} + +\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 \pause + \item No additional files to be kept in sync\\ + 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\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 central \texttt{texlive.tlpdb}} + One installation or media is now completely described by one file, + the \TeX~Live Database: + \begin{itemize} + \item simple text file -- easily parseable + \item revision number for the single packages + \item generated from static content (the tlpsrc files) + \item enriched with information from the \TeX~Catalogue + \item format documented in detail (\textsc{pod} documentation in the + respective perl module) + \end{itemize} +\end{frame} + +\begin{frame}[fragile] + \frametitle{How does \texttt{texlive.tlpdb} look like} + \begin{lstlisting}[title={texlive.tlpdb}] +name abbr +... + +name memoir +... + +\end{lstlisting} + \begin{itemize} + \item sequence of \texttt{key value} pairs + \item separated by an empty line (or more) + \item one group per package + \item some `meta'-packages for configuration options + \end{itemize} +\end{frame} + +\begin{frame}[plain,fragile] + \frametitle{The single package: \tlpobj\ by example I} + \begin{lstlisting}[basicstyle=\ttfamily\tiny,title={a0poster.tlpobj},label=a0poster] +name a0poster +category Package +revision 7340 +shortdesc Support for designing posters on large paper. +longdesc Provides fonts in sizes of 12pt up to 107pt and also makes sure +longdesc that in math formulas the symbols appear in the right size. Can +longdesc also create a PostScript header file for dvips which ensures +longdesc that the poster will be printed in the right size. Supported +longdesc sizes are DIN A0, DIN A1, DIN A2 and DIN A3. +docfiles size=47 + texmf-dist/doc/latex/a0poster/a0.pdf details="Package documentation (German)" language="de" + texmf-dist/doc/latex/a0poster/a0.tex + texmf-dist/doc/latex/a0poster/a0_eng.pdf details="Package documentation (English)" language="en" + texmf-dist/doc/latex/a0poster/a0_eng.tex +runfiles size=4 + texmf-dist/tex/latex/a0poster/a0poster.cls + texmf-dist/tex/latex/a0poster/a0size.sty +catalogue-version 1.22b +catalogue-date 2006-11-28 22:38:04 +0100 +catalogue-ctan /macros/latex/contrib/a0poster +catalogue-license lppl +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] + \frametitle{The origin of this \texttt{a0poster.tlpobj}} + \begin{lstlisting}[basicstyle=\ttfamily\small,title={a0poster.tlpsrc},label=a0poster.tlpsrc] +name a0poster +category Package +\end{lstlisting} + \begin{itemize} + \item minimal input file with static data + \item rest is generated from actual svn repository (revision, size) + \item enriched with information from the \TeX\ Catalogue + (catalogue-*, specification of the documentation files) + \item tagged documentation files (details, language), information + again from the Catalogue + \end{itemize} +\end{frame} + +\begin{frame}[plain,fragile] + \frametitle{The single packages: \tlpobj\ by example II} + \begin{lstlisting}[basicstyle=\ttfamily\tiny,title={bin-bibtex8 and friends},label=bibtex8] +name bin-bibtex8 +category TLCore +revision 7340 +depend bin-bibtex8.ARCH +docfiles size=15 + texmf/doc/bibtex8/00readme.txt + texmf/doc/bibtex8/HISTORY + texmf/doc/bibtex8/csfile.txt + texmf/doc/bibtex8/file_id.diz +runfiles size=10 + texmf-dist/bibtex/csf/base/88592pl.csf + texmf-dist/bibtex/csf/base/cp1250pl.csf + texmf-dist/bibtex/csf/base/cp852pl.csf + texmf-dist/bibtex/csf/base/iso8859-7.csf + +name bin-bibtex8.alpha-linux +category TLCore +revision 7340 +shortdesc binary files of bin-bibtex8 for alpha-linux +binfiles arch=alpha-linux size=62 + bin/alpha-linux/bibtex8 + +... +name bin-bibtex8.win32 +category TLCore +revision 7340 +shortdesc binary files of bin-bibtex8 for win32 +binfiles arch=win32 size=25 + bin/win32/bibtex8.exe +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] + \frametitle{The origin of the above \texttt{bin-bibtex8}} + \begin{lstlisting}[basicstyle=\ttfamily\small,title={bin-bibtex8.tlpsrc},label=bin-dvipsk.tlpsrc] +name bin-bibtex8 +category TLCore +runpattern d texmf-dist/bibtex/csf/base +docpattern f texmf/doc/bibtex8/* +binpattern f bin/${ARCH}/bibtex8 +\end{lstlisting} % for stupid emacs: $ + \begin{itemize} + \item various patterns for capturing files + \item tricks to capture binaries on unix and windows + \item separate objects for the binary files of the package + \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|. + \end{description} +\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 |!|, and |TYPE PAT| can be: + \begin{description} + \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|\\ % for stupid emacs $ + 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}[plain,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 (actual list is specified in a special + \tlpsrc-file): + \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{block}{arch expansion} + In case the string \verb+${ARCH}+ occurs in one |binpattern| it is + automatically expanded to the respective architecture. + \end{block} + + \begin{block}{bat/exe/dll/texlua for win32} + For |binpatterns| of the form |f bin/win32/foobar| files + |foobar.bat|, |foobar.dll|, |foobar.exe|, and |foobar.texlua| are + also matched. + \end{block} +\end{frame} + +\begin{frame} + \frametitle{Effects of auto generation and tricks} + + total number of tlpsrc files: 1719 + + total number of tlpsrc files with patterns: 157 + + number of bin- and hyphen- tlpsrc files with patterns: 80 + + number of `normal' packages with patterns: 77 +\end{frame} + + +\begin{frame}[plain,fragile] + \frametitle{Allowed fields for \tlpobj} + \begin{itemize} + \item name: identifies the package + \item category: one of (currently) |Collection|, |Scheme|, |TLCore|, + |Documentation|, |Package| + \item shortdesc, longdesc: description of the package + \item depend: |Name| (multiple entries possible) + \item execute: activating maps, formats, hyphenation patterns + \item runfiles, docfiles, srcfiles, binfiles\\ + 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} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Perl programming \textsc{api}} + Important for `users' or integrators + \begin{description} + \item[TeXLive::TLPOBJ] for \tlpobj\ files, basic + functionality like read, write, and member access and change + functions, etc. + \item[TeXLive::TLPDB] access to the \tl\ database. + \item[TeXLive::TLPostInstall] collects post installation actions + \end{description} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Perl programming \textsc{api} \acro{II}} + Important for `us' as developer: + \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 reade, write, etc + \item[TeXLive::TLUtils] some handy functions + \item[TeXLive::TLMedia] abstracts an arbitrary installation media + \end{description} +\end{frame} + +\begin{frame} + \frametitle{Other (planned/wished) \textsc{api}s} + Are they necessary/useful? Maybe calling the Perl code \ldots? + \begin{description} + \item[texlua] next on the list to be done, would really help us a lot + \item[python] minimal code present (by Jim Hefferon) + \item[C] some code present, was a \textsc{GSoC} project, but no slot + available (code by Jjgod Jiang) + \item[bash] maybe, some code present (by the author) + \item[\ldots] no idea what else \ldots + \end{description} +\end{frame} + +\begin{frame} + \frametitle{Documentation} + \begin{itemize} + \item all modules contain a full documentation in pod format\bigit + \item additional text \textsc{api} document\bigit + \item article in Ars\TeX nica, 2007:4, 69--73, and in the + proceedings of the Bacho\TeX~2008. + \end{itemize} +\end{frame} + + +\subsection{Internals of the \tlpdb, config options} + +\begin{frame} + \frametitle{Some special packages} + Some packages do not relate to actual files but are used to save + options and configurations into the database by putting them into a + depend line: \texttt{00texlive.config}, + \texttt{00texlive-installation.config}, + \texttt{00texlive.core}. + + Values are stored in these packages as dependencies. + + All packages starting with \texttt{00texlive} are considered virtual + packages in the sense that no containers are generated and these + packages are never split into .src and .doc sub-packages in the + tlpdb. +\end{frame} + +\begin{frame} + \frametitle{\texttt{00texlive.config}} + This package contains configuration options for the \tl\ archive: + \begin{itemize} + \item \texttt{container\_split\_\{doc,src\}\_files}\\ + documentation and source files are split into separate containers + (.tar.lzma) during container build time. Note that this has + \emph{no} effect on the appearance within the texlive.tlpdb. It is + only on container level. + \item \texttt{container\_format/XXXXX}\\ + specifies the format, currently allowed is only \texttt{lzma}, which + generates .tar.lzma files. zip can be supported. + \item \texttt{release/NNNN}\\ + specifies the release number as used in the installer + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{\texttt{00texlive-installation.config}} + This package serves two purposes: + \begin{itemize} + \item at installation time the present values are taken as default for + the installer + \item on an installed system it serves as a configuration file. + We have to remember these settings for additional package + installation, removal, etc. + \end{itemize} + The value of \texttt{\_\_MASTER\_\_} for the location field tells the + installer to use the present directory itself. For example, + the \acro{DVD} can be mounted anywhere and we want the installer to work. +\end{frame} + +\begin{frame}[fragile] + \frametitle{Example \texttt{00texlive-installation.config}} + \begin{lstlisting}[basicstyle=\ttfamily\small] +name 00texlive-installation.config +category TLCore +depend platform:x86_64-linux +depend location:/var/www/norbert/tlnet/2008 +depend opt_paper:a4 +depend opt_create_formats:0 +depend opt_create_symlinks:0 +depend opt_sys_bin:/usr/local/bin +depend opt_sys_info:/usr/local/info +depend opt_sys_man:/usr/local/man +depend opt_install_docfiles:1 +depend opt_install_srcfiles:0 +depend available_architectures:x86_64-linux win32 +\end{lstlisting} +\end{frame} + + +\begin{frame} + \frametitle{\texttt{00texlive.core}} + actually contains files, but those are + never installed and this package is only here to collect files + which are not contained in any package, thus making the coverage + check squeak +\end{frame} + +% \begin{frame} +% \frametitle{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} +% \end{frame} + +\section{Closing} + + +\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} +\end{frame} + +\begin{frame} + \begin{center} + {\Large Thanks} + + \bigskip + Karl Berry\\ + {\small for great enthusiasm and perpetual + support (and critical voices)} + + \pause + \bigskip + \acro{TUG}\\% and \acro{DANTE}\\ + {\small for financial support when my laptop broke} + + \pause + \bigskip + Your Attention + \end{center} +\end{frame} + + +\end{document} diff --git a/Master/tlpkg/doc/articles/cstug08/dviout.png b/Master/tlpkg/doc/articles/cstug08/dviout.png Binary files differnew file mode 100644 index 00000000000..83c2cd3ff88 --- /dev/null +++ b/Master/tlpkg/doc/articles/cstug08/dviout.png diff --git a/Master/tlpkg/doc/articles/cstug08/gui-collections.png b/Master/tlpkg/doc/articles/cstug08/gui-collections.png Binary files differnew file mode 100644 index 00000000000..c542adddefc --- /dev/null +++ b/Master/tlpkg/doc/articles/cstug08/gui-collections.png diff --git a/Master/tlpkg/doc/articles/cstug08/gui-installer.png b/Master/tlpkg/doc/articles/cstug08/gui-installer.png Binary files differnew file mode 100644 index 00000000000..81bfa5a3ad5 --- /dev/null +++ b/Master/tlpkg/doc/articles/cstug08/gui-installer.png diff --git a/Master/tlpkg/doc/articles/cstug08/gui-lang.png b/Master/tlpkg/doc/articles/cstug08/gui-lang.png Binary files differnew file mode 100644 index 00000000000..1d1cc2ac506 --- /dev/null +++ b/Master/tlpkg/doc/articles/cstug08/gui-lang.png diff --git a/Master/tlpkg/doc/articles/cstug08/gui-scheme.png b/Master/tlpkg/doc/articles/cstug08/gui-scheme.png Binary files differnew file mode 100644 index 00000000000..007f2910792 --- /dev/null +++ b/Master/tlpkg/doc/articles/cstug08/gui-scheme.png diff --git a/Master/tlpkg/doc/articles/cstug08/gui-systems.png b/Master/tlpkg/doc/articles/cstug08/gui-systems.png Binary files differnew file mode 100644 index 00000000000..24bfaada82c --- /dev/null +++ b/Master/tlpkg/doc/articles/cstug08/gui-systems.png diff --git a/Master/tlpkg/doc/articles/cstug08/install-directory.png b/Master/tlpkg/doc/articles/cstug08/install-directory.png Binary files differnew file mode 100644 index 00000000000..06a1349b3c6 --- /dev/null +++ b/Master/tlpkg/doc/articles/cstug08/install-directory.png diff --git a/Master/tlpkg/doc/articles/cstug08/install-options.png b/Master/tlpkg/doc/articles/cstug08/install-options.png Binary files differnew file mode 100644 index 00000000000..becc47b1f79 --- /dev/null +++ b/Master/tlpkg/doc/articles/cstug08/install-options.png diff --git a/Master/tlpkg/doc/articles/cstug08/install08text-crop.pdf b/Master/tlpkg/doc/articles/cstug08/install08text-crop.pdf Binary files differnew file mode 100644 index 00000000000..e6044fcd435 --- /dev/null +++ b/Master/tlpkg/doc/articles/cstug08/install08text-crop.pdf diff --git a/Master/tlpkg/doc/articles/cstug08/psview.png b/Master/tlpkg/doc/articles/cstug08/psview.png Binary files differnew file mode 100644 index 00000000000..8322bdda693 --- /dev/null +++ b/Master/tlpkg/doc/articles/cstug08/psview.png diff --git a/Master/tlpkg/doc/articles/cstug08/rahtz.png b/Master/tlpkg/doc/articles/cstug08/rahtz.png Binary files differnew file mode 100644 index 00000000000..78c067e704e --- /dev/null +++ b/Master/tlpkg/doc/articles/cstug08/rahtz.png diff --git a/Master/tlpkg/doc/articles/cstug08/start_impressive.sh b/Master/tlpkg/doc/articles/cstug08/start_impressive.sh new file mode 100644 index 00000000000..ee8775bee15 --- /dev/null +++ b/Master/tlpkg/doc/articles/cstug08/start_impressive.sh @@ -0,0 +1,4 @@ + + +impressive -A 16:9 -c memory -d 1h20 cstug08.pdf + diff --git a/Master/tlpkg/doc/articles/cstug08/talk-bacho08.tex b/Master/tlpkg/doc/articles/cstug08/talk-bacho08.tex new file mode 100644 index 00000000000..8ff80e1e270 --- /dev/null +++ b/Master/tlpkg/doc/articles/cstug08/talk-bacho08.tex @@ -0,0 +1,493 @@ +\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{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 Bachotek~2008} + \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{Bachotek~2008} + +Bachotek, Poland \hspace{\bigskipamount} 30~April 2008} + +\begin{document} + +\frame{\titlepage} + + +\begin{frame} + \frametitle{The \tl\ distribution} + + \begin{itemize} + \item includes all the free stuff from \textsc{ctan} + \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 central \texttt{texlive.tlpdb}} + One installation or media is now completely described by one file, + the \TeX~Live Database: + \begin{itemize} + \item simple text file -- easily parseable + \item revision number for the single packages + \item generated from static content (the tlpsrc files) + \item enriched with information from the \TeX~Catalogue + \item format documented in detail (\textsc{pod} documentation in the + respective perl module) + \end{itemize} +\end{frame} + +\begin{frame}[fragile] + \frametitle{How does \texttt{texlive.tlpdb} look like} + \begin{lstlisting}[title={texlive.tlpdb}] +name abbr +... + +name memoir +... + +\end{lstlisting} + \begin{itemize} + \item sequence of \texttt{key value} pairs + \item separated by an empty line (or more) + \item one group per package + \item some `meta'-packages for configuration options and special + purpose packages + \end{itemize} +\end{frame} + +\begin{frame}[fragile] + \frametitle{The single package: \tlpobj\ by example I} + \begin{lstlisting}[basicstyle=\ttfamily\tiny,title={a0poster.tlpobj},label=a0poster] +name a0poster +category Package +revision 7340 +shortdesc Support for designing posters on large paper. +longdesc Provides fonts in sizes of 12pt up to 107pt and also makes sure +longdesc that in math formulas the symbols appear in the right size. Can +longdesc also create a PostScript header file for dvips which ensures +longdesc that the poster will be printed in the right size. Supported +longdesc sizes are DIN A0, DIN A1, DIN A2 and DIN A3. +docfiles size=47 + texmf-dist/doc/latex/a0poster/a0.pdf details="Package documentation (German)" language="de" + texmf-dist/doc/latex/a0poster/a0.tex + texmf-dist/doc/latex/a0poster/a0_eng.pdf details="Package documentation (English)" language="en" + texmf-dist/doc/latex/a0poster/a0_eng.tex +runfiles size=4 + texmf-dist/tex/latex/a0poster/a0poster.cls + texmf-dist/tex/latex/a0poster/a0size.sty +catalogue-version 1.22b +catalogue-date 2006-11-28 22:38:04 +0100 +catalogue-ctan /macros/latex/contrib/a0poster +catalogue-license lppl +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] + \frametitle{The origin of this \texttt{a0poster.tlpobj}} + \begin{lstlisting}[basicstyle=\ttfamily\small,title={a0poster.tlpsrc},label=a0poster.tlpsrc] +name a0poster +category Package +\end{lstlisting} + \begin{itemize} + \item minimal input file with static data + \item rest is generated from actual svn repository (revision, size) + \item enriched with information from the \TeX\ Catalogue + (catalogue-*, specification of the documentation files) + \item tagged documentation files (details, language), information + again from the Catalogue + \end{itemize} +\end{frame} + +\begin{frame}[fragile] + \frametitle{The single packages: \tlpobj\ by example II} + \begin{lstlisting}[basicstyle=\ttfamily\tiny,title={bin-bibtex8 and friends},label=bibtex8] +name bin-bibtex8 +category TLCore +revision 7340 +depend bin-bibtex8.ARCH +docfiles size=15 + texmf/doc/bibtex8/00readme.txt + texmf/doc/bibtex8/HISTORY + texmf/doc/bibtex8/csfile.txt + texmf/doc/bibtex8/file_id.diz +runfiles size=10 + texmf-dist/bibtex/csf/base/88592pl.csf + texmf-dist/bibtex/csf/base/cp1250pl.csf + texmf-dist/bibtex/csf/base/cp852pl.csf + texmf-dist/bibtex/csf/base/iso8859-7.csf + +name bin-bibtex8.alpha-linux +category TLCore +revision 7340 +shortdesc binary files of bin-bibtex8 for alpha-linux +binfiles arch=alpha-linux size=62 + bin/alpha-linux/bibtex8 + +... +name bin-bibtex8.win32 +category TLCore +revision 7340 +shortdesc binary files of bin-bibtex8 for win32 +binfiles arch=win32 size=25 + bin/win32/bibtex8.exe +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] + \frametitle{The origin of the above \texttt{bin-bibtex8}} + \begin{lstlisting}[basicstyle=\ttfamily\small,title={bin-bibtex8.tlpsrc},label=bin-dvipsk.tlpsrc] +name bin-bibtex8 +category TLCore +runpattern d texmf-dist/bibtex/csf/base +docpattern f texmf/doc/bibtex8/* +binpattern f bin/${ARCH}/bibtex8 +\end{lstlisting} % for stupid emacs: $ + \begin{itemize} + \item various patterns for capturing files + \item tricks to capture binaries on unix and windows + \item separate objects for the binary files of the package + \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|\\ % for stupid emacs $ + 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/texlua for win32] + For |binpatterns| of the form |f bin/win32/foobar| files + |foobar.bat|, |foobar.dll|, |foobar.exe|, and |foobar.texlua| are + also matched. + \end{description} + \pause + \begin{block}{Effects of auto generation and tricks} + total number of tlpsrc files: 1644\\ + total number of tlpsrc files with patterns: 172\\ + number of bin- and hyphen- tlpsrc files with patterns: 123\\ + number of `normal' packages with patterns: 49 + \end{block} +\end{frame} + + +\begin{frame}[fragile] + \frametitle{Allowed fields for \tlpobj} + \begin{itemize} + \item name: identifies the package + \item category: one of (currently) |Collection|, |Scheme|, |TLCore|, + |Documentation|, |Package| + \item shortdesc, longdesc: description of the package + \item depend: |Name| (multiple entries possible) + \item execute: activating maps, formats, hyphenation patterns + \item runfiles, docfiles, srcfiles, binfiles\\ + 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} +\end{frame} + +\begin{frame} + \frametitle{Some special packages} + Some packages do not relate to actual files but are used to save + options and configurations into the database by putting them into a + depend line. + \begin{itemize} + \item \texttt{00texlive.config} general configuration (release, + src/doc container split) + \item \texttt{00texlive-installation.config} only present in a final + installation and contains the choices the admin made when doing + the installation (paper a4/letter, pre-generate formats, + installation location, \ldots) + \item \texttt{00texlive.core} actually contains files, but those are + never installed and this package is only here to collect files + which are not contained in any package, thus making the coverage + check squeak + \end{itemize} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Perl programming \textsc{api}} + Important for `users' or integrators + \begin{description} + \item[TeXLive::TLPOBJ] for \tlpobj\ files, basic + functionality like read, write, and member access and change + functions, etc. + \item[TeXLive::TLPDB] access to the \tl\ database. + \item[TeXLive::TLPostInstall] collects post installation actions + \end{description} + + \pause + Important for `us' as developer: + \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 reade, write, etc + \item[TeXLive::TLUtils] some handy functions + \item[TeXLive::TLMedia] abstracts an arbitrary installation media + \end{description} +\end{frame} + +\begin{frame} + \frametitle{Other (planned/wished) \textsc{api}s} + \begin{description} + \item[texlua] next on the list to be done, would really help us a lot + \item[python] minimal code present (by Jim Hefferon) + \item[C] some code present, was a \textsc{GSoC} project, but no slot + available (code by Jjgod Jiang) + \item[bash] maybe, some code present (by the author) + \item[\ldots] no idea what else \ldots + \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 article in Ars\TeX nica, 2007:4, 69--73, and in proceedings of + this conference (hopefully) + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{What to do with this stuff} + \begin{itemize} + \item installer: more or less done, see other talk + \item distribution inclusion: will hopefully work well + \item texdoctk++: tagged documentation files could be used to write + a better texdoctk, but depends on the information of the authors + in the \TeX~Catalogue + \item `\TeX\ Live Manager' \texttt{tlmgr} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{\TeX\ Live Manager \texttt{tlmgr}} + New program collection several scripts under one hood, currently + supports: + \begin{itemize} + \item installation of additional packages or collections, with or + without automatic dependency installation + \item same with removal + \item update all packages to the newest versions available + \item paper configuration like texconfig, but also for Windows + \item listing of available and installed architectures, and adding + new architectures to the installation + \item searching the installed and all available packages + \item list all schemes, collections, packages + \item setting some default values like the installation location + \item regenerate fmtutil.cnf, language.dat, and updmap.cfg from the + information stored in the database and local additions + \item uninstall the whole installation + \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} +\end{frame} +\end{document} diff --git a/Master/tlpkg/doc/articles/cstug08/talk-guit2008.tex b/Master/tlpkg/doc/articles/cstug08/talk-guit2008.tex new file mode 100644 index 00000000000..b3e95a7ae52 --- /dev/null +++ b/Master/tlpkg/doc/articles/cstug08/talk-guit2008.tex @@ -0,0 +1,311 @@ +\documentclass{beamer} +\usefonttheme{serif} +\usefonttheme{professionalfonts} +\usepackage[latin1]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{hhline,bm,xspace,url} +\usepackage[expert]{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{\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} +\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}} +\newcommand{\tlmgr}{\TeX~Live Manager} +\newcommand{\XeTeX}{Xe\TeX} + +\def\bigit{\\[\bigskipamount]} +\def\medit{\\[\medskipamount]} + +\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~2008 and the \tl~Manager -- {\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~2008 and the \tl~Manager} +\author{Norbert Preining} +\institute{Vienna University of Technology, Austria} +\date{\textsc{{\normalfont\guitmeeting*}~2008} + +Pisa, Italia \hspace{\bigskipamount} 18~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 + \end{itemize} + + \pause + \cred{\huge STOP} + + \medskip + \pause + That was last year's talk \ldots +\end{frame} + + +\begin{frame} + \frametitle{The new installer} + \begin{itemize} + \item Installation from the Internet\\ + \uncover<2-2>{or from a rsync of the archive, or from the svn + checkout, (or from an installation)} + \item Text and \acro{GUI} mode\\ + \uncover<3-3>{text mode emulates former shell installer, also in + \acro{W32}, \acro{GUI} for all platforms} + \item Windows == Unix (\emph{cum grano salis})\\ + \uncover<4-4>{text and \acro{GUI} mode, -sys vs. user mode, same + texmf.cnf file} + \end{itemize} +\end{frame} + + +\begin{frame} + \frametitle{Where to start} + \begin{itemize} + \item Go and get it at + \url{http://mirror.ctan.org/systems/texlive/tlnet/2008}\\ + ~~ + \item \Verb+install-tl-unx.tar.gz+ for Unix-ish systems\\ + ~~ + \item \Verb+install.zip+ for all systems\\ + \uncover<2-2>{supports all systems, but ships Perl for \acro{W32}} + \item \acro{W32}: double-click the \url{.bat} file\\ + \uncover<3-3>{or start it from a cmd shell for additional arguments} + \item Unix: \url{./install-tl}\\ + \uncover<4-4>{and add arguments if you need them} + \end{itemize} +\end{frame} + + +\begin{frame} + \frametitle{Arguments for the Installer} + \begin{itemize} + \item \url{-location} installation source, can be\\ + \url{/normal/path}\\ + \url{file:/some/path}\\ + \url{ftp://some.server/path}\\ + \url{http://some.server/path} + \bigit + \item \url{-gui} tries to start the \acro{GUI} installer, + \url{-no-gui} for \acro{W32} to disable the default \acro{GUI} + installer \bigit + \item \url{-lang} specifies a language code, currently supported: + en, de, fr, it, nl, pl, sl, zh\_cn, zh\_tw + \item some more: \url{-profile}, \url{-non-admin}, \ldots + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Demo Text and \acro{GUI} mode installer} + \begin{tabular}{ll} + \resizebox{0.5\columnwidth}{!}{\includegraphics{install08text-crop}} + & + \resizebox{0.5\columnwidth}{!}{\includegraphics{gui-installer.png}} + \end{tabular} +\end{frame} + +\begin{frame} + \frametitle{The \tlmgr} + Syntax: + \begin{center} + \texttt{tlmgr \alt<2>{\cred{[opt]...}}{[opt]...} \alt<3>{\cred{action}}{action} [opt]... [arg]...} + \end{center} + \only<2>{ + With first set of options: + \begin{itemize} + \item \url{-location} installation source, see above + \item \url{-gui} starts the \acro{GUI} + \item \url{-gui-lang} should be auto-detected, can be overridden + \item standard options \url{-help}, \url{-q}, \url{-v}, + \url{-version} + \end{itemize} + } + \only<3>{ + \begin{itemize} + \item general actions: search, show, list, uninstall, check, gui, + version, help\bigit + \item configuration actions: option, paper, generate, uninstall\bigit + \item package management actions: install, update, remove, backup, + restore, arch + \end{itemize} + } +\end{frame} + +\begin{frame} + \frametitle{The search (and show) action} + \begin{center} + \texttt{tlmgr [opt]... search \cred{[opt]... what}} + \end{center} + searches the \emph{locally} installed package names and descriptions + for \texttt{\cred{what}}. + + Options: + \begin{itemize} + \item \texttt{-global} also searches the remote database + \item \texttt{-file} searches for file names + \end{itemize} + \pause + \begin{center} + \texttt{tlmgr [opt]... show \cred{what}} + \end{center} + shows information on the given packages + + \pause + Demo +\end{frame} + +\begin{frame} + \frametitle{The install action} + \begin{center} + \texttt{tlmgr [opt]... install \cred{[opt]... what}} + \end{center} + installs the package \texttt{what} including all dependencies + + Options: + \begin{itemize} + \item \texttt{-no-depends} do not install dependencies + \item \texttt{-no-depends-at-all} do not even install architecture + specific sub-packages + \end{itemize} + + \pause + Demo +\end{frame} + +\begin{frame} + \frametitle{The update action} + \begin{center} + \texttt{tlmgr [opt]... update \cred{[opt]... what}} + \end{center} + installs the package \texttt{what} including all dependencies + + Options: + \begin{itemize} + \item \texttt{-list} list packages to be updated (or added) with + revisions + \item \texttt{-all} update everything + \item \texttt{-dry-run} don't actually do it + \item \texttt{-backupdir dir} saves a snapshot of the current status to + the specified directory + \item \texttt{-no-depends}, \texttt{-no-depends-at-all} as before + \end{itemize} + + \pause + Demo +\end{frame} + + +\begin{frame} + \frametitle{The \acro{GUI} of the \tlmgr} + + \begin{figure}[ht!] + \centering + \resizebox{\columnwidth}{!}{\includegraphics{tlmgrgui-update.png}} + \end{figure} + + Demo +\end{frame} + +\begin{frame} + \frametitle{What else -- Windows} + \begin{description} + \item[Perl and Ghostscript.] `hidden' copies, no interference with + full-scale distributions\bigit + \item[\texttt{fc-cache}] helps \XeTeX{} to handle fonts more + efficiently.\bigit + \item[PS\_View.] a new PostScript (and \acro{PDF} viewer + that is free software\bigit + \item[dviout] \acro{DVI} previewer + \end{description} +\end{frame} + +\begin{frame} + \frametitle{Really new -- Windows \acro{II}} + A \tlmgr\ Updater in \.exe format +\end{frame} + +\begin{frame} + \frametitle{Closing} + \begin{itemize} + \item very much work in progress, please do update your tlmgr + immediately after a new installation\bigit + \pause + \item the \acro{GUI} needs a lot of work, does not exhibit all the + functionality of the cmd line version \bigit + \pause + \item Perl programmers -- join us!\bigit + \end{itemize} +\end{frame} + +\begin{frame} + \begin{center} + {\Large Thanks} + + \bigskip + Karl Berry\\ + {\small for great enthusiasm and perpetual + support (and critical voices)} + + \pause + \bigskip + \acro{TUG} and \acro{DANTE}\\ + {\small for financial support when my laptop broke} + + \pause + \bigskip + Your Attention + \end{center} +\end{frame} +\end{document} diff --git a/Master/tlpkg/doc/articles/cstug08/texcollection2008-large.png b/Master/tlpkg/doc/articles/cstug08/texcollection2008-large.png Binary files differnew file mode 100644 index 00000000000..101aa1fb8bd --- /dev/null +++ b/Master/tlpkg/doc/articles/cstug08/texcollection2008-large.png diff --git a/Master/tlpkg/doc/articles/cstug08/texlive2008-logo-2.png b/Master/tlpkg/doc/articles/cstug08/texlive2008-logo-2.png Binary files differnew file mode 100644 index 00000000000..6e0cfddaebd --- /dev/null +++ b/Master/tlpkg/doc/articles/cstug08/texlive2008-logo-2.png diff --git a/Master/tlpkg/doc/articles/cstug08/tlmgrgui-update.png b/Master/tlpkg/doc/articles/cstug08/tlmgrgui-update.png Binary files differnew file mode 100644 index 00000000000..cc15c5cb218 --- /dev/null +++ b/Master/tlpkg/doc/articles/cstug08/tlmgrgui-update.png diff --git a/Master/tlpkg/doc/articles/cstug08/update-tlmgr-finish.png b/Master/tlpkg/doc/articles/cstug08/update-tlmgr-finish.png Binary files differnew file mode 100644 index 00000000000..b0f69621ba7 --- /dev/null +++ b/Master/tlpkg/doc/articles/cstug08/update-tlmgr-finish.png diff --git a/Master/tlpkg/doc/articles/cstug08/update-tlmgr-w32.png b/Master/tlpkg/doc/articles/cstug08/update-tlmgr-w32.png Binary files differnew file mode 100644 index 00000000000..c12a509f99f --- /dev/null +++ b/Master/tlpkg/doc/articles/cstug08/update-tlmgr-w32.png diff --git a/Master/tlpkg/doc/articles/guit07/tlinfra-guit07.pdf b/Master/tlpkg/doc/articles/guit07/tlinfra-guit07.pdf Binary files differnew file mode 100644 index 00000000000..8cc595be9ce --- /dev/null +++ b/Master/tlpkg/doc/articles/guit07/tlinfra-guit07.pdf diff --git a/Master/tlpkg/doc/articles/guit07/tlinfra-guit07.tex b/Master/tlpkg/doc/articles/guit07/tlinfra-guit07.tex new file mode 100644 index 00000000000..f613f60b388 --- /dev/null +++ b/Master/tlpkg/doc/articles/guit07/tlinfra-guit07.tex @@ -0,0 +1,595 @@ +% +% TeX Live's new infrastructure +% Norbert Preining +% Article presented on the 4th GuITmeeting, Pisa 13 October 2007 +% +% Copyright 2007 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[latin1]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{lmodern} +\usepackage[english]{babel} +\usepackage{graphicx} +\usepackage{hyperref} +\usepackage{fancyvrb} +\usepackage{url} +\usepackage{marvosym} +\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} + +%\catcode`>=\active +%\def>#1<{\texttt{#1}} +\DefineShortVerb{\|} +\begin{document} +\begin{article} +%\selectlanguage{italian}% + +\title{\tl's new infrastructure\thanks{% + Article presented on the 4th GuITmeeting, Pisa 13 October 2007}} + +\author{Norbert Preining} +\address{Vienna University of Technology\\ + Wiedner Hauptstr.\ 10\\ + 1040 Wien, Austria} +\netaddress{preining@logic.at} + +\maketitle + + +\begin{abstract} +Since the release of \tl~2007 a new infrastructure for \tl\ +distribution and management has been developed. This article presents the +reasons for this switch, the ideas behind the new infrastructure, +software developed, and ways to incorporate this new +infrastructure. We will close with a look at what new features +this new infrastructure could bring to the \TeX\ (Live) world. +\end{abstract} + +% +% does not work in normal arstexnika mode, needs standalone, I leave +% this up to the editors +%\tableofcontents + +\section{Introduction} +\label{sec:intro} + +\tl\ is an easy way to get up and running with \TeX. It provides a +comprehensive \TeX\ system with binaries for most flavors of Unix, +including GNU/Linux, and also Windows. It includes all the major +\TeX-related programs, macro packages, and fonts that are free +software, including support for many languages around the world. + +Since 1996 it tries to bring to all \TeX-users as much material +from \ctan\ as possible, packaged for `consumption', i.e., for using it +as a live system from DVD, or installing it on a variety of operating +systems/architecture combinations. + +These two requirements, incorporating as much as possible from \ctan, +and providing binaries for a wide range of OS/arch combinations, has led +to a huge number of supporting scripts, in a wide variety of programming +languages (Perl, shell, XML, C, \ldots). These scripts were (and are) +used to generate installation media, check consistency, update +important files (e.g., for the installer), incorporating packages from +\ctan, just to name a few. There have been many contributors; Sebastian +Rahtz, Fabrice Popineau, and Karl Berry are the principal authors. + +As always with overload volunteers working on big projects, not much +was documented, programming was done by trial and error (see for +example the packaging scripts of Debian, one of my own more horrible +creations). This wouldn't have been reason enough to change things +this deep in the intestines of \tl, but other illusions and dreams +have driven us to rebuild from the ground up. + +\section{A world full of TPMs} +\label{sec:tpm} + +Up to \tl~2007 everything in \tl\ was organized in \tpms, an +acronym for `\TeX\ Package Manage[r/ment]'. One \tpm\ described more +or less one package from \ctan, containing the list of included +files, title, description, license information, sometimes version +numbers, additional information necessary for incorporation +(activation of map files, hyphenation patterns, and formats). + +Maintenance of these \tpms\ was mostly done by a Perl module |Tpm.pm| +written by Fabrice Popineau, and the accompanying mystical program +|tpm-factory.pl|, a script so full of possibilities that nobody +besides Fabrice probably ever understood everything that could be done with +it. Some of the jobs of this |tpm-factory.pl| were +\begin{itemize} +\item regeneration of the \tpms, this included some magic in finding + the right files +\item creation of a new \tpm\ for a newly installed package from \ctan +\item checking the coverage, i.e., checking that every file present in + the repository is actually contained in a \tpm. +\item duplication and dependency checks +\end{itemize} + +Alas, there have been some problems with all the \tpm-business: +\begin{itemize} +\item they contained a mixture of generated (file lists) and static + information (actions to be carried out); +\item they were full of duplicate information: version, license, + descriptions were taken now and then from the \TeX\ Catalogue, but + were typically horribly out of date or otherwise wrong; +\item we had to generate so-called `lists' files (line-oriented plain + text file lists) from the \tpms\ for the installer + because the XML syntax of the \tpms\ is not practical to parse from a simple + shell script. +\end{itemize} + +\section{Aims of the new infrastructure} +\label{sec:aims} + +So around mid-2006 discussion of a new infrastructure started, but +unfortunately, due to the usual time constraints of all involved, +without much concrete outcome except many emails. At least a preliminary +catalogue of items to be improved sprang into existence: + + +\paragraph{Separation of static from generated content} + +As already mentioned, the \tpms\ contained a wild mixture of stuff from +various sources (the file itself, the \TeX\ Catalogue, the +repository). The new infrastructure should have some kind of `source' +files where {\em only} the necessary information is stored, and all other +content is added at generation time (of whatever). Naturally that +could have been done on top of the \tpms, too, but starting from +scratch seemed to be a better option. + +\paragraph{Getting rid of lists files} + +Using the \tpms\ and some XSLT processing, the lists files were generated +before release. These lists files (one for each package, about 2000 in all) +must be read by the installer from the DVD, which caused a lot of +headache and slow installations. +%Furthermore, these list files often were forgotten, thus out of date. +%(during development, but not at the end! i hope :) --karl) + +The sole reason for the existence of these lists files was the fact +that the installer, written in shell, couldn't parse the XML \tpms, +since XML parsing programs cannot be assumed to be present at all +installations. The new infrastructure should be based on some format +that is easily parseable using stuff normally already present, or at +least necessary for \tl\ anyway. + +\paragraph{Single package updates via the web} + +Some \TeX\ distributions, notably MiKTeX, already support single package +updates over the Internet. +\tl, as big and nice as it is, still lacks this lovely feature. Of course +it was put high on the priority list to allow for single package +updates. + +\paragraph{Better documentation} + +Last, but not least, we hoped that by rewritting the infrastructure +and documenting it on the way we could provide a more stable foundation +for more development and improvement, thus attracting more +contributors. Furthermore, since te\TeX\ development has been stopped, +\tl\ is taking the place as the \TeX\ system of choice in many +GNU/Linux and other free distributions, and better documentation would +only help providing those distributions with some aid for the migration. + +\section{New infrastructure -- the basics} +\label{sec:basics} + +There are three type of files: \tlpsrc, \tlpobj, \tlpdb. The +format of these files are very similar to Debian's Package files: a +simple list of +\begin{center} + |key value| +\end{center} +(without leading spaces). Empty lines at the beginning and end of a +\tlpsrc\ or \tlpobj\ file are ignored. Also lines starting with \#\ are +ignored (to allow for comments). Some special cases apply for \tlpobj\ +files and the \tlpdb\ file, see below. + +\subsection{\tlpsrc\ file format} +\label{sec:tlpsrc} + +The possible keys and their respective interpretation for the \tlpsrc\ +files are: +\begin{description} +\item[name] identifies the package, |value| must consist only of + \verb+[-_a-zA-Z0-9]+. + +\item[category] + identifies the category into which this package belongs. Possible + categories are |Collection|, |Scheme|, |TLCore|, |Documentation|, + |Package|. There are no particular checks as to whether a + |tlpsrc| file called |collection-something| actually belongs to the + category |Collection|. Most packages will fall into the |Package| + category. These categories were inherited from the \tpm\ world and + may be modified at some point; for now, they suffice. + +\item[catalogue] + identifies the name under which this package can be found in the \TeX\ + Catalogue. If not present the name of the packages is taken as the + Catalogue entry. + +\item[shortdesc] + gives a one line description of the package. Susequent entries will + overwrite the former ones. In \tl\ only used for collections and + schemes. + +\item[longdesc] + gives a long description of the package. Susequent entries are added + up to a long text. In \tl\ only used for collections and + schemes. + +\item[depend] + gives the list of dependencies of the package in the form + \begin{center} + |Category/Name| + \end{center} + for |value|. All the depend lines contribute to the dependencies of + the package. + +\item[execute] + gives a free form entry of install time jobs to be + executed. Currently the following values are understood by + the installers: + \begin{itemize} + \item |execute addMap font.map|\\ + enables the font map file |font.map| in the |updmap.cfg| file. + \item |execute addMixedMap font.map|\\ + enables the font map file |font.map| for Mixed mode in the + |updmap.cfg| file. By the way, + the purpose of MixedMap is to help users with printers that render + the Type~1 versions of the fonts worse than the (mode-tuned) + bitmap-based Type~3 fonts. The entries from MixedMap are not + added to psfonts\_pk.map; that's the only difference. It's used for + fonts which have both Metafont and (typically) autotraced Type~1 + instantations. + + \item |execute BuildLanguageDat NN|\\ + activates all the hyphenation patterns found in + \path{Master/texmf/tex/generic/config/language.NN.dat} in the + generated |language.dat| file. + \item |execute BuildFormat FMTCFG|\\ + activates all the formats present in + \path{Master/texmf/fmtutil/format.FMTCFG.cnf} + in the generated |fmtutil.cnf| file. + \end{itemize} + +{ +\UndefineShortVerb{\|} +\item[(src|run|doc|bin)pattern pattern] + adds a pattern (see below) to the respective list of patterns. +} + +\end{description} + +\subsubsection{Patterns} +\label{sec:patterns} + +To automatically generate the file lists in \tlpobjs\ a specific +pattern language was developed. Patterns can include or exclude files +or whole sub-directories into the file list of a \tlpobj. Patterns are +of the form +\begin{center} + |[PREFIX]TYPE PAT| +\end{center} +where |PREFIX| can be |+|, |!+|, or |!|, and |TYPE| one of the letters +|t|, |f|, |d|, |r|. An initial |+| for the pattern indicates that the +automatically generated pattern should not be cleared (see below), +while the |!| indicates that the matching files should be excluded. + +The meaning of the various pattern types is +\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!). +\item[d path] + includes all the files in and below the directory specified as + |path|. +\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} + i.e., all words but the last form the prefix of the path, then + there can be an arbitrary nesting of directories, followed by + |wordL| as another directory. +\item[r regexp] + includes all files matching the Perl regexp \verb+/^regexp$/+ +\end{description} + + +\subsubsection{Autogenerated patterns} +\label{sec:autogenpat} + +In the case that one of the pattern sections is empty or \emph{all} +the provided patterns have the prefix |+| (e.g., |+f ...|), then the +following patterns are \emph{automatically} added at expansion time +(but never written to the textual representation): + +\begin{itemize} +\item for runpatterns of category |Package| + \begin{center} + |t texmf-dist topdir name| + \end{center} + where |topdir| is one of: bibtex, context, dvips, fonts, makeindex, + metafont, metapost, mft, omega, scripts, tex, vtex. |name| refers to + the name of the package as given by the |name| directive. + + For other categories \emph{no} patterns are automatically added to + the list of runpatterns. +\item for docpattern of category |Package| + \begin{center} + |t texmf-dist doc name| + \end{center} + and for docpattern of category |Documentation| + \begin{center} + |t texmf-doc doc name| + \end{center} +\item for srcpattern of category |Package| + \begin{center} + |t texmf-dist source name| + \end{center} + and for srcpattern of category |Documentation| + \begin{center} + |t texmf-doc source name| + \end{center} +\end{itemize} +|binpatterns| are never automatically added. + +In addition some magic tricks have been added to make writing of +|binpatterns| easier: +\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| (i.e., also for a + binpattern of the form \verb+f bin/${ARCH}/foobar+) files + |foobar.bat|, |foobar.dll|, and |foobar.exe| are also matched. +\end{description} +The above two properties allows to capture the binaries for all +architectures in one binpattern: +\begin{center} + \verb+binpattern f bin/${ARCH}/dvips+ +\end{center} +will include |bin/win32/dvips.exe| in the runfiles when arch=win32. + +Note that the bat/exe expansion \emph{only} works for patterns of the +|f|-type. + +\subsection{\tlpobj\ file format} +\label{sec:tlpobj} + +These files are structurally similar to \tlpsrc\ files; the +only difference is that the |*pattern| keys are not allowed, their +place being taken by |*files| keys having a peculiar syntax (see +below). Furthermore, an additional key |revision| and all keys +matching |catalogue-*| are allowed. +The |catalogue-*| keys specify information simply copied from the \TeX\ +Catalogue. We'll discuss the others below. + +\subsubsection{The \texttt{revision} entry} + +The |revision| key is {\em not} related to the package's version as +specified by the author. Those versions are far too random, hard to +extract, and sometimes not even present, to be a reliable basis for a +packaging system. Instead, we look at all the package's files in the +\tl\ source repository, which is currently Subversion, and use the +maximum version number found there. Since Subversion uses simple +integers for version numbers, this is simple to use in programs, and +just as important, this whole process of finding the version number can +be reliably automated. + +\subsubsection{The \texttt{*files} entries} +\label{sec:keyfiles} + +While the |tlpsrc| files specify the files to be included using the +patterns, the |tlpobj| files contain the already expanded file list. +All the `files' keys have in common that they are followed by a list of +files (and possibly additional tags) indented by exactly one (1) space. They +differ only in the first line itself (described below). + + + +\begin{description} +\item[srcfiles, runfiles] each of these lines is (or better should be) + tagged with |size=NNNN| where |NNNN| is the sum of sizes of the single + files (currently in bytes), e.g., + \begin{center} + |srcfiles size=NNNNNN| + \end{center} +\item[docfiles] The docfiles line itself is similar to the |srcfiles| + and |runfiles| lines above: + \begin{center} + |docfiles size=NNNNNN| + \end{center} + But the lines listing the files are allowed to have additional tags + |details| and |language|: + \begin{center} + |file detail="foo bar" language="en"| + \end{center} + For an example see listing~\ref{achemso}. The reason to add these + tags is the hope that someone will write a nice replacement for + \path{texdoctk}. Note that these tags' source is the \TeX\ Catalogue, + and are in no way obligatory. +\item[binfiles] Since |binfiles| are different for the different + architectures, one \tlpobj\ file can contain |binfiles| lines for + different architectures. The architecture is specified on the + |binfiles| lines using the |arch=XXX| tag. Thus, |binfiles| lines look like + \begin{center} + |binfiles arch=XXXX size=NNNNN| + \end{center} + A more complete example taken from |bin-dvipsk.tlpobj| can be seen + in listing~\ref{dvipsk}. +\end{description} + +\begin{lstlisting}[caption={Excerpt from achemso.tlpobj},label=achemso] +... +docfiles size=135842 + texmf-dist/doc/latex/achemso/README details="Package Readme" language="de" + texmf-dist/doc/latex/achemso/achemso.pdf details="Package documentation" language="de" + ... +\end{lstlisting} + +\begin{lstlisting}[caption={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 + bin/win32/dvips.exe + bin/win32/pkfix.exe +... +\end{lstlisting} + +\subsection{\tlpdb\ file format} +\label{sec:tlpdb} + +A \tlpdb\ file will describe the status of an installation, that is it +will contain all the installed packages' \tlpobj\ files. Thus, +the format of a \tlpdb\ file is quite simple. It is the concatenation +of \tlpobjs\ with (at least) one empty line between different +\tlpobjs. + + +\section{Programming APIs} + +Wrapping these file formats into a programming API represents +the actual work of realizing the new infrastructure. On the way we had +to create not only modules for accessing the content of the above +files in some object-oriented way, we also created some additional +modules for interfacing to the Subversion repository and the \TeX\ +Catalogue. + +Currently, the following modules are available in the \tl\ subversion +repository: +\begin{description} +\item[TeXLive::TLTREE] an object that exhibits the properties of the + subversion repository in some structured form. In principle it is + the scooping up of |svn status -v| output with post-processing + for easier and faster searches. +\item[TeXLive::TeXCatalogue] a very simple interface to the \TeX\ + Catalogue, barely providing minimal information. Will be used for + enriching the final database. +\item[TeXLive::TLPSRC] provides access to \tlpsrc\ files, basic + functionality like reading in, writing out, and member access + functions. In addition, it allows to generate, or expand, a |TLPSRC| + object to a |TLPOBJ| object using an instance of |TLTREE|. That is, + it takes the patterns specified in the \tlpsrc, and tries to find + all files matching these patterns. After this it recomputes the size + and returns a |TLPOBJ| object. +\item[TeXLive::TLPOBJ] provides access to \tlpobj\ files, and entries + stored in a a |TLPDB| object. As with the \tlpsrc, basic + functionalities are exported, and also a function to create a zip + file for the |TLPOBJ| (which later should be used for web updates or + building the `inst' CD), + and together with an instance of a |TeXCatalogue| object some + information can be transferred from the \TeX\ Catalogue to the + |TLPOBJ| object. +\item[TeXLive::TLPDB] provides access to the \tl\ database. These + files will serve the central purpose of describing the current + status of various media, like an installation on a user computer, or + the distribution. Comparing these status descriptions, update + programs can deduce what packages should be updated. +\item[TeXLive::TLPUtils] exports some handy functions used in all the + other modules. +\end{description} + +The full API documentation is provided in |pod| format within the perl +modules. A Perl API document +is available in the \tl\ subversion repository, too. + +In addition to the Perl API a start at a shell (sh, bash, etc.)\ API and +implementation has been created, but it presently lacks several key features, +and is not up to date. Jim Hef{}feron has contributed a start at a Python API. +However, we assume that on all computers Perl will be +available or will be installed during installation. + +\section{Integration into current \tl\ development} + +Around these modules several day-in-day-out tasks of the \tl\ +developers have been rewritten using the new infrastructure, the most +important one being the script |ctan2tl|. This is the script responsible for +transferring a package from \ctan\ into the right places in +the \tl\ repository, and preparing it for users. + +Other things already converted are automatic update of the +|texlive.tlpdb|, the file containing the |TLPDB|. + +On the other hand not everything has been done, the biggest piece for +sure is the rewrite of the installer. The old installer, relying on +the lists files we wanted to get rid of, is still the only one we +have. Furtunately we can generate lists files from the +|texlive.tlpdb|, but in the not-so-long run, meaning hopefully for +\tl~2008, we want to have a new installer. + +Other things still missing are coverage and duplication checks, but +those are quite easy to do using the Unix command world (|grep|, +|sort|, and |uniq| being the magic incantations). + +\section{Closing} +\label{sec:closing} + +Although we are quite confident that the new infrastructure will work +well, only the reality of the next release will prove us right or +wrong. Many of the key features of the new infrastructure have been +designed with the \tpm-system in mind, and some `features' carried +over will probably proven superfluous. Nothing with the current +infrastructure is written in stone, and we are open for proposals and +improvements, keeping in mind that releasing \tl\ should not be made +more difficult. + +That said, we invite contributors and everyone interested to contact +us at \url{tex-live@tug.org}, or take a look at the following +resources: +\begin{itemize} +\item \path{http://www.tug.org/texlive} -- the main entry point, with + links to developers' resources, documentation +\item \path{http://www.tug.org/svn/texlive/trunk/} -- web view onto the + subversion repository; +\item \path{svn://tug.org/texlive/trunk} -- svn repository, anonymous + access, take care when you checking out the repository, it needs + several Gigabyte of disk space; +\item \path{http://www.tug.org/texlive/pkgupdate.html} -- an + explanation how updates from \ctan\ to \tl\ are done. +\end{itemize} + +Finally, I want to thank all the contributors to \tl, there are too +many to mention. In the course of developing this infrastructure the +discussions with Karl Berry, Pawe\l{} Jackowski, Reinhard Kotucha, +Siep Kroonenberg, and Jerzy B. Ludwichowski were very helpful. + +%\bibliographystyle{arstexnica} +%\bibliography{atsample} + +\end{article} + +\end{document} + + diff --git a/Master/tlpkg/doc/articles/guit08/Makefile b/Master/tlpkg/doc/articles/guit08/Makefile new file mode 100644 index 00000000000..d6fb4a7ab7c --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/Makefile @@ -0,0 +1,61 @@ + +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) + +TEXSRCDTK=tlmgr-dtk.tex \ + tlmgr-dtk.ltx \ + install08text-crop.pdf \ + $(PNGS) + +first: tlmgr-article.pdf + +tlmgr-dtk.pdf: $(TEXSRCDTK) tlmgr-dtk.bbl + pdflatex tlmgr-dtk.ltx + pdflatex tlmgr-dtk.ltx + pdflatex tlmgr-dtk.ltx + +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-dtk.bbl: tlmgr-dtk.aux tlmgr-article.bib + bibtex tlmgr-dtk + +tlmgr-article.aux: $(TEXSRC) + pdflatex tlmgr-article + +tlmgr-dtk.aux: $(TEXSRCDTK) + pdflatex tlmgr-dtk.ltx + +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/articles/guit08/dviout.png b/Master/tlpkg/doc/articles/guit08/dviout.png Binary files differnew file mode 100644 index 00000000000..83c2cd3ff88 --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/dviout.png diff --git a/Master/tlpkg/doc/articles/guit08/gui-collections.png b/Master/tlpkg/doc/articles/guit08/gui-collections.png Binary files differnew file mode 100644 index 00000000000..c542adddefc --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/gui-collections.png diff --git a/Master/tlpkg/doc/articles/guit08/gui-installer-de.png b/Master/tlpkg/doc/articles/guit08/gui-installer-de.png Binary files differnew file mode 100644 index 00000000000..59df9684938 --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/gui-installer-de.png diff --git a/Master/tlpkg/doc/articles/guit08/gui-installer.png b/Master/tlpkg/doc/articles/guit08/gui-installer.png Binary files differnew file mode 100644 index 00000000000..81bfa5a3ad5 --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/gui-installer.png diff --git a/Master/tlpkg/doc/articles/guit08/gui-lang.png b/Master/tlpkg/doc/articles/guit08/gui-lang.png Binary files differnew file mode 100644 index 00000000000..1d1cc2ac506 --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/gui-lang.png diff --git a/Master/tlpkg/doc/articles/guit08/gui-progress.png b/Master/tlpkg/doc/articles/guit08/gui-progress.png Binary files differnew file mode 100644 index 00000000000..a287afef3a6 --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/gui-progress.png diff --git a/Master/tlpkg/doc/articles/guit08/gui-scheme.png b/Master/tlpkg/doc/articles/guit08/gui-scheme.png Binary files differnew file mode 100644 index 00000000000..007f2910792 --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/gui-scheme.png diff --git a/Master/tlpkg/doc/articles/guit08/gui-systems.png b/Master/tlpkg/doc/articles/guit08/gui-systems.png Binary files differnew file mode 100644 index 00000000000..24bfaada82c --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/gui-systems.png diff --git a/Master/tlpkg/doc/articles/guit08/install08text.tex b/Master/tlpkg/doc/articles/guit08/install08text.tex new file mode 100644 index 00000000000..56aa4f5c3a2 --- /dev/null +++ b/Master/tlpkg/doc/articles/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/articles/guit08/psview.png b/Master/tlpkg/doc/articles/guit08/psview.png Binary files differnew file mode 100644 index 00000000000..8322bdda693 --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/psview.png diff --git a/Master/tlpkg/doc/articles/guit08/tlmgr-article.bib b/Master/tlpkg/doc/articles/guit08/tlmgr-article.bib new file mode 100644 index 00000000000..6326853c6dd --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/tlmgr-article.bib @@ -0,0 +1,27 @@ +@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}} + +@Article{at:2007-4-069-preining, + author = {Norbert Preining}, + title = {{\TeX\ Live's} new infrastructure}, + journal = {Ars\TeX nica}, + year = 2007, + number = 4, + pages = {69-73}, + month = {Ottobre}, + language= {italian}, + issn= {1828-2350}, + url= {http://www.guit.sssup.it/arstexnica.php} +} + + +@Misc{tlmgr-manpage, + key = {tlmgr}, + title = {Online Version der tlmgr Dokumentation}, + howpublished = {\url{http://www.tug.org/texlive/doc/tlmgr.html}}} + diff --git a/Master/tlpkg/doc/articles/guit08/tlmgr-article.pdf b/Master/tlpkg/doc/articles/guit08/tlmgr-article.pdf Binary files differnew file mode 100644 index 00000000000..684f62271bc --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/tlmgr-article.pdf diff --git a/Master/tlpkg/doc/articles/guit08/tlmgr-article.tex b/Master/tlpkg/doc/articles/guit08/tlmgr-article.tex new file mode 100644 index 00000000000..25546bf5e92 --- /dev/null +++ b/Master/tlpkg/doc/articles/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} + +% +% END OF ARTICLE +% +\end{article} +\end{document} + + diff --git a/Master/tlpkg/doc/articles/guit08/tlmgr-dtk.ltx b/Master/tlpkg/doc/articles/guit08/tlmgr-dtk.ltx new file mode 100644 index 00000000000..e950a2a6301 --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/tlmgr-dtk.ltx @@ -0,0 +1,34 @@ +% +% Norbert Preining +% Article presented on the 5th GuITmeeting, Pisa 18 October 2008 +% Übersetzung für DTK +% +% Copyright 2008, 2009 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{dtk} + + +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{lmodern} +\usepackage[naustrian]{babel} +\usepackage{graphicx} +\usepackage{hyperref} +\usepackage{fancyvrb} +\usepackage{url} +\usepackage{natbib} +% marvosym is needed for RightTorque, but conflicts with \Email: +\let\EmailSave\Email +\let\Email\relax +\usepackage{marvosym} +\let\Email\EmailSave +\usepackage{listings} + +\begin{document} +\input{tlmgr-dtk} +\end{document} + + diff --git a/Master/tlpkg/doc/articles/guit08/tlmgr-dtk.pdf b/Master/tlpkg/doc/articles/guit08/tlmgr-dtk.pdf Binary files differnew file mode 100644 index 00000000000..42f7e4a991f --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/tlmgr-dtk.pdf diff --git a/Master/tlpkg/doc/articles/guit08/tlmgr-dtk.tex b/Master/tlpkg/doc/articles/guit08/tlmgr-dtk.tex new file mode 100644 index 00000000000..a235c2ee012 --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/tlmgr-dtk.tex @@ -0,0 +1,1032 @@ +% +% Norbert Preining +% Article presented on the 5th GuITmeeting, Pisa 18 October 2008 +% Übersetzung für DTK +% +% Copyright 2008, 2009 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. +% + +\newcommand{\tl}{\TeX~Live} +\title{\tl~2008 und der \TeX\ Live Manager% + \thanks{ + Dieser Artikel ist eine erweiterte und auf den neusten Stand + gebrachte Version eines ursprünglich am GuIT\ Conference 2008 in + Pisa präsentierten und in Ars\TeX nica, Issue~6 veröffentlichten + Artikels}} + +\author{Norbert Preining} +\address{Norbert}{Preining}{Technische Universität Wien\\ + %Wiedner Hauptstr.\ 10\\ + %1040 Wien, Austria +} +%\netaddress{preining@logic.at} + +\maketitle + +\lstset{frame=lines,basicstyle=\small\ttfamily,prebreak={\Righttorque}, + postbreak={\Lefttorque},columns=flexible,breaklines} +\DefineShortVerb{\|} + +\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}} + + +\begin{abstract} +Die Release von \tl~2008 vor bald einem Jahr ist die erste Ausgabe +von \tl\ die das neue Programm \tlmgr, kurz tlmgr, mitbringt. + +Der \tlmgr\ übernimmt nicht nur einige der Aufgaben von texconfig +(welches niemals für Windows verfügbar war), sondern bereichert die +\tl\ Welt um viele neue Möglichkeiten, darunter die wohl am längsten +gewünschte Fähigkeit zu laufenden Updates. + +Der vorliegende Artikel präsentiert das neue \tl\ Installationsprogramm, den +\tlmgr, und beschreibt einige andere Neuigkeiten in \tl~2008. +\end{abstract} + + +\tableofcontents + +\section*{Wichtiger Hinweis} + +Dieser Artikel beschreibt den Status des \tlmgr\ wie er im April~2009 +verteilt wird, und nicht die Version die auf \acro{DVD} vorhanden ist. +Letztere funktioniert gut für lokale Konfigurationsänderungen +(warum wir das Programm auch auslieferten), aber der Updatemechanismus +übers Internet ist nicht hinlänglich robust. Benutzer der \acro{DVD} +Version sollten zuerst den \tlmgr\ auf den neuesten Stand bringen. + +\section{Einführung} +\label{sec:intro} + +Nach mehr als einem Jahr der Entwicklung wurde \tl~2008 mit einer +völlig neuen Infrastruktur freigegeben \citep{at:2007-4-069-preining}. +Der Ausgangspunkt dieser Überarbeitung waren zuerst nur notwendige +Vereinfachungen um die Arbeit der Entwickler (etwas) einfacher und das +System aufgrund der Elimination von doppelter Informationen zu +vereinfachen. + +Die erste Änderung die für normale Benutzer sichtbar wurde war die +Vereinheitlichung des Installationsprogramms, so dass nun alle +unterstützten Plattformen nun den gleichen Installer verwenden. +Weiters erhielt das Installationsprogramm eine graphische Oberfläche +die ebenfalls einheitlich über alle Plattformen ist. Auf Unix ist die +einzige Voraussetzungen des Installationsprogramms eine Perlinstallation, +und für das graphische Frontend zusätzlich das Vorhandensein von Perl/Tk. +Auf Windows wird eine minimale Perlinstallation mit allen notwendigen +Modulen mitgeliefert, so dass keine weiteren Voraussetzungen gegeben +sind. + +Der erste Teil dieses Artikels wird einen Überblick über das +neue Installationsprogramm geben. + +Die zweite für Benutzer sichtbare Änderung ist das neue Programm \tlmgr, +oder kurz tlmgr. Es konfiguriert eine vorhandene \tl\ Installation, sowohl +was Pakete als auch was Optionen und Einstellungen angeht. Es erlaubt neben +vieler Aufgaben die ursprünglich von |texconfig| ausgeführt wurde auch die +Installation von zusätzlichen Paketen, das Update und das Entfernen von +vorhandenen Paketen, die Erstellung von Backups, die Suche nach und das +Auflisten von Paketen. + +\section{Das neue Installationsprogramm} +\label{sec:installer} + +Die Erstellung eines neuen \tl\ Installationsprogramms wurde durch das +Umschreiben der Infrastruktur bedingt \citep{at:2007-4-069-preining}. +Für den Benutzer der \tl\ installiert ergeben sich nur einige Änderungen +im Aussehen, aber dahinter stehen einige wichtige Änderungen, im speziellen: +\begin{itemize} +\item Installationen von \tl\ über das Internet wird ermöglicht. +\item Es gibt nur mehr ein (1) Installationsprogramm, das entweder im + Textmodus arbeitet und dabei das frühere Shellskript |install-tl.sh| + emuliert, oder im \acro{GUI} Modus. +\item Die Installation auf Windowssystemen ist viel näher an der Installation + auf Unix-Systemen. +\end{itemize} + +\subsection{Installation von \tl\ über das Internet} + +Wer die \tl\ \acro{DVD} verwendet kann das Installationsprogramm wie +üblich direkt von der \acro{DVD} starten. Auf Windows startet dabei +das Installationsprogramm automatisch im graphischen Modus (siehe weiter +unten), auf Unix-Systemen hingegen im Textmodus. + +Ebenfalls ist ein Installationspaket \citep{inst:package} verfügbar +das nur die notwendigen Dateien für eine Installation über das +Internet enthält. Normalerweise wird dabei automatisch ein vom +|http://mirror.ctan.org| Service ausgewählter Spiegelserver von \ctan\ +verwendet (siehe |http://tug.org/ctan.html#sites|). + +Dabei werden für die Netzwerkinstallation zwei Pakete zur Verfügung +gestellt. Von |install-tl-unx.tar.gz| unterstützt nur Unix-Systeme, +während |install-tl.zip| zusätzlich auch die notwendige Teilmenge +von Perl für Windows mitbringt. Letzteres funktioniert auf allen +unterstützten Plattformen. Der einzige Grund für die Existenz der +separaten Pakete ist die signifikant kleinere Größe des Installationspaketes +für Unix. + +Die voreingestellte Installationsquelle kann durch die Angabe der +Kommandozeilenoption |-location| beliebig geändert werden. + +\subsection{Der Textmodus des Installers} + +Wenn Sie \tl\ in den letzten Jahren installiert haben werden Sie keine +großen Änderungen im Textmodus des Installationsprogramms erkennen +((siehe Abb.~\ref{fig:text_main_menu}). Wir haben versucht so nahe wie +möglich am Installationsprogramm der vorherigen Ausgaben zu halten. +Eine neue Option kann am unteren Ende des Menüs gefunden werden: +\emph{set up for running from DVD}. Das ist woher das \emph{Live} in \tl\ +kommt: Es erstellt nur eine absolut minimale Umgebung auf dem lokalen +Computer, während alle Eingabedateien und Programme direkt von der +\acro{DVD} verbleiben. + +Wie in den vorigen Jahren ist das Installationsprogramm nur in Englisch +verfügbar, während der Graphikmodus jetzt diverse Übersetzungen mitbringt. + +\begin{figure}[htp!] + \centering + \resizebox{0.8\columnwidth}{!}{\includegraphics{install08text-crop}} + \caption{Hauptmenü des Installers im Textmodus} + \label{fig:text_main_menu} +\end{figure} + +\subsection{Der Grafikmodus des Installers} + +Der graphische Modus des Installationsprogramms hat fast die gleiche +Funktionalität wie der Textmodus, nur die Option der \emph{Live} Installation +fehlt. Der Grafikmodus ist in Perl/Tk programmiert und sollte auf allen +unterstützten Plattformen laufen (wobei auf Unix Perl/Tk installiert +sein muss). + +\begin{figure}[ht!] + \centering + \resizebox{0.8\columnwidth}{!}{\includegraphics{gui-installer-de.png}} + \caption{Hauptfenster des graphischen Installers} + \label{fig:gui_main_menu} +\end{figure} + +Abbildung~\ref{fig:gui_main_menu} zeigt das Hauptfenster, dass sehr +an den Textmodus erinnern soll. Wie im Textmodus erlaubt es die zu +installierenden Systeme zu ändern (Abb.~\ref{fig:gui_systems}), ein +Schema auszuwählen (Abb.~\ref{fig:gui_scheme}), wobei ein Schema +eine vordefiniert Auswahl an Paketgruppen ist. Weiters können +die einzelnen Paketgruppen selber bearbeitet werden, sowie die +Verfügbarkeit von Sprachpaketen und Dokumentation in diversen Sprachen +(Abb.~\ref{fig:gui_coll} und~\ref{fig:gui_lang}). Dann kann der +Installationsordner und verwandte Ordner selektiert werden und +diverse Optionen an- oder abgewählt werden. All dies sind Funktionalität +wie sie vom Installationsprogramm der letzten Jahre zur Verfügung +gestellt wurden. + +\begin{figure}[ht!] + \centering + \resizebox{0.3\columnwidth}{!}{\includegraphics{gui-systems.png}} + \caption{Auswahlfenster für Binärsysteme} + \label{fig:gui_systems} +\end{figure} + +\begin{figure}[ht!] + \centering + \resizebox{0.8\columnwidth}{!}{\includegraphics{gui-scheme.png}} + \caption{Auswahlfenster für Schemata} + \label{fig:gui_scheme} +\end{figure} + +\begin{figure}[ht!] + \centering + \resizebox{0.8\columnwidth}{!}{\includegraphics{gui-collections.png}} + \caption{Auswahlfenster für Paketgruppen} + \label{fig:gui_coll} +\end{figure} + +\begin{figure}[ht!] + \centering + \resizebox{0.8\columnwidth}{!}{\includegraphics{gui-lang.png}} + \caption{Auswahlfenster für Sprachpakete} + \label{fig:gui_lang} +\end{figure} + +Sobald die Installation gestartet wird erscheint ein Fenster in dem +der Fortschritt der zu installierenden Pakete angezeigt wird, zusammen mit +Abschätzung der Restzeit und einem Fortschrittsbalken +(Abb.~\ref{fig:gui_progress}). + +\begin{figure}[ht!] + \centering + \resizebox{0.8\columnwidth}{!}{\includegraphics{gui-progress.png}} + \caption{Fortschrittsfenster} + \label{fig:gui_progress} +\end{figure} + +Sowohl im Textmodus als auch im Graphikmodus des Installationsprogramms +wird eine Logdatei |install-tl.log| mit weiteren Informationen im +im Installationsverzeichnis erstellt. (Bei Fehlerberichten bitte diese +Datei mitschicken!) + +\subsection{Windows und Unix rücken näher} + +\tl\ 2008 unterstützt nur mehr Windows~2000 und neuere Versionen +(nicht mehr Windows~98), wodurch wir die Notwendigkeit der Spezialbehandlung +von Windows weitgehend reduzieren. + +Auf den unterstützten Windows Systemen haben Benutzer ein \emph{echtes} +Heimverzeichnis, nämlich verb+%USERPROFILE%+, das normalerweise +\verb+Dokumente und Einstellungen\+\textit{username} ist. + +Dies schlägt sich nun in der Tilde-Erweiterung von \kpse\ nieder: +\verb+~/texmf+ wird auf Windows zu \verb+%USERPROFILE%\texmf+ +erweitert, und zu \verb+$HOME/texmf+ auf Unixsystemen. + +Wie bisher unter Unix ist es nun auch unter Windows möglich zwischen +systemweiten Einstellungen und Benutzerspezifischen Einstellungen +zu unterscheiden. Weiters gibt es keinen Grund mehr für Windows +verschiedene \texttt{texmf} Bäume zu haben, oder einige Skripts +wie \texttt{fmtutil-sys} und \texttt{updmap-sys} auf Windows nicht +bereitzustellen. Schlussendlich gibt es nun auch eine einzige +\texttt{texmf.cnf} Datei für alle Plattformen. + + +% +% +% +\section{Der \tlmgr} + +Der \tlmgr\ stellt eine Vielzahl an Optionen und Befehlen zur Verfügung, von +denen alle (zum derzeitigen Zeitpunkt implementierten) hier vorgestellt +werden, einige nur sehr kurz, einige detaillierter. Dabei muss man beachten +dass die Entwicklung permanent weitergeht und neue Fähigkeiten laufend +hinzugefügt werden. + +\subsection{Die \tl\ Datenbank} + +Zu allererst ist es notwendig zu verstehen wo alle Informationen über +installierte Pakete und Optionen gespeichert werden. Dies ist die +\tl\ Datenbank, welche normalerweise in \path{ROOT/tlpkg/texlive.tlpdb} +gefunden werden kann (wobei |ROOT| der Installationsfolder ist). +Diese Datenbank -- eine einfache, jedoch strukturierte Textdatei -- +enthält die Liste der installierten Pakete, zu jedem Paket die Liste +der installierten Dateien, und sammelt zusätzlich alle +Konfigurationsoptionen wie die Installationsquelle oder die bei der +Installation angewählten Optionen. + +Die meisten der Aktionen von tlmgr laden die lokale Datenbank, und viele +Aktionen laden zusätzlich die \emph{entfernte} Datenbank, also die +von der installiert wird: Wenn Sie zum Beispiel ein Paket installieren +wollen wird die Datenbank der Installationsquelle geladen und überprüft +ob das Paket dort vorhanden ist. + +Wobei mit \emph{entfernte} Datenbank nicht unbedingt eine entfernter +Server gemeint ist. Wenn Sie von der \acro{DVD} installiert haben so +wird die Installationsquelle die \acro{DVD} sein, und tlmgr wird diese +Datenbank lande sobald es notwendig ist. + +\subsection{Allgemeine Syntax von tlmgr} + +Jeder Aufruf von tlmgr sieht wie folgt aus: +\begin{center} + \Verb+tlmgr [opt]... action [opt]... [arg]...+ +\end{center} +Die ersten Optionen vor der Aktion |action| bestimmen einige allgemeine +Einstellungen von tlmgr, während der zweite Satz von Optionen nach der +Aktion spezifisch für die Aktion sind. + +Die derzeitige Version unterstützt -- im Gegensatz zu früheren Versionen -- +die Vermischung all dieser Optionen. Damit ist es im Prinzip egal was +wo wann kommt. Dennoch werden die Optionen und Aktionen in dieser +Art präsentiert um die Darstellung zu erleichtern. + +Der erste Satz kann die folgenden Optionen enthalten: +\begin{itemize} +\item |--location| \var{loc} gibt die Installationsquelle an von der + Pakete installiert und erneuert werden. Diese Option überschreibt die + voreingestellte Installationsquelle in der \tl\ Datenbank (\acro{TLPDB}). +\item |--gui| startet die graphische Oberfläche des tlmgr. Diese + Oberfläche unterstützt nicht den vollen Funktionsumfang der Kommandozeile, + sehr wohl aber die wichtigsten und häufigsten. + Der Unterschied zwischen der |--gui| Option und der |gui| Aktion (siehe + weiter unten) ist dass wenn Sie die Option |--gui| geben und eine Aktion, + dann versucht tlmgr sofort den entsprechenden Bildschirm der graphischen + Oberfläche zu laden. +\item |--gui-lang| \var{ll} selektiert die Sprache der graphischen + Oberfläche. Normalerweise versucht tlmgr die korrekte Sprache aus + den Umgebungseinstellungen abzuleiten (unter Windows wird die + Registry befragt, unter Unix |LC_MESSAGES|). Sollte dies fehlen + erlaubt diese Option eine Sprache auszuwählen. +\item |--machine-readable| Anstelle der normalen Ausgabe die für einen + menschlichen Benutzer gedacht ist, schaltet diese Option zu einer + leichter von Programmen parsebaren Ausgabe um. Details können in der + manpage \citep{tlmgr-manpage} gefunden werden. +\item |--package-logfile| \var{file} tlmgr führt eine Logdatei für alle + Aktionen die Pakete betreffen (Installation, Entfernen, Update, etc). + Diese Logdatei ist normalerweise |TEXMFSYSVAR/web2c/tlmgr.log|, diese + Option erlaubt eine andere Datei anzugeben. +\item |--pause| lässt tlmgr vor Terminierung auf eine Eingabe des Users + warten. Dies kann auf Windows nützlich sein um das vorschnelle + Verschwinden des Kommandofensters zu verhindern. +\end{itemize} + +Weiters werden diverse Standardoptionen unterstützt: |--help| (oder +|-h|) gibt die manpage aus, |-q| unterdrückt rein informative +Ausgaben, |-v| (verbose) um den Grad der Gesprächigkeit von tlmgr, sprich +den Debuglevel, einzustellen. Mit |--version| gibt tlmgr die Version +des installierten \tl\ Systems als auch die Versionsnummer von tlmgr selbst +aus. + +\subsection{Die Aktionen} + + +Die derzeitige Liste der Aktionen ist: +|help|, |version|, |gui|, |install|, |update|, |backup|, |restore|, +|remove|, |option|, |symlinks|, |paper|, |arch|, |search|, |show|, |list|, +|check|, |uninstall|, |generate|. + +\paragraph{Die allgemeinen Aktionen} + +\begin{itemize} +\item |search [|\var{option}|...] |\var{what} Ohne zusätzliche Optionen + wird in der Liste der lokal installierten Pakete in den Paketnamen und + -beschreibungen nach |what| gesucht. Wird die Option |--global| gegeben, + so wird die entfernt Datenbank auch durchsucht (sprich auch alle nicht + installierten Pakete). Wird die Option |--file| gegeben dann werden + nicht die Paketnamen und -beschreibungen durchsucht, sondern die + installierten Dateinamen. +\item |show |\var{pkg}|...| zeigt detaillierte Informationen über die + angegebenen Pakete an. Falls alle angegebenen Pakete lokal installiert + sind wird die entfernte Datenbank nicht befragt. +\item \Verb+list [collections|schemes]+ Ohne jegliche Argumente werden alle + Pakete die bei der Installationsquelle vorhanden sind aufgelistet, wobei + bereits installierte ein Präfix von "i " erhalten. + Mit einem Argument werden entweder nur die Paketgruppen oder die Schemata + aufgelistet, je nach Argument. +\item \Verb+symlinks [add|remove]+ Fügt symbolische Verweise für die + Programme, die man pages, und die info Dokumentationen hinzu oder + entfernt sie in den in der Datenbank eingetragenen Ordnern (siehe weiter + unten unter |option|). +\item |uninstall| Diese Aktion fragt zuerst noch einmal nach, dann wird + die gesamte Installation entfernt. Wird die Option |--force| gegeben dann + wird nicht einmal nachgefragt. +\item \Verb+check [files|collections|all]+ Führt einen oder alle Tests + der Installation auf Konsistenz durch. Mit |files| wird überprüft + ob all in der Datenbank gelisteten Dateien auch im System vorhanden + sind. Die Option |--use-svn| benutzt den |svn| Befehl um die + vorhandenen Dateien festzustellen. +\item |gui| startet die graphische Oberfläche wie oben erklärt. +\item |version| ist das Gleiche wie |--version|. +\item |help| ist das Gleiche wie |--help|. +\end{itemize} + +\paragraph{Die Konfigurationsaktionen} +\begin{itemize} +\item |option [show]| Zeigt alle in der lokalen Datenbank gespeicherten + Optionen an. +\item |option |\var{key} |[|\var{value}|]| + Ohne \var{value} wird der aktuelle Wert der Konfigurationsoption \var{key} + angezeigt. Derzeit werden die folgenden |key|s werden derzeit akzeptiert: + |location| -- voreingestellte Installationsquelle; + |formats| -- Formate werden bei Installation/Update neu erstellt; + |docfiles| -- bei der Installation von Paketen werden auch die + Dokumentationsdateien installiert. Änderung der Option |docfiles| betrifft + nicht schon installierte Pakete, sondern nur neue Pakete und + Updates; + |srcfiles| -- bei der Installation von Paketen werden auch die + Quelldateien installiert; + |backupdir| -- voreingestellter Ordner für Backups; + |autobackup| -- Anzahl der Backups die behalten werden sollen (siehe + weiter unten für Details); + |sys_bin| -- Ordner in dem symbolische Verweise für Programme + durch |symlinks| angelegt werden; + |sys_man| -- Ordner in dem symbolische Verweise für man pages + durch |symlinks| angelegt werden; + |sys_info| -- Ordner in dem symbolische Verweise für info Dokumentationen + durch |symlinks| angelegt werden. +\item |paper |\var{paper} legt das voreingestellte Papierformat ein, entweder + |a4| oder |letter|. Ohne \var{paper} werden die aktuellen Papierformate + für alle unterstützten Programme angezeigt. +\item \var{program} \Verb+paper [help|+\var{paper}|]| + Diese Variante erlaubt es verschiedene voreingestellte Papierformate + für die unterstützten Programme einstellen. \var{program} kann + dabei eines aus |xdvi|, |dvips|, |pdftex|, |dvipdfm|, + |dvipdfmx|, |context| sein. + Ohne zusätzlichem Argument wird das aktuelle Papierformat für \var{program} + angezeigt. Mit |help| werden alle unterstützten Papierformate für + das jeweilige Programm angezeigt. Mit der Angabe eines Papierformates + wird das Programm für dieses Format umkonfiguriert. +\item |generate |\var{what} Diese Aktion erstellt ein oder mehrere + Konfigurationsdateien wie folgt beschrieben: + + Wird für \var{what} der Wert |language.dat| angegeben, dann wird + die Datei |language.dat| welche die Trennmuster die in \LaTeX-basierende + Formate geladen werden erstellt. + Mit |language.def| wird ebendiese Datei erstellt, die die Trennmuster + die in |etex|-basierende Formate geladen werden festlegt. + Wird nur |language| für \var{what} angegeben so werden beide Dateien + erstellt. + + Wird |fmtutil| für \var{what} angegeben so wird die Datei |fmtutil.cnf| + neu erstellt, die die Definitionen aller zu erstellenden Formate + enthält. + + Wird |updmap| für \var{what} angegeben so wird die Datei |updmap.cfg| + neu erstellt, die alle installierten Schriftarten-map Dateien enthält. + + Für |fmtutil.cnf| und die beiden |language| Dateien ist das neu + Erstellen normal und sowohl das Installationsprogramm als auch tlmgr + tun dies regelmäßig. + + Für |updmap.cfg| jedoch ist dies nicht so. Weder das Installationsprogramm + noch tlmgr verwenden den |generate| Aufrufs, da dieser alle manuell + aktivierten Schriftarten-map Dateien die mit |updmap-sys --enable| + aktiviert worden sind, entfernen (z.B.\ für lokal installierte + kommerzielle Fonts). Nur Eintragungen die in |--localcfg| (siehe weiter + unten) eingetragen sind würden erhalten werden. + + Wenn Sie jedoch nur Schriftarten aus \tl\ selbst verwenden, dann + ist der Aufruf von |generate| ohne negativen Konsequenzen. Wir verwenden + es um die Datei |updmap.cfg| in unserem Repository zu aktualisieren. + + Sollten die Dateien |language-local.dat|, |language-local.def|, + |fmtutil-local.cnf|, oder |updmap-local.cfg| vorhanden sein unter + \path{TEXMFLOCAL} in den entsprechenden Ordnern, dann wird deren + Inhalt als letztes in die erstellten Dateien hineinkopiert. +\end{itemize} + + +\paragraph{Die Paketaktionen} +\begin{itemize} +\item |install| \var{pkg}\ldots\ installiert die angegebenen Pakete. + Normalerweise werden alle Pakete von denen ein angegebenes Paket + abhängt auch mitinstalliert. Dies kann mit der Option |--no-depends| + unterdrückt werden. Weiters gibt es noch |--no-depends-at-all| + was tlmgr zusätzlich die eng verknüpften Pakete mit architekturspezifischen + Paketen vergessen lässt; zum Beispiel |bin-bibtex| und + |bin-bibtex.i386-linux|. Das sollte niemals verwendet werden außer Sie + wissen sehr genau was Sie tun. + |--dry-run| simuliert die Installation nur. +\item |update| \var{pkg}\ldots\ bringt die angegebenen Pakete auf den + neuesten Stand. Zusätzlich, sollte ein der \var{pkg} eine Paketgruppe + sein, und an der Installationsquelle gibt es die gleiche Paketgruppe + mit Paketen die nicht installiert sind lokal, so werden diese auch + installiert. Optionen sind: + \begin{description} + \item |--list| Listet nur die Pakete auf die erneuert oder + neu installiert werden würden ohne den Update wirklich durchzuführen. + Es werden zusätzlich die Revisionsnummern der lokalen Pakete und + der Pakete der Installationsquelle angegeben. + \item |--all| Bringt alle Pakete die Erneuerungen haben auf den neuesten + Stand. + \item |--dry-run| Die Installation wird nur simuliert. + \item |--backup| und |--backupdir |\var{directory} + Diese Optionen steuern die Erstellung von Sicherheitskopien der + Pakete bevor das Upgrade installiert wird. + Wird weder |--backup| noch |--backupdir| angegeben wird keine + Sicherheitskopie erstellt. Wird |--backupdir| angegeben und + zeigt auf einen beschreibbaren Ordner, wird eine Sicherungskopie + erstellt. Wird nur |--backup| angegeben wird versucht der in der + Datenbank vorher mit |option backupdir| festgelegte Ordner für + Sicherungskopien zu verwenden. + Werden beide Optionen angegeben dann wird die Sicherungskopie in + dem angegebenen Ordner erstellt. + + tlmgr erstellt vor jedem Upgrade eine temporäre Sicherungskopie um + im Fehlerfall automatisch zur letzten installierten Version + zurückgehen zu können. Diese Optionen hier erlauben die Erstellung + von persistenten Sicherungskopien. + + \item |--no-depends| Normale Abhängigkeiten werden nicht aufgelöst. + \item |--no-depends-at-all| Bitte die |install| Aktion weiter oben + dazu konsultieren. + \end{description} +\item |remove| \var{pkg}\ldots\ + entfernt die angegebenen Pakete. Wird eine Paketgruppe entfernt + werden auch alle darin gelisteten Pakete entfernt, jedoch keine + anderen Paketgruppen die darin referenziert sind. + Wird ein normales Pakete (keine Paketgruppe) entfernt dann werden + darin referenzierte Pakete nie entfernt. + + Options: + \begin{description} + \item |--no-depends| referenziert Pakete werden nicht entfernt. + \item |--no-depends-at-all| Bitte die |install| Aktion weiter oben + dazu konsultieren. + \item |--force| + tlmgr überprüft ob ein zu entfernendes Paket oder Paketgruppe + in irgendeinem anderen Paket oder Paketgruppe referenziert ist. Ist + dies so wird das Paket oder die Paketgruppe nicht entfernt + außer man gibt diese Option an. + \item |--dry-run| + Das Entfernen der Pakete wird nur simuliert. + \end{description} +\item |backup| \var{pkg}\ldots\ + Wird die Option |--clean| nicht angegeben, wird von den angegebenen + Paketen, oder von allen wenn |--all| angegeben ist, eine + Sicherungskopie gemacht. Diese Kopien werden in den Ordner der + entweder durch die Option |--backupdir| angegeben ist, oder durch + den in der Datenbank festgelegten Ordner bestimmt. Sollten beide + nicht angegeben sein oder nicht beschreibbar, werden keine + Sicherungskopien erstellt. + + Wird |--clean| angegeben dann werden alte Sicherungskopien gelöscht. + Der Wert der zu erhaltenden Sicherungskopien wird entweder durch + einen optionalen Parameter zu |--clean=N| angegeben, oder durch den + in der Datenbank gespeicherte Option |autobackup|. + +\item |restore --backupdir |\var{dir} |[|\var{pkg} |[|\var{rev}|]]|\\ + Wird \var{pkg} nicht angegeben (und daher auch kein \var{rev}), dann + werden alle vorhanden Sicherungskopien für alle Pakete aufgelistet. + + Wird \var{pkg} angegeben aber kein \var{rev} dann werden alle + vorhandenen Sicherungskopien nach Revisionen für das Paket + aufgelistet. + + Werden sowohl \var{pkg} als auch \var{rev} angegeben wird die + Sicherungskopie des Pakets in der angegebenen Revision installiert. + + Die Option |--backupdir dir| gibt den Ordner an wo nach + Sicherungskopien gesucht wird. + Die Option |--dry-run| wird ebenso unterstützt, wie üblich. + +\item |arch |\var{operation} \var{arg}\ldots + Ist \var{operation} gleich |list| so werden alle an der + Installationsquelle vorhandenen Architekturen/Plattformen ausgegeben. + + Ist \var{operation} gleich |add| so werden die Programme für die + angegebenen Architekturen installiert. + + Die Option |--dry-run| wird ebenso unterstützt, wie üblich. +\end{itemize} + + +\subsection{Typische Anwendungsbeispiele des tlmgr} + +Im Folgenden werden wir einige typische Anwendungsszenaria des \tlmgr\ +vorstellen. + +\paragraph{Installation einer neuen Paketgruppe} + +Angenommen Sie haben das Schema |scheme-medium| installiert und +realisieren dass die Trennmuster für einige Sprachen die Sie benutzen +fehlen, z.B.\ Norwegisch. Zuerst verwenden Sie tlmgr um nach diesem +Schlüsselwort zu suchen: +\begin{lstlisting} +$ tlmgr search --global norwegian +tlmgr: installation location ... +collection-langnorwegian - Norwegian +hyphen-norwegian - +\end{lstlisting} +und dann installieren Sie die Paketgruppe: +\begin{lstlisting} +$ tlmgr install collection-langnorwegian +tlmgr: installation location ... +install: collection-langnorwegian +install: hyphen-norwegian +tlmgr: package log updated at .../tlmgr.log +regenerating language.dat +regenerating language.def +\end{lstlisting} +gefolgt von der Ausgabe der Neuerstellung aller Formate die entweder von +|language.dat| oder |language.def| abhängen. +(Falls die |formats| Option auf 0 geändert wurde in der lokalen Datenbank +wird die Neuerstellung übersprungen. Die Voreinstellung ist dass Format +jeweils erneuert werden.) + +\paragraph{Suche nach einem Paket} + +Sie wollen eine Einladung mit Absätzen in besonderen Formen setzten, aber +Sie wissen nicht welches Paket man da verwenden könnte. Ein Aufruf von +tlmgr hilft: +\begin{lstlisting} +$ tlmgr search paragraph +\end{lstlisting} +zeigt aber keine Ausgabe. Vielleicht ist nichts entsprechendes installiert? +Also versuchen Sie eine Globalsuche: +\lstset{breaklines} +\begin{lstlisting} +$ tlmgr search -global paragraph +tlmgr: installation location ... + 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} +und hier ist es, |shapepar| scheint genau zu sein was Sie brauchen. Also +sehen Sie sich genauer an was diese Paket ist: +\begin{lstlisting} +$ tlmgr show shapepar +tlmgr: installation location ... +Package: shapepar +Category: Package +ShortDesc: A macro to typeset paragraphs in specific shapes. +LongDesc: \shapepar is a macro to typeset paragraphs in a specific shape. +... +Installed: No +Collection:collection-latexextra +\end{lstlisting} +Nun, das schaut gut aus. Sie können nun entweder die ganze Paketgruppe +installieren: +\begin{lstlisting} +$ tlmgr install collection-latexextra +\end{lstlisting} +was aber nicht nur |shapepar| sondern eine Unmenge anderer Pakete mitbringt, +oder sie installieren nur dieses eine Paket und hoffen dass keine +anderen Pakete notwendig sind: +\begin{lstlisting} +$ tlmgr install shapepar +tlmgr: installation location ... +install: shapepar +tlmgr: package log updated at .../tlmgr.log +running mktexlsr +... +\end{lstlisting} + +Diese Beispiele demonstrieren wie man nicht installierte Pakete findet +und installiert. Die Voreinstellung des Installationsprogrammes ist +jedoch das gesamte \tl\ zu installieren, d.h.\ alles was verfügbar ist +wird auch installiert. + +\paragraph{Update der Installation} + +Nach der ersten Installation wollen Sie nun die neuesten Versionen der +gesamten Pakete bekommen, doch sicherheitshalber vorher überprüfen +was denn das heißt: +\begin{lstlisting} +$ tlmgr update --list +tlmgr: installation location /mnt/cdrom +Cannot load TeX Live database from /mnt/cdrom at .../tl/2008/bin/i386-linux/tlmgr line 1505, <TMP> line 1982. +\end{lstlisting} +Hmm, das scheint ein Fehler sich eingeschlichen zu haben, tlmgr versucht +noch immer von der \acro{DVD} zu installieren, die Sie schon lange +an einen Freund weitergegeben haben. Da sollte Sie nun zur +Netzwerkinstallationsquelle übergehen, und das gleich für alle weiteren +Aktionen als Voreinstellung speichern. Nur haben Sie schon wieder die +Adresse vergessen! Glücklicherweise kann sich der \tlmgr\ daran erinnern +und Sie brauchen ihm nur sagen dass er |ctan| verwenden soll: +\begin{lstlisting} +$ tlmgr option location ctan +tlmgr: setting default installation location to http://mirror.ctan.org/systems/texlive/tlnet/2008 +\end{lstlisting} +Ok, nun schauen wir mal was es so Neues gibt: +\begin{lstlisting} +$ tlmgr update --list +tlmgr: installation location /src/TeX/texlive-svn/Master +bin-texlive: local: 12181, source: 12269 +cc-pl: local: 7340, source: 12724 +latexmk: local: 12697, source: 12749 +mfpic4ode: local: 7340, source: 12734 +pkfix-helper: local: 12532, source: 12713 +scheme-minimal: local: 10129, source: 12703 +texlive.infra: local: 12186, source: 12729 +\end{lstlisting} +Da sind ja einige Dinge die ein Update brauchen, tun wir das einmal: +\begin{lstlisting} +$ tlmgr update --all +tlmgr: installation location ... +Updates for tlmgr itself are present. +=========================================== +Please update the packages bin-texlive and texlive.infra first, via either + tlmgr update bin-texlive texlive.infra +or by getting the latest updater for Unix-ish systems: + http://mirror.ctan.org/systems/texlive/tlnet/2008/update-tlmgr-latest.sh +and/or Windows systems: + http://mirror.ctan.org/systems/texlive/tlnet/2008/update-tlmgr-latest.exe +Then continue with other updates. +=========================================== +.../tl/2008/bin/x86_64-linux/tlmgr: Exiting, please read above warning. +\end{lstlisting} +Ja, dies sollte gemacht werden. \tlmgr\ verweigert die Operation wenn +Updates für tlmgr oder die Infrastrukturpakete zur Verfügung stehen. +Dies garantiert dass Fehler im \tlmgr\ nicht zu lange unbehoben bleiben. +Also tun Sie das: +\begin{lstlisting} +$ tlmgr update bin-texlive texlive.infra +tlmgr: installation location ... +[1/2] update: bin-texlive (12181 -> 12269) ... running post remove action for bin-texlive +running post install action for bin-texlive +done +[2/2] update: texlive.infra (12186 -> 12729) ... running post install action for texlive.infra +done +tlmgr: package log updated at .../tlmgr.log +running mktexlsr +... +\end{lstlisting} +Gut, scheint ja geklappt zu haben. Jetzt probieren wir das mit den +Updates noch einmal: +\begin{lstlisting} +$ tlmgr update --list +tlmgr: installation location ... +cc-pl: local: 7340, source: 12724 +latexmk: local: 12697, source: 12749 +mfpic4ode: local: 7340, source: 12734 +pkfix-helper: local: 12532, source: 12713 +scheme-minimal: local: 10129, source: 12703 +\end{lstlisting} +und das tatsächliche Upgrade: +\begin{lstlisting} +$ tlmgr update --all +tlmgr: installation location ... +[1/5] update: cc-pl (7340 -> 12724) ... done +[2/5] update: latexmk (12697 -> 12749) ... done +[3/5] update: mfpic4ode (7340 -> 12734) ... done +[4/5] update: pkfix-helper (12532 -> 12713) ... done +[5/5] update: scheme-minimal (10129 -> 12703) ... done +tlmgr: package log updated at .../tlmgr.log +running mktexlsr ... +running updmap-sys ... +\end{lstlisting} + +\paragraph{Einstellen des Papierformats} + +Sie übersiedeln nach Japan und hätten gerne \emph{letter} als +voreingestelltes Papierformat, nichts leichter als das: +\begin{lstlisting} +$ tlmgr paper letter +\end{lstlisting} +und die wichtigsten Programme werden ab nun \emph{letter} Papierformat +verwenden. + +\section{Die graphische Oberfläche von tlmgr} + +Um die meisten Windows-Benutzer und einige Unix-Benutzer glücklich(er) +zu machen gibt es für tlmgr auch eine graphische Oberfläche, die wie +die des Installationsprogrammes in Perl/Tk geschrieben ist. +Bisher ist jedoch nicht die volle Funktionalität der Kommandozeilenversion +von tlmgr in der graphischen Oberfläche abgebildet. + +Die Oberfläche hat mehrere Fenster mit verschiedenen Funktionalitäten: +Installation, Update, Entfernen von Paketen, Entfernen von \tl\ als +Ganzes, Unterstützung verschiedener Architekturen, und Konfiguration. + +Die graphische Oberfläche wird mit |tlmgr gui| oder |tlmgr --gui action| +gestartet. Im letzeren Fall versucht tlmgr gleich das Fenster das zur +angegebenen Aktion passt anzuzeigen. + +\subsection{Das Installationsfenster} + +Das erste Fenster das man normalerweise sieht ist das Installationsfenster +(fig.~\ref{fig:gui:install}). + +\begin{figure}[ht!] + \centering + \resizebox{0.8\columnwidth}{!}{\includegraphics{tlmgrgui-install-de.png}} + \caption{\tlmgr\ \acro{GUI} Installationsfenster} + \label{fig:gui:install} +\end{figure} + +Am oberen Ende sieht man die aktuelle Installationsquelle, die entweder +über die Kommandozeilenoption |--location| angegeben wurde oder aus +der Datenbank gelesen wird. Die entfernte Datenbank wird \emph{nicht} +automatisch geladen, Sie müssen die \button{Load} Knopf drücken, oder +den \button{Change} Knopf um vorher eine andere Installationsquelle +anzugeben. + +Darunter sieht man die Liste der an der Installationsquelle verfügbaren +Pakete auf der linken Seite, zuerst die Paketgruppen und Schemata, danach +alle normalen Pakete in alphabetischer Ordnung. Durch Eingabe von Zeichen +in das Eingabefeld neben \button{Suche} hüpft die Selektion sofort zum ersten +passenden Paket. Der Knopf \button{Nächster} erlaubt es zum nächsten +passenden Eintrag zu springen. + +Nachdem ein Paket auf der linken Seite selektiert wurde erscheint die +Kurz- und Langbeschreibung des Paketes im rechten Teil des Fensters. + +Darunter gibt es einen Knopf um die selektierten Pakete zu installieren. +Weiters zwei Auswahlschalter die es erlaubt die Installations zu +erzwingen (falls Updates für tlmgr selbst vorhanden sind wird keinerlei +Aktion durchgeführt), und einen Auswahlschalter der es erlaubt Pakete +ohne Abhängigkeiten zu installieren. + +\subsection{Das Aktualisierungsfenster} + +Der Aktualisierungsfenster ähnelt dem Installationsfenster, mit dem +Unterschied dass nur die Pakete angezeigt werden für die Aktualisierungen +zur Verfügung stehen. Der Aktionsbereich im rechten unteren Eck erlaubt +entweder alle Pakete zu aktualisieren, oder nur die selektierten. +Wieder kann die Aktualisierung erzwungen werden falls neuere Versionen +von tlmgr selbst vorhanden sind. + +In Abb.~\ref{fig:gui:update} ist der Aktualisierungsfenster sehen in dem für +einige Pakete Aktualisierungen verfügbar sind. + +\begin{figure}[ht!] + \centering + \resizebox{0.8\columnwidth}{!}{\includegraphics{tlmgrgui-update-de.png}} + \caption{\tlmgr\ \acro{GUI} Aktualisierungsfenster} + \label{fig:gui:update} +\end{figure} + +\subsection{Das Entfernfenster} + +Das Entfernfenster in Abb.~\ref{fig:gui:remove} +ist ebenfalls dem Installationsfenster ähnlich, wobei +die Liste aller installierten Pakete angezeigt werden. Das Aktionsfeld +enthält diesmal einen Knopf um alle selektierten Pakete zu entfernen, und +zwei Auswahlschalter um die Entfernung zu erzwingen (entsprechend +der |--force| Kommandozeilenoption) und Abhängigkeiten zu ignorieren +(entsprechend der |--no-depends| Kommandozeilenoption), + +\begin{figure}[ht!] + \centering + \resizebox{0.8\columnwidth}{!}{\includegraphics{tlmgrgui-remove-de.png}} + \caption{\tlmgr\ \acro{GUI} Entfernfenster} + \label{fig:gui:remove} +\end{figure} + +\subsection{Das Deinstallationsfenster} + +Dieses Fenster enthält nur einen Knopf der es erlaubt \tl\ vollständig +zu entfernen. Auf Windowssystemen ist dieser Knopf durch einen Text +ersetzt der darauf hinweist dass \cmd{Programme} aus der Systemsteuerung +verwendet werden soll. + +\subsection{Das Architekturfenster} + +Unter Unix erlaubt \tl\ die Installation von Programmen für verschiedene +Plattformen, d.h.\ für Architektur--Betriebssystem Kombinationen. Dies +erlaubt die Verteilung einer \tl\ Installation in einem inhomogenen +lokalen Netzwerk, z.B.\ via \acro{NFS}, siehe Abb.~\ref{fig:gui:arch}. + +\begin{figure}[ht!] + \centering + \resizebox{0.8\columnwidth}{!}{\includegraphics{tlmgrgui-arch-de.png}} + \caption{\tlmgr\ \acro{GUI} Architekturfenster} + \label{fig:gui:arch} +\end{figure} + +Dieses Fenster listet die verfügbaren Architekturen an der aktuellen +Installationsquelle auf, und erlaubt es neue Architekturen durch +drücken des Knopfes \button{Änderungen anwenden} zu installieren. + +Während das hinzufügen von Architekturen unterstützt wird, ist das +entfernen von derzeit installierten Architekturen (noch) +nicht unterstützt. Weiters ist das gesamte Fenster unter Windows +nicht vorhanden, da Windows keine symbolischen Verweise (symlinks) +unterstützt. + +\subsection{Das Konfigurationsfenster} + +Dieses Fenster erlaubt es dem Benutzer sehr komfortabel diverse +in der Datenbank gespeicherten Optionen zu überprüfen und zu ändern, +siehe Abb.~\ref{fig:gui:option}. + +\begin{figure}[ht!] + \centering + \resizebox{0.8\columnwidth}{!}{\includegraphics{tlmgrgui-options-de.png}} + \caption{\tlmgr\ \acro{GUI} Konfigurationsfenster} + \label{fig:gui:option} +\end{figure} + +Im oberen Teil werden die in der Datenbank gespeicherten Optionen angezeigt, +und können jeweils mit dem \button{Ändern} geändert werden. + +Im unteren linken Teil wird das voreingestellte Papierformat für alle +Programme angezeigt, und kann mit dem Knöpfen \button{A4} und +\button{letter} für alle Programme auf einmal geändert werden, oder +mit den Knöpfen \button{Ändern} für jedes Programm einzeln. + +Im unteren rechten Teil sind einige Knöpfe die hin und wieder nützlich +sind, nämlich um die Dateilisten (ls-R) neu zu erstellen, alle Formate +neu zu erstellen, und die Liste der Outline Schriftarten (|updmap-sys|). + +\subsection{Das Logfenster} + +Neben dem sich ändernden Hauptfenster gibt es ein permanentes Fenster +das die Ausgabe, die tlmgr auf die Konsole schreibt, auch in diesem +Fenster anzeigt, siehe Abb.~\ref{fig:gui:log}. + +\begin{figure}[ht!] + \centering + \resizebox{0.8\columnwidth}{!}{\includegraphics{tlmgrgui-log-de.png}} + \caption{\tlmgr\ \acro{GUI} Logfenster} + \label{fig:gui:log} +\end{figure} + +\section{Was gibt es noch (neues)?} + +Neben der vollkommen überarbeiteten Infrastruktur und den für Benutzer +sichtbaren Änderungen des neuen Installationsprogrammes und +des \tlmgr wurde wie jedes Jahr alle Pakete auf den neuesten Stand +gebracht (und auch laufend aktualisiert). Derzeit stehen circa~1400 +normale Pakete wie \LaTeX\ Styles oder Fontpakete zur Verfügung, und +zusätzlich knapp~300 andere Pakete, größtenteils Dokumentation und +einige wenige \tl\ interne Pakete. + +Das wichtigeste neue Programm ist sicher die neue \TeX-Engine Lua\TeX\ +(\url{http://luatex.org}). Neben einem vollkommen neuen Grad an +Flexibilität stellt Lua\TeX\ die Scriptsprache Lua bereit, die z.\,B.\ in +|texdoc| verwendet wird. + +\subsection{Windows-spezifische Eigenheiten} + +Um als halbwegs komplett unter Windows zu gelten bringt jede \tl\ Installation +noch einige zusätzliche Pakete für Windows mit: +\begin{description} +\item[Perl und Ghostscript.] Da sowohl Perl als auch Ghostscript in vielen + Programmen verwendet wird bringt \tl\ `versteckte' Kopien dieser + Programme mit. Die \tl-Programme wissen wo sie Perl und Ghostscript + finden können, aber diese versteckten Versionen verraten ihre Anwesenheit + sonst nicht durch Umgebungsvariablen oder Registrierungseinträge. + Sie sind auch kein Ersatz für eine vollständige Distribution dieser + Programme und liefern nur die in \tl\ verwendete Funktionalität. +\item[Programme für die Kommandozeile.] + \tl\ installiert nun auch Portierungen von üblichen Unix-Programmen + die zusammen mit den anderen \tl-Programmen installiert werden. Unter + den installierten Programmen sind \cmd{gzip}, \cmd{chktex}, + \cmd{jpeg2ps}, \cmd{unzip}, \cmd{wget} und die Kommandozeilenprogramme + der \cmd{xpdf} Suite. (Der \cmd{xpdf} Betrachter selber wird jedoch + nicht auf Windows installiert, aber der Sumatra \acro{PDF} Betrachter + basiert auf \cmd{xpdf}: + \url{http://blog.kowalczyk.info/software/sumatrapdf}.) +\item[\texttt{fc-cache}] ist ein weiteres Kommandozeilenprogramm + dass \XeTeX\ erlaubt die installierten Schriftarten effizienter + zu handhaben. +\item[PS\_View.] Als Neuerung dieses Jahr wird PS\_View installiert, + ein PostScript Betrachter der freie Software ist, siehe + Abb.~\ref{fig:psview}. Es unterstützt auch die Anzeige von \acro{PDF} + Dateien und ist extrem schnell und hat eine Vielzahl an Funktionen. + Bitte kontaktieren Sie uns für Vorschläge und Fehlermeldungen, dieses + Programm ist in aktiver Entwicklung. +\item[dviout] Dieser \acro{DVI} Betrachter wurde auf der \acro{DVD} nur + im |support| Ordner ausgeliefert, aber er wird durch Aktualisierungen + über das Netzwerk installiert, siehe Abb.~\ref{fig:dviout}. +\end{description} + +\begin{figure}[ht!] + \centering + \resizebox{0.8\columnwidth}{!}{\includegraphics{psview.png}} + \caption{PS\_View erlaubt hohe Vergrößerungen und unterstützt \acro{PDF}} + \label{fig:psview} +\end{figure} + +\begin{figure}[ht!] + \centering + \resizebox{0.8\columnwidth}{!}{\includegraphics{dviout.png}} + \caption{DVIout auf Windows} + \label{fig:dviout} +\end{figure} + +\section{Schlussbemerkungen und andere Informationsquellen} + +Der \tlmgr\ unterliegt schneller Entwicklung, und das graphische +Frontend noch viel mehr. Wir versuchen immer mehr Funktionalität in +tlmgr einzubauen und auch in der graphischen Oberfläche abzubilden. +Bitte melden Sie jegliche Abnormalitäten an uns unter +\url{tex-live@tug.org}. + +Wie mit jedem Projekt das auf freiwillige Mitarbeit beruht leiden wir +an einem nur sehr kleinen Pool an Programmieren für die zentrale +Infrastruktur und den \tlmgr. Praktisch die gesamte Infrastruktur, +der gesamte tlmgr und das graphische Frontend wurde vom Autor mit nur +geringen Beiträgen anderer Autoren programmiert. Jeder der Perl +beherrscht ist herzliche eingeladen uns zu unterstützen, es gibt +lange Listen von zu erledigenden Dingen für den \tlmgr, +ganz zu schweigen von \tl\ als Ganzes. + +Wenn Sie mehr Informationen zu \tl\ suchen ist die erste Adresse +\url{http://tug.org/texlive/} und die entsprechende Dokumentationsseite +\url{http://tug.org/texlive/doc.html}. + +Die Liste der Personen denen Dank gebührt ist viel zu lange um hier +inkludiert zu werden, sie ist in der online \tl\ Dokumentation, Kapitel~9 +(Danksagungen) zu finden. Natürlich darf ein Name hier nicht fehlen und +das ist Karl Berry, der mit seinem unglaublichen Enthusiasmus und seiner +permanenten Unterstützung (und seiner zur gegebenen Zeit kritischen Stimme) +die Ausgabe von \tl~2008 überhaupt ermöglicht hat. + +\bibliography{tlmgr-article} + +% +% END OF ARTICLE +% diff --git a/Master/tlpkg/doc/articles/guit08/tlmgrgui-arch-de.png b/Master/tlpkg/doc/articles/guit08/tlmgrgui-arch-de.png Binary files differnew file mode 100644 index 00000000000..ab8e44c4120 --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/tlmgrgui-arch-de.png diff --git a/Master/tlpkg/doc/articles/guit08/tlmgrgui-arch.png b/Master/tlpkg/doc/articles/guit08/tlmgrgui-arch.png Binary files differnew file mode 100644 index 00000000000..410dc26c419 --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/tlmgrgui-arch.png diff --git a/Master/tlpkg/doc/articles/guit08/tlmgrgui-install-de.png b/Master/tlpkg/doc/articles/guit08/tlmgrgui-install-de.png Binary files differnew file mode 100644 index 00000000000..9c077767592 --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/tlmgrgui-install-de.png diff --git a/Master/tlpkg/doc/articles/guit08/tlmgrgui-install.png b/Master/tlpkg/doc/articles/guit08/tlmgrgui-install.png Binary files differnew file mode 100644 index 00000000000..6151039e056 --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/tlmgrgui-install.png diff --git a/Master/tlpkg/doc/articles/guit08/tlmgrgui-log-de.png b/Master/tlpkg/doc/articles/guit08/tlmgrgui-log-de.png Binary files differnew file mode 100644 index 00000000000..771181af0a5 --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/tlmgrgui-log-de.png diff --git a/Master/tlpkg/doc/articles/guit08/tlmgrgui-options-de.png b/Master/tlpkg/doc/articles/guit08/tlmgrgui-options-de.png Binary files differnew file mode 100644 index 00000000000..287d36cccac --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/tlmgrgui-options-de.png diff --git a/Master/tlpkg/doc/articles/guit08/tlmgrgui-options.png b/Master/tlpkg/doc/articles/guit08/tlmgrgui-options.png Binary files differnew file mode 100644 index 00000000000..d9051c72a79 --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/tlmgrgui-options.png diff --git a/Master/tlpkg/doc/articles/guit08/tlmgrgui-remove-de.png b/Master/tlpkg/doc/articles/guit08/tlmgrgui-remove-de.png Binary files differnew file mode 100644 index 00000000000..652cf017d95 --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/tlmgrgui-remove-de.png diff --git a/Master/tlpkg/doc/articles/guit08/tlmgrgui-remove.png b/Master/tlpkg/doc/articles/guit08/tlmgrgui-remove.png Binary files differnew file mode 100644 index 00000000000..163b75ae866 --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/tlmgrgui-remove.png diff --git a/Master/tlpkg/doc/articles/guit08/tlmgrgui-update-de.png b/Master/tlpkg/doc/articles/guit08/tlmgrgui-update-de.png Binary files differnew file mode 100644 index 00000000000..cf8c04e49c6 --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/tlmgrgui-update-de.png diff --git a/Master/tlpkg/doc/articles/guit08/tlmgrgui-update.png b/Master/tlpkg/doc/articles/guit08/tlmgrgui-update.png Binary files differnew file mode 100644 index 00000000000..cc15c5cb218 --- /dev/null +++ b/Master/tlpkg/doc/articles/guit08/tlmgrgui-update.png |