Ustawianie ścieżki TeX Live dla roota

20

Zainstalowałem wanilkę TeX Live 2011 i mam problem z ustawieniem ścieżki TeX Live dla roota (w Ubuntu 11.10).

Problem polega na tym, że po uruchomieniu sudo tlmgrdostaję:

sudo: tlmgr: command not found

Aby naprawić ścieżkę dla użytkownika innego niż root, wystarczyło dodać

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

do /etc/profile.

Próbowałem dodać tę samą linię, /root/.bashrca także próbowałem dodać ją, /etc/profile.d/zzz-texlive.shtak jak sugeruje Herbert w /tex/26624/tlmgr-inaccessible/26626#26626, ale to nie pomaga.

NN
źródło
Rzeczywiście to pytanie nie ma związku z TeX, ale na SO zostało udzielone odpowiedzi .

Odpowiedzi:

22

Szybka poprawka: ponieważ masz już prawidłowy $PATHzestaw w swoim środowisku (poprzez /etc/profilemodyfikacje), możesz użyć:

sudo env PATH="$PATH" tlmgr

Zasadniczo sudo resetuje wartość $PATH(całe środowisko) do „znanego dobrego”, a tym samym ignoruje wszelkie zmiany, które wprowadziłeś w swoim lokalnym środowisku. Powyższe polecenie env ustawia PATHzmienną w środowisku, w którym tlmgrjest wykonywane, więc działa z wartością $PATHpodaną w wierszu poleceń.

Aby uniknąć wpisywania tego wszystkiego dla każdej komendy TeXlive, możesz zdefiniować alias w swojej powłoce: dodaj następujący wiersz do .bashrcpliku w domu:

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

a następnie możesz po prostu wydać to w wierszu polecenia:

psudo tlmgr

Ponadto sudo nie uruchamia powłoki logowania w celu wykonania polecenia, dlatego sztuczki „profile.d” nie działały dla użytkownika root. Możesz zmusić sudo do wykonania polecenia w powłoce, co jest alternatywnym sposobem uzyskania tego samego efektu:

sudo sh -l -c tlmgr

Ponownie możesz zdefiniować alias polecenia powłoki, aby to skrócić:

alias shsudo='sudo sh -l -c'

które mogą być użyte jako:

shsudo tlmgr
Riccardo Murri
źródło
Czy masz coś przeciwko, aby podać pełny opis ustawień $PATHw moim środowisku? A więc muszę zrobić envdla każdego polecenia na ścieżce TeX Live, dla którego chcę włączyć sudo? W katalogu / usr / local / texlive / 2011 / bin / x86_64-linux znajduje się całkiem sporo plików binarnych, które możesz chcieć uruchomić jako root.
NN
@NN Zaktualizowałem odpowiedź o więcej szczegółów; mam nadzieję, że teraz jest jaśniej.
Riccardo Murri,
Twoje zdrowie! Doceń swoje wyjaśnienia.
NN
7

Jeśli dodasz dowiązania symboliczne, nie będziesz musiał tworzyć skryptu. Możesz to zrobić na dwa sposoby:

Korzystanie z GUI:

  1. sudo env PATH="$PATH" tlmgr --gui.
  2. Kliknij „Działania -> Obsługuj dowiązania symboliczne w katalogach systemowych”.
  3. Kliknij „Aktualizuj linki symboliczne”.

Za pomocą wiersza polecenia (nieprzetestowane, ponieważ użyłem GUI):

  1. sudo env PATH="$PATH" tlmgr path add. (znajdź więcej informacji w dokumentacji tlmgr )
Chris
źródło
3

Co mi zadziałało: zacząłem tlmgrw trybie GUI

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

a następnie w trzecim menu wybrałem ostatnią pozycję oprócz jednej (w moim niemieckim menu, tj. menu „Aktionen” (akcje?) i pozycji „Verwaltung der symbolischen Links” (administracja symbolicznymi linkami?). W kolejnym oknie dialogowym I kliknąłem przycisk „Symbolische Links erneuern” (odnawiasz linki symboliczne?). Teraz

sudo tlmgr --OPTIONS

działa bez problemów. Jestem pewien, że można to zrobić również za pomocą wiersza poleceń;)

Thomas Fehige
źródło
1

Aby przekazać użytkownika $PATHdo sudozmodyfikowanego /etc/sudoerspliku za pomocą visudopolecenia i dodaj następujący wiersz:

Defaults        exempt_group=<group that I belong to>

Teraz mogę wykonać (np.)

sudo tlmgr update all

lub

sudo texhash

i wszystko działa idealnie.

Byłbym bardzo wdzięczny za wszelkie uwagi dotyczące tego podejścia.

Andrej
źródło
1

Naprawdę nie musisz dodawać katalogu tlmgrdo ścieżki. Proste, szybkie rozwiązanie polega na użyciu whichnp .:

sudo $(which tlmgr) update --list
użytkownik652427
źródło
0

Nie jest dobrą praktyką instalowanie TeX Live i zarządzanie nim przy użyciu uprawnień „root”. Zamiast tego utwórz /usr/local/texlivekatalog, np. Używając sudo, a następnie zmień właściciela na użytkownika, który będzie zarządzał TeX Live. Następnie TeX Live można zainstalować i zaktualizować bez korzystania z uprawnień „root”.

Jerzy
źródło