Настройка TeX Live path для root

20

Я установил ваучер TeX Live 2011 , и у меня возникли проблемы с настройкой пути TeX Live для root (в Ubuntu 11.10) .

Проблема заключается в том, что когда я запускаю sudo tlmgr , я получаю:

sudo: tlmgr: command not found

Чтобы исправить путь для не-root, достаточно было добавить

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

в /etc/profile .

Я попытался добавить эту же строку в /root/.bashrc , и я также попытался добавить ее в /etc/profile.d/zzz-texlive.sh , как показано Гербертом в Ссылка , но это не помогает.

    
задан N.N. 14.10.2011 в 08:26
источник

5 ответов

22

Быстрое исправление: поскольку у вас уже есть правильный $PATH , установленный в вашем (с помощью модификаций /etc/profile ) вы можете использовать:

sudo env PATH="$PATH" tlmgr

В принципе, sudo сбрасывает стоимость $PATH (вся среда, действительно) до «хорошо известной», и таким образом игнорируя любые изменения, внесенные вами в вашу локальную среду. env добавляет переменную PATH в среде tlmgr , которую он выполняет, поэтому он запускается с значение $PATH , указанное в командной строке.

Чтобы избежать ввода всего того, что для каждой команды TeXlive, вы можете определить псевдоним в вашей оболочке: добавьте следующую строку в файл .bashrc в ваш дом:

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

, а затем вы можете просто выполнить это в командной строке:

psudo tlmgr

Кроме того, sudo не запускает чтобы выполнить команду, поэтому ваш "profile.d" трюки не работают для root. Вы можете заставить sudo , чтобы выполнить команду в оболочка, которая является альтернативным способом достижения такого же эффекта:

sudo sh -l -c tlmgr

Снова вы можете определить псевдоним командной оболочки , чтобы сократить это:

alias shsudo='sudo sh -l -c'

, который можно использовать как:

shsudo tlmgr
    
ответ дан Riccardo Murri 15.10.2011 в 10:17
источник
7

Если вы добавите символические ссылки, вам не нужно будет создавать сценарий. Вы можете сделать это двумя способами:

Использование GUI:

  1. sudo env PATH="$PATH" tlmgr --gui .
  2. Нажмите «Действия» - > Обрабатывать символические ссылки в системных каталогах.
  3. Нажмите «Обновить символические ссылки».

Использование командной строки (untested, так как я использовал GUI):

  1. sudo env PATH="$PATH" tlmgr path add. (найти дополнительную информацию в ответ дан Chris 27.07.2012 в 22:40
3

Что сработало для меня: я начал tlmgr в режиме gui с помощью

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

, а затем в третьем меню выбрали последний элемент, но один (в моем немецком меню, это меню «Aktionen» (действия?) и пункт «Verwaltung der symbolischen Links» (администрирование символических ссылок?). диалоговое окно Я нажал кнопку «Symbolische Links erneuern» (обновить символические ссылки?). Теперь

sudo tlmgr --OPTIONS

работает без проблем. Я уверен, что есть также способ командной строки:)

    
ответ дан Thomas Fehige 16.05.2012 в 13:39
1

Чтобы передать% пользователя $PATH в sudo пользователя, я изменил файл /etc/sudoers с помощью команды visudo и добавлю следующую строку:

Defaults        exempt_group=<group that I belong to>

Теперь я могу выполнить (например.)

sudo tlmgr update all

или

sudo texhash

и все работает отлично.

Я был бы очень признателен за любые комментарии к этому подходу.

    
ответ дан Andrej 21.11.2011 в 00:36
1

Вам действительно не нужно добавлять каталог пути tlmgr к пути. Простое быстрое решение использует which , например:

sudo $(which tlmgr) update --list
    
ответ дан user652427 08.02.2017 в 23:04