Welcome to the Slackware Documentation Project

Diferencias

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

Enlace a la vista de comparación

es:howtos:software:texlive [2019/02/28 01:54 (UTC)] (actual)
slackwarespanol creado
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}}

En otros idiomas
QR Code
QR Code es:howtos:software:texlive (generated for current page)