与repo版本并行安装本机texlive

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

因此,我的问题是如何使用本地texlive安装(或可能的多个)与Ubuntu存储库的安装并行? 手动安装中的哪些步骤会更改以考虑现有安装? 我如何告诉我的系统我想使用哪种texlive发行版?

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

免责声明:我找到了解决方案,似乎运作良好。

更新:我现在可以确认以下程序与Texlive 2015一样有效。

一般来说,使用并行安装看起来比预期更容易。 要设置本机版本,我执行了以下操作:

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

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

  • 在这个设置菜单中,我只是将TEXDIR (通过按D )更改为我家中的路径,例如~/bin/texlive 。 这也会自动更改其他TEXDIR* 。 我没有改变任何其他东西(安装方案设置为scheme-full)。 总的来说,使用网络安装程序进行安装非常方便。

受文档部分“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发行版,我只需要获取此文件。 到目前为止,看起来现有的和新的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正在使用中。 采购后,输出变为:

 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修改它们 – 事实上,它们都是未定义的。 但到目前为止,一切似乎都在起作用。