
Estou usando o Lubuntu 11.10. Eu tenho o TeXlive 2011 totalmente instalado.
Acabei de instalar install-tl
o script em execução do TeXlive 2013. Tudo estava bem. Eu escolho o esquema pequeno. Sem problemas.
Então de acordo como guiadevemos fazer isso:
Após a conclusão da instalação, você deve adicionar o diretório dos binários do TeX Live ao seu PATH — exceto no Windows, onde o instalador cuida disso. Por exemplo:
PATH=/usr/local/texlive/2013/bin/i386-linux:$PATH
Use a sintaxe do seu shell, seu diretório de instalação e o nome da sua plataforma binária em vez de i386-linux.
Não há problema até aqui. Troquei o meu $PATH
e ao executar pdflatex --version
no terminal obtive
pdfTeX 3.1415926-2.5-1.40.14 (TeX Live 2013) kpathsea versão 6.1.1
Mas gostaria de saber como cuidar da última sugestão:
Se você tiver múltiplas instalações do TeX em uma determinada máquina, será necessário alterar o caminho de pesquisa para alternar entre elas.
Como fazer isso?
Responder1
Suponha que você tenha três instalações do TeX em sua máquina, digamos vanilla TeX Live 2014 e 2015, junto com o TeX Live fornecido pelo Ubuntu/Debian. Os binários para as três distribuições residirão em
/usr/local/texlive/2014/bin/<arch>
/usr/local/texlive/2015/bin/<arch>
/usr/bin
onde <arch>
pode estar i386-linux
ou x86_64-linux
outra string relativa à arquitetura de hardware da sua máquina.
Se você definir sua PATH
variável com
export PATH=/usr/local/texlive/2015/bin/i386-linux:$PATH
no seu .profile
arquivo ou com o método de adicionar um arquivo /etc/profile.d
(que eu recomendo) e, em seguida, chamar
pdftex --version
de um shell irá mostrar
pdfTeX 3.14159265-2.6-1.40.16 (TeX Live 2015)
kpathsea version 6.2.1
[...]
e você tem certeza de que qualquer programa TeX usará a árvore localizada em
/usr/local/texlive/2015
Isso se deve ao modo como a kpathsea
biblioteca, à qual todos os programas TeX Live estão vinculados, funciona: ela define uma série de variáveis de ambiente de tempo de execução com base no diretório onde o binário chamado reside.
Você pode tentar ver isso fazendo as seguintes chamadas distintas do shell (novamente, use a string <arch>
correspondente à arquitetura da sua máquina)
kpsewhich plain.tex
/usr/local/texlive/2014/bin/x86_64-linux/kpsewhich plain.tex
/usr/bin/kpsewhich plain.tex
e você receberá três respostas diferentes:
/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
O programa kpsewhich
é a interface pública da kpathsea
biblioteca.
Você pode ter grandes problemas se PATH
não estiver configurado de forma que os aplicativos GUI vejam o diretório binário vanilla TeX Liveantes /usr/bin
. Nas minhas máquinas virtuais de teste coloco um arquivo chamado texlive.sh
contendo/etc/profile.d
export PATH=/opt/texbin:${PATH}
e faço um link simbólico /opt/texbin
apontando para o TeX Live mais recente que tenho na máquina, fazendo
sudo rm /opt/texbin
sudo ln -s /usr/local/texlive/2015/bin/x86_64-linux /opt/texbin
Desta forma echo $PATH
mostrará algo como
/opt/texbin:...:/usr/bin:...
desde que nenhum arquivo posterior /etc/profile.d
adicione algo na frente de PATH
. O importante é que isso /opt/texbin
é antes /usr/bin
.
Em uma nova versão do TeX Live você só precisa redefinir o link simbólico e não fazer mais nada: os programas GUI e o shell encontrarão os binários corretos. Mas, como visto acima, você ainda pode executar programas em outras distribuições TeX.
Lembre-se: quando você instala um TeX Live vanilla,nuncadefina a opção “Criar link simbólico nos diretórios do sistema” para “Sim”. Certifique-se de que esteja definido como “Não”, especialmente em sistemas GNU/Linux, onde uma distribuição fornecida pelo TeX Live assumiria o controle em caso de atualizações.
Responder2
Agradeço a resposta do @egreg e baseei minha própria solução nela, pois escrevi um livro que usa o TL 2017, mas queria fazer manutenção de pacotes usando o TL 2019.
Como, no entanto, os sistemas baseados em Debian não funcionarão bem com esta solução devido à forma como são compilados sudo
, criei uma solução e um script BASH em:https://github.com/ServusCarolus/tl-switch
Mais abaixo está o arquivo README.md do repositório desta postagem. Aqui está o TL; DR:
Baixei o instalador de rede do TexLive 2019 e instalei-o como root no padrão:
/usr/local/texlive/2019
Fiz isso para root e para minha conta de usuário normal:
sudo mkdir -p /opt/tex/root sudo mkdir /opt/tex/charles sudo chown charles:charles /opt/tex/charles
Eu modifiquei o root
.bashrc
e meu usuário.profile
assim:if [ -d "/opt/tex/$USER/bin" ] ; then PATH="/opt/tex/$USER/bin:$PATH" fi
Instalei o script conforme mostrado no README abaixo em minha máquina de 32 bits e em minha máquina de 64 bits. O script sabe como encontrar os dois tipos de diretório binário.
Como um usuário normal, posso alternar distribuições TL sem me tornar root simplesmente digitando tl-switch yes
e tl-switch no
. Quando novos lançamentos aparecem, posso mudar tl-switch yes 2020
e assim por diante.
Semelhante à resposta acima, o script cria ou destrói um link simbólico para a(s) distribuição(ões) Vanilla TL no diretório gravável do usuário em /opt/tex
Mas faz alguma verificação de erros no processo e economiza tempo.
Eu me torno root via sudo su
e posso trocar de distribuição da mesma forma, atualizar e fazer manutenção tlmgr
e fazer isso sem alterar o contexto do meu usuário normal. Além disso, essa abordagem pode ser dimensionada para quantos usuários e distribuições TL eu desejar.
Abaixo falo sobre outras soluções possíveis porque pessoas diferentes têm necessidades diferentes. Mas pelo menos essa abordagem pode ajudar a evitar o retorno automático aos pacotes de distribuição devido ao sudo
e secure_path
. Obrigado novamente a @egreg por fornecer uma boa base e estrutura.
interruptor tl
Alterne o contexto entre o Vanilla TeXLive instalado em /usr/local/texlive e a versão de distribuição Linux do TeXLive instalada em um sistema como Debian, Ubuntu, Mint, etc.
O script e a instalação são baseados nas respostas em: Múltiplas instalações do TeXlive
Advertência: uma palavra sobresudo
Mesmo se alguém criar um script de shell para /etc/profile.d
colocar um link simbólico para o caminho Vanilla TL antes /usr/bin
no caminho de pesquisa do comando, o sudo
comando não seguirá o link por padrão.
A questão é que o Debian e seus amigos constroem sudo
para usar o secure_path
. Existem várias soluções alternativas para esse problema, dependendo da preferência do usuário. Ver:
https://stackoverflow.com/questions/257616/why-does-sudo-change-the-path
Ao instalar o Vanilla TL como root e usar este script, deve-se digitar, por exemplo, sudo su
para alternar contextos para o superusuário antes de executar o tlmgr
. As alternativas incluem:
A via menos invasiva, por exemplo:
sudo env PATH=$PATH tlmgr -gui
Use a rota de grupo comum abaixo e não use
sudo
, mas configure os diretórios para existirem/usr/local/texlive/
como faria, se tivesse instalado viasudo
.Redefina
sudo
de várias maneiras, conforme discute o link acima. YMMV.
Independentemente dos problemas acima, o uso normal funciona conforme o esperado.
Tenha cuidado ao editar arquivos. Por exemplo, sudo echo "$USER"
deve apontar para o usuário normal, não para o root. Isso significa que deve-se evitar atalhos como ~./
caminhos de arquivo. Deve-se usar caminhos completos e inequívocos.
Embora a interface GUI do tlmgr
não crie arquivos de propriedade do root quando executada via sudo
, deve-se evitar o uso de muitos programas GUI integrados ao desktop durante a execução do sudo
. Fazer isso pode criar arquivos pertencentes ao root na árvore de diretórios inicial. Isso pode impedir que os programas do usuário salvem as informações de maneira adequada.
Para fazer uma troca completa de contexto, faça su
ou sudo su
, dependendo da distribuição.
Excursão: Faça um Grupo
Outra maneira de evitar problemas sudo
é tornar a instalação do TeXLive gravável para todos os usuários do TeX. O problema aqui é que o caos pode ocorrer se vários usuários interferirem na instalação. Incluímos isso para completar:
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
Observe que adduser e addgroup são ismos Debian; outras distribuições (e também as baseadas em Debian) possuem os comandos useradd
e groupadd
. Consulte as páginas de manual para esses comandos. Assim, você usaria:
sudo groupadd texusers
sudo usermod -a -G texusers "$USER"
Então pode-se instalar o TL como parte do grupo texusers. Veja também:https://www.tecmint.com/create-a-shared-directory-in-linux/
Etapa 1: instalar o Vanilla TL
Para instalar o vanilla TL, consulte:https://www.tug.org/texlive/acquire.html
Nota: Nunca instale os links simbólicos ao instalar o Vanilla TL.
Etapa 2: criar diretórios
Criamos caminhos para cada usuário criar links de diretório:
sudo mkdir -p /opt/tex/root
sudo mkdir "/opt/tex/$USER"
sudo chown "$USER":$USER" "/opt/tex/$USER"
Repetimos as duas linhas finais para cada usuário, provavelmente substituindo cada nome de usuário por $USER, por exemplo:
sudo mkdir /opt/tex/bob
sudo chown bob:bob /opt/tex/bob
Passo 3: Modificando perfis
Colocamos este trecho em cada usuário .profile
e no root .bashrc
:
if [ -d "/opt/tex/$USER/bin" ] ; then
PATH="/opt/tex/$USER/bin:$PATH"
fi
Outra abordagem colocaria o trecho em todos .bashrc
e depois adicionaria source .bashrc
a todos .profile
. Isso renovaria o ambiente do caminho toda vez que alguém abrisse um terminal. Ou pode-se configurar terminais para abrir um shell de login.
Ao editar o root .bashrc
, lembre-se de usar sudo su
ou especificar /root/.bashrc
como arquivo. Caso contrário, sudo nano ~/.bashrc
refere-se ao .bashrc
arquivo do usuário.
Etapa 4: instale o script
Vamos ao diretório onde baixamos ou clonamos o repositório e localizamos o tl-switch
script. Em seguida, digitamos:
sudo cp ./tl-switch /usr/local/bin
chmod +x /usr/local/bin/tl-switch
Todos os usuários agora terão acesso para executar o script.
Etapa 5: reiniciar
Após a conclusão do procedimento de instalação, é bom reiniciar a máquina antes de usar o TeXLive para que os caminhos do root e dos usuários possam ser atualizados corretamente.
Etapa 6: Mudar de e para Vanilla TeXLive
Quando um usuário (ou root) deseja habilitar o acesso ao vanilla TL 2019, basta digitar:
tl-switch yes
Para especificar outra instalação em /usr/local/texlive
, use, por exemplo:
tl-switch yes 2018
Para desabilitar o Vanilla TL e usar a versão distro, basta digitar:
tl-switch no
Se alguém mudar de contexto no meio de uma sessão, os caminhos de pesquisa não mudarão. Uma maneira de resolver isso (de certa forma) é mencionada na Etapa 3 acima.
Pensamentos finais
Uma desvantagem imediata desse método é a necessidade, por exemplo, sudo su
de alternar contextos para o superusuário antes de executar o tlmgr
. Seus benefícios incluem isolar os usuários uns dos outros e permitir a mudança de contexto sem grandes modificações no sistema. No entanto, os contextos só devem ser alterados antes de sair e entrar novamente para evitar problemas.