
Ich verwende Lubuntu 11.10. TeXlive 2011 ist bei mir vollständig installiert.
Ich habe gerade das Skript TeXlive 2013 installiert install-tl
. Alles war in Ordnung. Ich habe das kleine Schema gewählt. Kein Problem.
Also lautder Führerwir sollten dies tun:
Nach Abschluss der Installation müssen Sie das Verzeichnis mit den TeX Live-Binärdateien zu Ihrem PATH hinzufügen – außer unter Windows, wo das Installationsprogramm dies übernimmt. Beispiel:
PATH=/usr/local/texlive/2013/bin/i386-linux:$PATH
Verwenden Sie die Syntax für Ihre Shell, Ihr Installationsverzeichnis und Ihren binären Plattformnamen anstelle von i386-linux.
Bis hierhin kein Problem. Ich habe meine geändert $PATH
und bei der Ausführung pdflatex --version
auf dem Terminal bekam ich
pdfTeX 3.1415926-2.5-1.40.14 (TeX Live 2013) kpathsea Version 6.1.1
Ich würde aber gerne wissen, wie ich mit dem letzten Vorschlag umgehen soll:
Wenn Sie auf einem Computer mehrere TeX-Installationen haben, müssen Sie den Suchpfad ändern, um zwischen ihnen zu wechseln.
Wie geht das?
Antwort1
Angenommen, Sie haben drei TeX-Installationen auf Ihrem Rechner, beispielsweise Vanilla TeX Live 2014 und 2015, zusammen mit dem TeX Live von Ubuntu/Debian. Die Binärdateien für die drei Distributionen befinden sich in
/usr/local/texlive/2014/bin/<arch>
/usr/local/texlive/2015/bin/<arch>
/usr/bin
wobei dies <arch>
sein könnte i386-linux
, x86_64-linux
oder eine andere Zeichenfolge relativ zur Hardwarearchitektur Ihres Computers.
Wenn Sie Ihre PATH
Variable mit
export PATH=/usr/local/texlive/2015/bin/i386-linux:$PATH
in Ihrer .profile
Datei oder mit der Methode zum Hinzufügen einer Datei /etc/profile.d
(was ich empfehle) und anschließendem Aufrufen
pdftex --version
aus einer Schale wird zeigen
pdfTeX 3.14159265-2.6-1.40.16 (TeX Live 2015)
kpathsea version 6.2.1
[...]
und Sie sind sicher, dass jedes TeX-Programm den Baum verwendet, der sich in befindet
/usr/local/texlive/2015
Dies liegt an der Funktionsweise der kpathsea
Bibliothek, mit der alle TeX Live-Programme verknüpft sind: Sie legt eine Reihe von Laufzeitumgebungsvariablen basierend auf dem Verzeichnis fest, in dem sich die aufgerufene Binärdatei befindet.
Sie können dies versuchen, indem Sie die folgenden unterschiedlichen Aufrufe von der Shell aus durchführen (verwenden Sie auch hier die Zeichenfolge, die der <arch>
Architektur Ihres Computers entspricht).
kpsewhich plain.tex
/usr/local/texlive/2014/bin/x86_64-linux/kpsewhich plain.tex
/usr/bin/kpsewhich plain.tex
und Sie erhalten drei verschiedene Antworten:
/usr/local/texlive/2015/texmf-dist/tex/plain/base/plain.tex
/usr/local/texlive/2014/texmf-dist/tex/plain/base/plain.tex
/usr/share/texlive/texmf-dist/tex/plain/base/plain.tex
Das Programm kpsewhich
ist die öffentliche Schnittstelle zur kpathsea
Bibliothek.
Sie könnten große Probleme bekommen, wenn Ihr System PATH
nicht so eingestellt ist, dass die GUI-Anwendungen das Vanilla TeX Live-Binärverzeichnis sehen.Vor /usr/bin
. In meinen virtuellen Testmaschinen platziere ich eine Datei namens texlive.sh
in, /etc/profile.d
die
export PATH=/opt/texbin:${PATH}
und ich erstelle einen symbolischen Link /opt/texbin
auf die neueste Version von TeX Live, die ich auf meinem Rechner installiert habe. Dazu mache ich
sudo rm /opt/texbin
sudo ln -s /usr/local/texlive/2015/bin/x86_64-linux /opt/texbin
Auf diese Weise echo $PATH
wird etwas wie
/opt/texbin:...:/usr/bin:...
vorausgesetzt, dass keine spätere Datei in /etc/profile.d
etwas vor einfügt PATH
. Wichtig ist, dass /opt/texbin
vor steht /usr/bin
.
Bei einer neuen Version von TeX Live müssen Sie nur den symbolischen Link zurücksetzen und sonst nichts tun: Die GUI-Programme und die Shell finden die richtigen Binärdateien. Aber wie oben gezeigt, können Sie die Programme immer noch in anderen TeX-Distributionen ausführen.
Denken Sie daran: Wenn Sie ein Vanilla TeX Live installieren,niemalsStellen Sie die Option „Symlink in Systemverzeichnissen erstellen“ auf „Ja“. Achten Sie darauf, dass sie auf „Nein“ eingestellt ist, insbesondere auf GNU/Linux-Systemen, wo bei Upgrades eine von der Distribution bereitgestellte TeX Live übernehmen würde.
Antwort2
Ich schätze die Antwort von @egreg und habe meine eigene Lösung darauf aufgebaut, da ich ein Buch geschrieben habe, das TL 2017 verwendet, aber die Paketwartung mit TL 2019 durchführen wollte.
Da diese Lösung jedoch auf Debian-basierten Systemen aufgrund der Kompilierung nicht gut funktioniert sudo
, habe ich eine Lösung und ein BASH-Skript unter folgender Adresse erstellt:https://github.com/ServusCarolus/tl-switch
Weiter unten finden Sie die README.md-Datei aus dem Repo zum Zeitpunkt dieses Beitrags. Hier ist die Kurzfassung:
Ich habe das Net-Installationsprogramm für TexLive 2019 heruntergeladen und es als Root unter der Standardeinstellung installiert:
/usr/local/texlive/2019
Ich habe dies für Root und für mein normales Benutzerkonto getan:
sudo mkdir -p /opt/tex/root sudo mkdir /opt/tex/charles sudo chown charles:charles /opt/tex/charles
Ich habe Root
.bashrc
und meinen Benutzer.profile
folgendermaßen modifiziert:if [ -d "/opt/tex/$USER/bin" ] ; then PATH="/opt/tex/$USER/bin:$PATH" fi
Ich habe das Skript wie in der README-Datei unten gezeigt auf meinem 32-Bit-Computer und meinem 64-Bit-Computer installiert. Das Skript kann beide binären Verzeichnistypen finden.
Als normaler Benutzer kann ich die TL-Distribution wechseln, ohne Rootberechtigung zu haben, indem ich einfach tl-switch yes
und eingebe tl-switch no
. Wenn neue Versionen erscheinen, kann ich über wechseln tl-switch yes 2020
und so weiter.
Ähnlich wie die Antwort oben erstellt oder zerstört das Skript einen symbolischen Link zu den Vanilla-TL-Distributionen im beschreibbaren Verzeichnis des Benutzers unter. /opt/tex
Dabei führt es jedoch einige Fehlerprüfungen durch und spart Zeit.
Ich werde Root sudo su
und kann auf die gleiche Weise zwischen Distributionen wechseln, Updates und Wartungsarbeiten durchführen tlmgr
, ohne dabei den Kontext meines normalen Benutzers zu ändern. Darüber hinaus lässt sich dieser Ansatz auf so viele Benutzer und TL-Distributionen skalieren, wie ich möchte.
Im Folgenden spreche ich über andere mögliche Lösungen, da unterschiedliche Personen unterschiedliche Anforderungen haben. Aber zumindest könnte dieser Ansatz helfen, den automatischen Fallback auf die Distributionspakete aufgrund von sudo
und zu vermeiden secure_path
. Nochmals vielen Dank an @egreg für die Bereitstellung einer guten Grundlage und eines guten Rahmens.
TL-Schalter
Wechseln Sie den Kontext zwischen dem unter /usr/local/texlive installierten Standard-TeXLive und der Linux-Distro-Version von TeXLive, die auf einem System wie Debian, Ubuntu, Mint usw. installiert ist.
Das Skript und die Installation basieren auf den Antworten unter: Mehrere TeXlive-Installationen
Vorbehalt: Ein Wort zusudo
Selbst wenn man ein Shell-Skript erstellt, um vor dem Befehlssuchpfad /etc/profile.d
einen symbolischen Link zum Vanilla-TL-Pfad einzufügen , folgt der Befehl dem Link standardmäßig nicht./usr/bin
sudo
Das Problem besteht darin, dass Debian und seine Kollegen so gebaut werden, sudo
dass sie verwenden secure_path
. Es gibt verschiedene Workarounds für dieses Problem, je nach den Vorlieben des Benutzers. Siehe:
https://stackoverflow.com/questions/257616/warum-ändert-sudo-den-pfad
Wenn Sie Vanilla TL als Root installieren und dieses Skript verwenden, müssen Sie sudo su
vor dem Ausführen beispielsweise eingeben, um den Kontext zum Superuser zu wechseln tlmgr
. Alternativen sind:
Der am wenigsten invasive Weg, zB:
sudo env PATH=$PATH tlmgr -gui
Benutzen Sie die unten stehende allgemeine Gruppenroute und verwenden Sie nicht
sudo
, sondern legen Sie die Verzeichnisse so fest, dass sie unter vorhanden sind/usr/local/texlive/
, als hätten Sie die Installation über durchgeführtsudo
.Definieren Sie es
sudo
auf verschiedene Weise neu, wie im obigen Link beschrieben. Ihre Abweichung kann abweichen.
Ungeachtet der oben genannten Probleme funktioniert der normale Gebrauch wie erwartet.
Gehen Sie beim Bearbeiten von Dateien vorsichtig vor. Beispielsweise sudo echo "$USER"
sollte auf den normalen Benutzer verweisen, nicht auf root. Das heißt, Sie sollten Abkürzungen wie ~./
in Dateipfaden vermeiden. Sie sollten eindeutige, vollständige Pfade verwenden.
Obwohl die GUI-Schnittstelle von tlmgr
keine Dateien erstellt, die root gehören, wenn sie über ausgeführt wird sudo
, sollte man die Verwendung vieler in den Desktop integrierter GUI-Programme vermeiden, während ausgeführt wird sudo
. Dadurch können Dateien erstellt werden, die root gehören, und zwar im Home-Verzeichnisbaum. Dies kann dazu führen, dass Benutzerprogramme Informationen nicht richtig speichern.
Um einen vollständigen Kontextwechsel durchzuführen, führen Sie je nach Verteilung entweder su
oder aus.sudo su
Exkurs: Eine Gruppe bilden
Eine weitere Möglichkeit, Probleme zu vermeiden, sudo
besteht darin, die TeXLive-Installation für alle TeX-Benutzer beschreibbar zu machen. Das Problem dabei ist, dass Chaos entstehen kann, wenn sich mehrere Benutzer in die Installation einmischen. Der Vollständigkeit halber führen wir Folgendes auf:
sudo addgroup texusers
sudo addgroup "$USER" texusers
sudo mkdir -p /usr/local/texlive
sudo chgrp -R texusers /usr/local/texlive
sudo chmod -R 2775 /usr/local/texlive
Beachten Sie, dass adduser und addgroup Debian-ismen sind; andere Distributionen (auch solche auf Debian-Basis) haben die Befehle useradd
und groupadd
. Informationen zu diesen Befehlen finden Sie in den Manpages. Daher würden Sie stattdessen Folgendes verwenden:
sudo groupadd texusers
sudo usermod -a -G texusers "$USER"
Dann kann man TL als Teil der Texusers-Gruppe installieren. Siehe auch:https://www.tecmint.com/create-a-shared-directory-in-linux/
Schritt 1: Vanilla TL installieren
Informationen zur Installation von Vanilla TL finden Sie unter:https://www.tug.org/texlive/acquire.html
Hinweis: Installieren Sie bei der Installation von Vanilla TL niemals die symbolischen Links.
Schritt 2: Verzeichnisse erstellen
Wir erstellen für jeden Benutzer Pfade zum Erstellen von Verzeichnislinks:
sudo mkdir -p /opt/tex/root
sudo mkdir "/opt/tex/$USER"
sudo chown "$USER":$USER" "/opt/tex/$USER"
Wir wiederholen die letzten beiden Zeilen für jeden Benutzer und ersetzen höchstwahrscheinlich jeden Benutzernamen durch $USER, zB:
sudo mkdir /opt/tex/bob
sudo chown bob:bob /opt/tex/bob
Schritt 3: Profile ändern
Wir fügen diesen Code-Schnipsel in die Verzeichnisse aller Benutzer .profile
und Root-Benutzer ein .bashrc
:
if [ -d "/opt/tex/$USER/bin" ] ; then
PATH="/opt/tex/$USER/bin:$PATH"
fi
Ein anderer Ansatz würde das Snippet in jedermanns packen und dann zu jedermanns .bashrc
hinzufügen . Dadurch würde die Pfadumgebung jedes Mal erneuert, wenn ein Terminal geöffnet wird. Oder man kann Terminals so einstellen, dass eine Login-Shell geöffnet wird.source .bashrc
.profile
Denken Sie beim Bearbeiten des Stammverzeichnisses daran, als Datei .bashrc
zu verwenden sudo su
oder anzugeben . Andernfalls wird stattdessen die Datei des Benutzers verwendet ./root/.bashrc
sudo nano ~/.bashrc
.bashrc
Schritt 4: Installieren Sie das Skript
Wir gehen in das Verzeichnis, in das wir das Repository heruntergeladen oder geklont haben, und suchen das tl-switch
Skript. Dann geben wir ein:
sudo cp ./tl-switch /usr/local/bin
chmod +x /usr/local/bin/tl-switch
Alle Benutzer haben jetzt Zugriff auf die Ausführung des Skripts.
Schritt 5: Neustart
Nach Abschluss des Installationsvorgangs empfiehlt es sich, den Computer vor der Verwendung von TeXLive neu zu starten, damit die Pfade für Root und Benutzer ordnungsgemäß aktualisiert werden können.
Schritt 6: Umschalten von und zu Vanilla TeXLive
Wenn ein Benutzer (oder Root) den Zugriff auf Vanilla TL 2019 aktivieren möchte, muss er nur Folgendes eingeben:
tl-switch yes
Um eine andere Installation unter anzugeben /usr/local/texlive
, verwenden Sie beispielsweise:
tl-switch yes 2018
Um Vanilla TL zu deaktivieren und die Distro-Version zu verwenden, müssen Sie nur Folgendes eingeben:
tl-switch no
Wenn man mitten in einer Sitzung den Kontext ändert, ändern sich die Suchpfade nicht. Eine Möglichkeit, dies (einigermaßen) zu umgehen, wird oben in Schritt 3 erwähnt.
Abschließende Gedanken
Ein unmittelbarer Nachteil dieser Methode ist, dass man beispielsweise sudo su
vor dem Ausführen den Kontext zum Superuser wechseln muss tlmgr
. Zu den Vorteilen gehört, dass Benutzer voneinander isoliert werden und Kontexte ohne umfangreiche Systemänderungen geändert werden können. Um Probleme zu vermeiden, sollten Kontexte jedoch nur vor dem Ab- und erneuten Anmelden geändert werden.