Настройка пути TeX Live для root

20

Я установил TeX Live 2011 vanilla, и у меня возникли проблемы с настройкой пути 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как Герберт предлагает в /tex/26624/tlmgr-inaccessible/26626#26626, но это не помогает.

Н.Н.
источник
На самом деле этот вопрос не имеет отношения к TeX, но ответил на SO .

Ответы:

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
Риккардо Мурри
источник
Вы не возражаете, включая полное описание того, как установить $PATHв моей среде? Кроме того, так что я должен сделать envдля каждой команды в пути TeX Live, который я хочу включить sudo? В / usr / local / texlive / 2011 / bin / x86_64-linux довольно много двоичных файлов, которые вы можете запускать с правами root.
NN
@NN Я обновил ответ с более подробной информацией; надеюсь, теперь стало понятнее.
Риккардо Мурри
Ура! Ценю ваши объяснения.
NN
7

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

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

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

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

  1. sudo env PATH="$PATH" tlmgr path add, (найти дополнительную информацию в документации по tlmgr )
Крис
источник
3

Что сработало для меня: я начал tlmgrв графическом режиме с

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

а затем в третьем меню выберите последний пункт, кроме одного (в моем немецком меню, то есть меню "Актионен" (действия?) и пункт "Verwaltung der symbolischen Links" (управление символическими ссылками?). В следующем диалоговом окне I нажал кнопку «Symbolische Links erneuern» (обновить символические ссылки?).

sudo tlmgr --OPTIONS

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

Томас Фехиг
источник
1

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

Defaults        exempt_group=<group that I belong to>

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

sudo tlmgr update all

или

sudo texhash

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

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

Andrej
источник
1

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

sudo $(which tlmgr) update --list
user652427
источник
0

Не рекомендуется устанавливать TeX Live и управлять им, используя привилегии «root». Вместо этого создайте /usr/local/texliveкаталог, например, с помощью sudo, а затем измените владельца на пользователя, который будет управлять TeX Live. После этого TeX Live можно установить и обновить без использования привилегий «root».

Джордж
источник