Настройка пути 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:
sudo env PATH="$PATH" tlmgr --gui
,- Нажмите "Действия -> Обработка символических ссылок в системных каталогах".
- Нажмите "Обновить символические ссылки".
Использование командной строки (не проверено, так как я использовал графический интерфейс):
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.