[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

no way to compare when less than two revisions

Diferencias

Muestra las diferencias entre dos versiones de la página.


es:howtos:software:texlive [2019/02/28 01:54 (UTC)] (actual) – creado slackwarespanol
Línea 1: Línea 1:
 +<!-- Add your text below. We strongly advise to start with a Headline (see button bar above). -->
 +====== The native TeX Live integration ======
  
 +Tex Live is nowadays the last maintained TeX distribution. Due to its size,
 +it is not provided in the Slackware's official repository. That's why many
 +(most of?) people use the dedicated SlackBuild from
 +[[http://slackbuilds.org/|SlackBuilds.org]] to get it as a huge complete
 +monolithic package.
 +
 +Of course, this solution is a good one, as everybody will then get a
 +perfectly integrated package, able to feed far more needs than you would
 +look for. Nevertheless, as always there are two faces on the coin. First,
 +it's huge, //really// huge, easily more than a whole customized system.
 +Second, it's not flexible: once it's installed, you can't update its
 +contents, which means you are stuck with the potential bugs you may
 +encounter until the next major release, possibly for a whole year.
 +
 +That's why this tutorial will try to show you how to obtain a more
 +updatable and customizable installation, using the native upstream TeX Live
 +distribution. The idea is to put it in its dedicated directory, then manage
 +it with its own tools. Of course it will not be as proper as an orthodox
 +package, but, we will see, not as dirty as it sounds first.
 +
 +
 +===== Prepare the TeX Live sanctuary =====
 +
 +Here, we will make a place for the future TeX Live installation. The first
 +thing we need is someone to manage it, a user which will be the only one
 +to deal with the TeX package repositories. We could of course use ''root''
 +for this, but this is not a good idea, because granting the right to write
 +everywhere to a third party system is not secure at all. That's why we'll
 +create a dedicated system user (ie. a user without any shell to login):
 +
 +<code># useradd -rU -c "The TeX Live user" -d / -s /bin/false tluser</code>
 +
 +Right. Now, we make the unique place where our new ''tluser'' will be
 +allowed to write (YYYY refers to the TeX Live's version, which is the year
 +each one is released, replace it with the one you aim):
 +
 +<code># mkdir /opt/texlive-YYYY/
 +# chown tluser:tluser /opt/texlive-YYYY/
 +# ln -sf texlive-YYYY /opt/texlive</code>
 +
 +The last command creates a generic symlink, which will be useful when
 +upgrading the installation, allowing the old release to temporarily stand
 +beside the new.
 +
 +Installed here though, our TeX Live will be almost useless, because no one will
 +have it in his ''PATH''. We therefore add the two suitable scripts into
 +''/etc/profile.d'', respectively named ''texlive.sh'' and ''texlive.csh'':
 +
 +<file bash texlive.sh>#!/bin/sh
 +if [ ! "$(id -u)" = "0" ]; then
 +  PATH=$(echo $PATH | sed 's#:\.\?$##;s#$#:/opt/texlive/bin/i386-linux:.#')
 +  export PATH
 +fi
 +</file>
 +
 +<file bash texlive.csh>#!/bin/csh
 +if ( `id -u` != "0" ) then 
 +  setenv PATH `echo $PATH | sed 's#:\.\?$##;s#$#:/opt/texlive/bin/i386-linux:.#'`
 +endif
 +</file>
 +
 +As you can see, in both we insert the new directory at the end of the
 +''PATH''. This is because we want to use our system's binaries rather than
 +the ones shipped by the TeX live distribution.
 +
 +You've maybe also noticed this addition won't be made to the ''root'''s
 +''PATH''. It's once again normal, because ''root'' is not intended to
 +execute these binaries, we want to use him only to administer our TeX Live
 +installation. More precisely, we want him to use the ''tluser'' we created to
 +perform this. That's why the only thing ''root'' should have in his path is a
 +wrapper for ''tlmgr'', the native TeX Live manager. Here it is:
 +
 +<file bash tlmgr>#!/bin/sh
 +
 +if [ $(id -u) -ne 0 ]; then
 +    echo "(E) Only root can use this script." >&2
 +    exit 1
 +fi
 +
 +# tluser must use the TeX Live binaries rather than the system's ones.
 +export PATH=/opt/texlive/bin/i386-linux:/bin:/usr/bin
 +exec sudo -u tluser tlmgr "$@"
 +</file>
 +
 +We put it in ''/usr/sbin'', then we ensure it is executable:
 +
 +<code># chmod 755 /usr/sbin/tlmgr</code>
 +
 +This completes the last step to setup our sanctuary. Now let's see how to
 +get the lion into it.
 +
 +===== Install the native TeX Live =====
 +
 +As you probably don't plan to install all of its components, it is better
 +to perform a network installation. 
 +[[http://www.tug.org/texlive/acquire-netinstall.html|Get the Unix network
 +installer tarball]], untar it, enter the directory and run it **as
 +''tluser''** (this last step requiring to be ''root''):
 +
 +<code>$ tar xf install-tl-unx.tar.gz -C /tmp
 +$ cd /tmp/install-tl-YYYYMMDD
 +$ su
 +Password:
 +# sudo -u tluser ./install-tl
 +</code>
 +
 +A text menu will be displayed, providing configuration items you select by
 +passing letters or numbers. The only required setting is the
 +final installation directory: enter the ''directories'' section then
 +specify our sanctuary (''/opt/texlive-YYYY'') as ''TEXDIR''. Beyond, you're
 +the cook! Personally, I select the basic scheme in ''installation scheme'',
 +deselect all the languages except mine in ''language collections'', and 
 +disable source and doc tree installation in ''option''. Once I've
 +installed the few packages and fonts I need over this, I get a ~80M big TeX
 +Live installation. If you nevertheless prefer a more complete
 +thing, you can pick up in ''installation scheme'' a replacement for the
 +teTeX historically provided by Slackware. Once you are done, order to
 +''start installation to hard disk''.
 +
 +
 +===== Manage the native TeX Live ===== 
 +
 +It is time to learn a little bit more about ''tlmgr'', the //TeX Live
 +Manager//. This section is just a kick-starter explaining how to perform
 +the more common tasks, though. To get a complete description, read ''tlmgr
 +<nowiki>--</nowiki>help''.
 +
 +The first thing you may want to have is a list of the installed
 +packages. Try:
 +
 +<code>$ tlmgr info --only-installed</code>
 +
 +To get an extension you miss, first identify the package it belongs to
 +(here we look for the ''fullpage'' extension):
 +
 +<code>$ tlmgr search --global --file fullpage
 +tlmgr: package repository http://...
 +context-fullpage:
 +    texmf-dist/doc/context/third/fullpage/README
 +    texmf-dist/doc/context/third/fullpage/fullpage-doc.pdf
 +    texmf-dist/tex/context/interface/third/t-fullpage.xml
 +    texmf-dist/tex/context/third/fullpage/t-fullpage.mkii
 +    texmf-dist/tex/context/third/fullpage/t-fullpage.mkiv
 +context-gnuplot:
 +    texmf-dist/doc/context/third/gnuplot/fullpage-example.pdf
 +    texmf-dist/doc/context/third/gnuplot/fullpage-example.tex
 +preprint:
 +    texmf-dist/doc/latex/preprint/fullpage.pdf
 +    texmf-dist/tex/latex/preprint/fullpage.sty
 +    texmf-dist/source/latex/preprint/fullpage.drv
 +    texmf-dist/source/latex/preprint/fullpage.dtx
 +    texmf-dist/source/latex/preprint/fullpage.ins
 +</code>
 +
 +Then, once you've found (in our example, we need the ''preprint'' package),
 +install it (remember you have to be ''root'' to add or modify anything):
 +
 +<code># tlmgr install preprint</code>
 +
 +To make a general update, first check for the potential ones:
 +
 +<code>$ tlmgr update --list</code>
 +
 +If there are some, order to first update ''tlmgr'' itself (it's always
 +better), then to perform the general updating of the packages:
 +
 +<code># tlmgr update --self --all</code>
 +
 +In the case you don't want to update all the packages, replace the
 +''<nowiki>--</nowiki>all'' option with the name(s) of the package(s) you aim. Last, removing
 +a package is trivially done with:
 +
 +<code># tlmgr remove <package></code>
 +
 +As you can see, there's not much to know in order to deal with a native TeX
 +Live installation, and it allows to really precisely specify what should be
 +done.
 +
 +===== Getting it packaged however =====
 +
 +Let's rather call this a //snapshot// then, a package you will keep
 +for you, to perform quick re-installations (keep in mind it doesn't make
 +sense to distribute it as long as it ships ''tlmgr''). Assuming you've
 +rigourously followed the instructions given all along this tutorial, here
 +is a ''tlshot'' named script, which should do the job: 
 +
 +<file bash tlshot>#!/bin/sh
 +#
 +# TLSHOT - make a package from the current native TeX Live installation.
 +#
 +
 +# Copyright (c) 2012, Sébastien Boillod <sbb at tuxfamily dot org>.
 +
 +# Permission to use copy, modify, and/or distribute this software for any
 +# purpose with or without fee is hereby granted, provided that the above
 +# copyright notice and this permission notice appear in all copies.
 +
 +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
 +# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
 +# IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE
 +
 +snapvrs () {
 +    ls -1 "/var/log/packages/$1" 2>/dev/null | \
 +        awk -F- -v s="abcdefghijklmnopqrstuvwxyz" \
 +            '($2 ~ /[a-z]$/){sub(/[0-9]+/,"",$2);l=substr(s,index(s,$2)+1,1)}
 +            END{print "'"$1"'" ((l"") ? l : "a")}'
 +}
 +
 +export LC_ALL="C"
 +umask 022
 +set -e
 +tl="$(ls -l /opt/texlive | awk '{print $NF}')"
 +echo "Packaging /opt/$tl..."
 +
 +root="$(mktemp -d /opt/pkg-XXXXXX)"
 +mkdir -p "$root/opt" "$root/usr/sbin" "$root/etc/profile.d" "$root/install"
 +ln -s "$tl" "$root/opt/texlive"
 +cp /usr/sbin/tlmgr "$root/usr/sbin"
 +cp /etc/profile.d/texlive.*h "$root/etc/profile.d"
 +chmod +x "$root/etc/profile.d"/* "$root/usr/sbin"/*
 +cat >"$root/install/slack-desc" <<EOF
 +       |-----handy-ruler------------------------------------------------------|
 +texlive: texlive (native TeX Live distribution)
 +texlive:
 +texlive: This is a snapshot of the current native TeX Live installation.
 +texlive:
 +texlive:
 +texlive:
 +texlive:
 +texlive:
 +texlive:
 +texlive:
 +texlive:
 +EOF
 +cd "$root"
 +# The installation might be *huge*. That's why we just move it
 +# in the FS (rename) instead of copying it.
 +mv "/opt/$tl" "$root/opt"
 +if ! /sbin/makepkg -l y -c n "${TMPDIR:-"/tmp/"}/$(snapvrs "$tl")-i386-1.txz"; then
 +    mv "$root/opt/$tl" /opt # ^^^ we ALWAYS move back the Tex Live.
 +else
 +    mv "$root/opt/$tl" /opt
 +fi
 +rm -rf "$root"
 +
 +# EoF</file>
 +
 +The result should be a package in ''/tmp'' (or the directory you've specified
 +through the ''TMPDIR'' environment variable), named
 +''texlive-YYYYX-i386-1.txz'', where ''YYYY'' is as usual the TeX Live's
 +version, and ''X'' is a lower letter dynamically attributed to distinguish a
 +snapshot from another. The TeX Live directory packaged is the one pointed
 +by the ''/opt/texlive'' symlink.
 +
 +If you choose to use snapshots, you'll probably want to disable the
 +automatic backups performed by ''tlmgr'' (it won't be very useful, while
 +consuming space and making the snapshots bigger):
 +
 +<code># tlmgr option autobackup 0</code>
 +
 +This time, we have reached the end of this tutorial. I hope you've
 +found something useful here, at least as a basis for your own cleverer
 +solutions. If what you've read so far has globally convinced you, it should not require
 +too much work to tune it according to your tastes. So, play with it and find
 +your perfect TeX Live installation!
 +
 +
 +
 +====== Sources ======
 +<!-- If you are copying information from another source, then specify that source -->
 +<!-- * Original source: [[http://some.website.org/some/page.html]] -->
 +<!-- Authors are allowed to give credit to themselves! -->
 +  * Originally written by [[wiki:user:vaporseb | Sébastien Boillod]] for the Slackware Documentation Project.
 +<!-- * Contributions by [[wiki:user:yyy | User Y]] -->
 +
 +<!-- Please do not modify anything below, except adding new tags.-->
 +<!-- You must remove the tag-word "template" below before saving your new page -->
 +{{tag>howtos texlive LaTeX author_vaporseb}}
 es:howtos:software:texlive ()