与 repo 版本同时安装原生 texlive

与 repo 版本同时安装原生 texlive

我仍在运行 Ubuntu 12.04,我想手动安装最新的 texlive。手动安装的第一步是删除现有的 texlive 安装。但是,我想保留 Ubuntu 存储库中的默认 texlive 安装,因为我有大量的 LaTeX 文档,有时它们可​​能依赖于特定于版本的修改。

因此,我的问题是如何在从 Ubuntu 存储库安装的同时使用本机 texlive 安装(或可能使用多个)?为了考虑现有安装,手动安装中的哪些步骤需要更改?我如何告诉我的系统我想使用哪个 texlive 发行版?

我认为回答这个问题可能也会回答我所有相关的问题,例如:当前发行版是否仅由当前位于中的可执行文件决定PATH?如果是这样,我如何在发行版之间快速切换?看起来 中的 texlive 二进制文件/usr/bin不是符号链接,而是真正的二进制文件,所以我不确定如何在不删除它们的情况下隐藏它们的存在。还有可能具有挑战性的是:我如何才能找出全部属于 texlive 发行版 (pdftex、pdflatex、luatex、xetex 等) 的二进制文件?更改发行版是否也会自动影响构建系统/编辑器 (如 rubber/latexmk/eclipse/gedit),还是每次都需要手动更改?

答案1

免责声明:我找到了一个解决方案并且它似乎效果很好。

更新:我现在可以确认以下步骤也适用于 Texlive 2015。

总体而言,并行安装似乎比预期的要容易。为了设置本机版本,我执行了以下操作:

  • 下载网络安装程序,并将其解压到一个临时位置(网络安装程序是一个交互式命令行工具,允许在安装过程中修改各种设置)。

  • 运行安装程序便携模式,即install-tl -portable。这将打开安装程序的主菜单。

  • 在此设置菜单中,我只需将TEXDIR(按D)更改为我家内的路径,例如 。~/bin/texliveTEXDIR*也会自动更改其他内容。我没有更改任何其他内容(安装方案设置为方案完整)。总的来说,使用网络安装程序进行安装非常方便。

受到文档部分的启发“Unix 的环境变量”我在安装目录中创建了一个文件setenv.sh,其内容如下:

dir=`cd \`dirname $0\` && pwd`
export PATH="$dir/bin/x86_64-linux:$PATH"
export MANPATH="$dir/texmf-dist/doc/man:$MANPATH"
export INFOPATH="$dir/texmf-dist/doc/info:$INFOPATH"

为了切换到新的 texlive 发行版,我只需使用source此文件即可。到目前为止,看起来现有和新的 texlive 发行版都运行良好。

Kpathsea 似乎是 texlive 中的一个工具,它负责定位发行版的不同部分/目录(Kpathsea路径搜索)。我编写了以下脚本来检查切换到新发行版是否真的会改变所有这些TEXMF*目录:

echo "which kpsexpand: `which kpsexpand`"
echo "TEXMFDIST:       `kpsexpand '$TEXMFDIST'`"
echo "TEXMFLOCAL:      `kpsexpand '$TEXMFLOCAL'`"
echo "TEXMFHOME:       `kpsexpand '$TEXMFHOME'`"
echo "TEXMFCONFIG:     `kpsexpand '$TEXMFCONFIG'`"
echo "TEXMFSYSCONFIG:  `kpsexpand '$TEXMFSYSCONFIG'`"
echo "TEXMFVAR:        `kpsexpand '$TEXMFVAR'`"
echo "TEXMFSYSVAR:     `kpsexpand '$TEXMFSYSVAR'`"
echo "TEXMFCACHE:      `kpsexpand '$TEXMFCACHE'`"

运行此程序而不获取我的setenv.sh文件会产生以下输出:

which kpsexpand: /usr/bin/kpsexpand
TEXMFDIST:       /usr/share/texmf-texlive
TEXMFLOCAL:      /usr/local/share/texmf
TEXMFHOME:       /home/bluenote/texmf
TEXMFCONFIG:     /home/bluenote/.texmf-config
TEXMFSYSCONFIG:  /etc/texmf
TEXMFVAR:        /home/bluenote/.texmf-var
TEXMFSYSVAR:     /var/lib/texmf
TEXMFCACHE:      $TEXMFCACHE

这表明正在使用来自 Ubuntu 存储库的标准 texlive。执行 source 后,输出变为:

which kpsexpand: /home/bluenote/bin/texlive/2013/bin/x86_64-linux/kpsexpand
TEXMFDIST:       /home/bluenote/bin/texlive/2013/texmf-dist
TEXMFLOCAL:      /home/bluenote/bin/texlive/2013/../texmf-local
TEXMFHOME:       /home/bluenote/bin/texlive/2013/../texmf-local
TEXMFCONFIG:     /home/bluenote/bin/texlive/2013/texmf-config
TEXMFSYSCONFIG:  /home/bluenote/bin/texlive/2013/texmf-config
TEXMFVAR:        /home/bluenote/bin/texlive/2013/texmf-var
TEXMFSYSVAR:     /home/bluenote/bin/texlive/2013/texmf-var
TEXMFCACHE:      /home/bluenote/bin/texlive/2013/texmf-var:/home/bluenote/bin/texlive/2013/texmf-var

我不完全理解为什么使用不同的二进制文件会导致所有这些“tex 变量”也要改变。我原本以为二进制文件没有它是不同发行版的一部分的信息,但幸运的是它有!请注意,这些“tex 变量”不是类似 unix 的环境变量(这就是为什么在将它们传递给时使用单引号很重要kpsexpand)。我有点惊讶我不需要通过修改它们中的任何一个export——事实上,它们都是未定义的。但到目前为止一切似乎都正常。

相关内容