Establecer la ruta de TeX Live para root


20

He instalado TeX Live 2011 vanilla y tengo problemas para configurar la ruta de TeX Live para root (en Ubuntu 11.10).

El problema es que cuando corro sudo tlmgrme sale:

sudo: tlmgr: command not found

Para arreglar la ruta para no root, fue suficiente agregar

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

a /etc/profile.

Intenté agregar esta misma línea /root/.bashrcy también traté de agregarla a Me /etc/profile.d/zzz-texlive.shgusta como sugiere Herbert en /tex/26624/tlmgr-inaccessible/26626#26626 pero no ayuda.


De hecho, esta pregunta no está relacionada con TeX, pero se respondió en SO .

Respuestas:


22

Solución rápida: dado que ya tiene el $PATHconjunto correcto en su entorno (a través de las /etc/profilemodificaciones) puede usar:

sudo env PATH="$PATH" tlmgr

Básicamente, sudo restablece el valor de $PATH(todo el entorno, de hecho) a un "bien conocido", y por lo tanto ignora cualquier cambio que haya realizado en su entorno local. El comando env anterior establece la PATHvariable en el entorno de tlmgrejecución, por lo que se ejecuta con el valor $PATHque especifique en la línea de comando.

Para evitar escribir todo eso para cada comando TeXlive, puede definir un alias en su shell: agregue la siguiente línea al .bashrcarchivo en su hogar:

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

y luego simplemente puede emitir esto en un símbolo del sistema:

psudo tlmgr

Además, sudo no ejecuta un shell de inicio de sesión para ejecutar el comando, razón por la cual sus trucos "profile.d" no funcionaron para root. Puede forzar a sudo a ejecutar un comando en un shell, que es una forma alternativa de lograr el mismo efecto:

sudo sh -l -c tlmgr

De nuevo, puede definir un alias de comando de shell para acortar esto:

alias shsudo='sudo sh -l -c'

que se puede usar como:

shsudo tlmgr

¿Te importaría incluir una descripción completa de cómo configurar $PATHmi entorno? Además, ¿tengo que hacer envpara cada comando en la ruta de TeX Live que deseo habilitar sudo? Hay muchos binarios en / usr / local / texlive / 2011 / bin / x86_64-linux que es posible que desee ejecutar como root.
NN

@NN He actualizado la respuesta con más detalles; Espero que sea más claro ahora.
Riccardo Murri

¡Salud! Agradezco tus explicaciones.
NN

7

Si agrega los enlaces simbólicos, no necesitará crear un script. Puedes hacer esto de dos maneras:

Usando la GUI:

  1. sudo env PATH="$PATH" tlmgr --gui.
  2. Haga clic en 'Acciones -> Manejar enlaces simbólicos en directorios del sistema'.
  3. Haga clic en 'Actualizar enlaces simbólicos'.

Usando la línea de comando (no probado, ya que usé la GUI):

  1. sudo env PATH="$PATH" tlmgr path add. (encuentre más información en la documentación de tlmgr )

3

Lo que funcionó para mí: comencé tlmgren modo gui con

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

y luego, en el tercer menú, elegí el último elemento, pero uno (en mi menú alemán, que es el menú "Aktionen" (acciones?) y el elemento "Verwaltung der symbolischen Links" (¿administración de enlaces simbólicos?). hizo clic en el botón "Symbolische Links erneuern" (¿renovar enlaces simbólicos?). Ahora

sudo tlmgr --OPTIONS

Funciona sin problemas. Estoy seguro de que también hay una forma de línea de comando para hacerlo;)


1

Para pasar el usuario $PATHal archivo sudomodificado /etc/sudoers, use el visudocomando y agregue la siguiente línea:

Defaults        exempt_group=<group that I belong to>

Ahora puedo ejecutar (por ejemplo)

sudo tlmgr update all

o

sudo texhash

Y todo funciona perfecto.

Agradecería mucho cualquier comentario sobre este enfoque.


1

Realmente no tiene que agregar el directorio de tlmgra la ruta. Se está utilizando una solución rápida simple which, por ejemplo:

sudo $(which tlmgr) update --list

0

No es una buena práctica instalar y administrar TeX Live usando privilegios de "root". En su lugar, cree el /usr/local/texlivedirectorio, por ejemplo, usando sudo, y luego cambie la propiedad al usuario que administrará TeX Live. Después de eso, TeX Live se puede instalar y actualizar sin usar privilegios "root".

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.