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

Я установил 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 как Герберт предлагает в https://tex.stackexchange.com/questions/26624/tlmgr-inaccessible/26626 но это не помогает.

8 ответов

Решение

Быстрое исправление: так как у вас уже есть правильный $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

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

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

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

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

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

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

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

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

sudo tlmgr --OPTIONS

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

Я создал свою учетную запись только для того, чтобы рассказать, как это работает для меня. Я не эксперт по Linux, но просмотрев МНОГО форумов с такой же проблемой и связанными с ней проблемами, я нашел это решение, надеюсь помочь. Я использую Ubuntu 20.04 прямо сейчас. Для меня невероятно, что нет более простого варианта установки в обоих случаях texlive и tlmgr:

Шаги:

  • Я загрузил ISO-образ texlive (перед этим необходимо установить Perl).

  • Смонтируйте образ, а затем откройте терминал в смонтированном каталоге:

            `sudo perl install-tl` 
    
  • Я выбрал полную установку.

  • экспорт PATH после установки:

export INFOPATH=/usr/local/texlive/2021/texmf-dist/doc/info:$INFOPATH; export INFOPATH

export MANPATH=/usr/local/texlive/2021/texmf-dist/doc/man:$MANPATH; export MANPATH

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

  • Тогда у меня была та же проблема, я имею в виду: когда я бежал sudo tlmgr: command not found.

Решение:

  • Указав весь PATH для sudo tlmgr, чтобы обновить его:

    sudo /usr/local/texlive/2021/bin/x86_64-linux/tlmgr update --self

  • Затем запустите графический пользовательский интерфейс, чтобы обновить все пакеты и «обработать символические ссылки в системных каталогах» в кнопке «Действие».

    sudo /usr/local/texlive/2021/bin/x86_64-linux/tlmgr --gui

Передать пользователю $PATH в sudo Я модифицировал /etc/sudoers файл с использованием visudo введите команду и добавьте следующую строку:

Defaults        exempt_group=<group that I belong to>

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

sudo tlmgr update all

или же

sudo texhash

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

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

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

sudo $(which tlmgr) update --list

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

Как показано в /questions/623723/nastrojka-puti-tex-live-dlya-root/623730#623730, вам нужно запуститьsudo tlmgr --guiи делайActions>Handle symlinks in system dirs>Update symbolic links. Если суперпользователь не может найти tlmgr, вы можете временно отредактировать каталог tlmgr вsecure_pathс помощьюsudo visudoили, предпочтительно,sudo env PATH="$PATH" tlmgr --gui. Это позволит убедитьсяsudo tlmgrиtlmgrукажите на ту же версию tlmgr.

Другие вопросы по тегам