Налаштування 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як Герберт запропонував у /tex/26624/tlmgr-inaccessible/26626#26626, але це не допомагає.


Дійсно, це питання не пов'язане з TeX, але на нього відповіли ТАК .

Відповіді:


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

Якщо ви додасте символьні посилання, вам не потрібно буде робити сценарій. Це можна зробити двома способами:

Використання графічного інтерфейсу:

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

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

  1. sudo env PATH="$PATH" tlmgr path add. (більше інформації можна знайти в документації на tlmgr )

3

Що для мене спрацювало: я почав tlmgrу режимі gui з

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

а потім у третьому меню обрали останній пункт, але один (у моєму німецькому меню, це меню "Aktionen" (дії?) та пункт "Verwaltung der symbolischen Links" (адміністрування символічних посилань?). У наступному вікні діалогу я натиснув кнопку "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

і все працює ідеально.

Я дуже вдячний за будь-які коментарі щодо цього підходу.


1

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

sudo $(which tlmgr) update --list

0

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.