% % 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, 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 %