Configurando o caminho do TeX Live para root

20

Instalei o TeX Live 2011 vanilla e tenho problemas para definir o caminho do TeX Live para raiz (no Ubuntu 11.10).

O problema é que, quando corro sudo tlmgr, recebo:

sudo: tlmgr: command not found

Para corrigir o caminho para não-root, bastava adicionar

PATH=/usr/local/texlive/2011/bin/x86_64-linux:$PATH

para /etc/profile.

Tentei adicionar essa mesma linha a /root/.bashrce também tentei adicioná-la /etc/profile.d/zzz-texlive.shcomo sugere Herbert em /tex/26624/tlmgr-inaccessible/26626#26626, mas não ajuda.

NN
fonte
De fato, esta questão não está relacionada ao TeX, mas respondeu ao SO .

Respostas:

22

Solução rápida: como você já possui o $PATHconjunto correto em seu ambiente (através das /etc/profilemodificações), pode usar:

sudo env PATH="$PATH" tlmgr

Basicamente, o sudo redefine o valor de $PATH(todo o ambiente, de fato) para um "bem conhecido" e, portanto, ignora todas as alterações feitas no ambiente local. O comando env acima define a PATHvariável no ambiente de tlmgrsua execução, portanto, é executada com o valor $PATHespecificado na linha de comando.

Para evitar digitar tudo isso para cada comando do TeXlive, você pode definir um alias no seu shell: adicione a seguinte linha ao .bashrcarquivo em sua casa:

alias psudo='sudo env PATH="$PATH"'

e então você pode simplesmente emitir isso em um prompt de comando:

psudo tlmgr

Além disso, o sudo não executa um shell de login para executar o comando, e é por isso que seus truques "profile.d" não funcionaram para o root. Você pode forçar o sudo a executar um comando em um shell, que é uma maneira alternativa de obter o mesmo efeito:

sudo sh -l -c tlmgr

Novamente, você pode definir um alias de comando do shell para encurtar isso:

alias shsudo='sudo sh -l -c'

que pode ser usado como:

shsudo tlmgr
Riccardo Murri
fonte
Você se importa em incluir uma descrição completa de como definir $PATHno meu ambiente? Além disso, tenho de fazer envtodos os comandos no caminho do TeX Live que desejo ativar sudo? Existem muitos binários em / usr / local / texlive / 2011 / bin / x86_64-linux que você pode querer executar como root.
NN
@NN Atualizei a resposta com mais detalhes; espero que esteja mais claro agora.
Riccardo Murri 15/10
Felicidades! Aprecie suas explicações.
NN
7

Se você adicionar os links simbólicos, não precisará criar um script. Você pode fazer isso de duas maneiras:

Usando a GUI:

  1. sudo env PATH="$PATH" tlmgr --gui.
  2. Clique em 'Ações -> Manipular links simbólicos nos diretórios do sistema'.
  3. Clique em 'Atualizar links simbólicos'.

Usando a linha de comando (não testada, desde que usei a GUI):

  1. sudo env PATH="$PATH" tlmgr path add. (encontre mais informações na documentação do tlmgr )
Chris
fonte
3

O que funcionou para mim: comecei tlmgrno modo GUI com

sudo env PATH="$PATH" tlmgr --gui

e, em seguida, no terceiro menu, escolha o último item, exceto um (no meu menu alemão, que é o menu "Aktionen" (ações?) e o item "Verwaltung der symbolischen Links" (administração de links simbólicos?). clicou no botão "Symbolische Links erneuern" (renovar links simbólicos?).

sudo tlmgr --OPTIONS

funciona sem problemas. Tenho certeza de que também há uma maneira de fazer isso na linha de comando;)

Thomas Fehige
fonte
1

Para passar o arquivo $PATHpara o usuário, sudomodifiquei /etc/sudoersusando o visudocomando e adicione a seguinte linha:

Defaults        exempt_group=<group that I belong to>

Agora eu posso executar (por exemplo)

sudo tlmgr update all

ou

sudo texhash

e tudo funciona perfeito.

Eu gostaria muito de receber comentários sobre essa abordagem.

Andrej
fonte
1

Você realmente não precisa adicionar o diretório de tlmgrao caminho. Uma solução rápida e simples está usando which, por exemplo:

sudo $(which tlmgr) update --list
user652427
fonte
0

Não é uma boa prática instalar e gerenciar o TeX Live usando privilégios de "root". Em vez disso, crie o /usr/local/texlivediretório, por exemplo, usando sudo e altere a propriedade para o usuário que gerenciará o TeX Live. Depois disso, o TeX Live pode ser instalado e atualizado sem o uso de privilégios "root".

George
fonte