web-dev-qa-db-ja.com

ネイティブのtexliveをrepoバージョンと並行してインストールします

私はまだUbuntu 12.04を実行していますが、最新のtexliveを 手動でインストール したいと思います。手動インストールの最初のステップの1つは、texliveの既存のインストールを削除することです。ただし、大量のLaTeXドキュメントがあり、バージョン固有の変更に依存する場合があるため、Ubuntuリポジトリからデフォルトのtexliveインストールを保持したいと思います。

したがって、私の質問は、Ubuntuリポジトリからのインストールと並行してネイティブのtexliveインストール(または可能な複数)を使用する方法ですか?既存のインストールを説明するために、手動インストールのどのステップが変更されますか?また、どのtexliveディストリビューションを使用するかをシステムに伝えるにはどうすればよいですか?

この質問に答えると、たとえば、次のように、関連するすべての質問にもおそらく答えると思います。現在の分布は、現在PATHにある実行可能ファイルによってのみ決定されますか?もしそうなら、どうすればディストリビューションをすばやく切り替えることができますか? /usr/binのtexliveバイナリはシンボリックリンクではなく実際のバイナリのように見えるため、削除せずにそれらの存在を非表示にする方法がわかりません。そして、何が難しいかもしれません:texliveディストリビューション(pdftex、pdflatex、luatex、xetex、...)に属するallバイナリをどのようにして見つけることができますか?ディストリビューションを変更すると、ビルドシステム/エディター(rubber/latexmk/Eclipse/geditなど)にも自動的に影響しますか、それとも毎回手動で変更する必要がありますか?

3
bluenote10

免責事項:解決策を見つけましたが、うまく機能しているようです。

更新:以下の手順が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ディストリビューションに切り替えるには、このファイルをsourceするだけです。これまでのところ、すべてが既存のtexliveディストリビューションと新しいtexliveディストリビューションの両方でうまく機能しているようです。

Kpathseaはtexliveのツールのようで、分布のさまざまな部分/ディレクトリを検索します( Kpathsea path search )。新しいディストリビューションに切り替えると、それらすべての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を使用してそれらを変更する必要がなかったことに少し驚いています-実際、それらはすべて未定義です。しかし、これまでのところすべてが機能しているようです。

2
bluenote10