Mengatur jalur TeX Live untuk root

20

Saya telah menginstal vanilla TeX Live 2011 dan saya kesulitan mengatur jalur TeX Live untuk root (di Ubuntu 11.10).

Masalahnya adalah ketika saya menjalankan sudo tlmgrsaya mendapatkan:

sudo: tlmgr: command not found

Untuk memperbaiki jalur untuk non-root, itu sudah cukup untuk ditambahkan

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

untuk /etc/profile.

Saya telah mencoba menambahkan baris yang sama /root/.bashrcdan saya juga mencoba menambahkannya /etc/profile.d/zzz-texlive.shseperti yang disarankan Herbert di /tex/26624/tlmgr-inaccessible/26626#26626 tetapi tidak membantu.

NN
sumber
Memang pertanyaan ini tidak terkait dengan TeX, tetapi dijawab pada SO .

Jawaban:

22

Perbaikan cepat: karena Anda sudah memiliki $PATHset yang benar di lingkungan Anda (melalui /etc/profilemodifikasi) Anda dapat menggunakan:

sudo env PATH="$PATH" tlmgr

Pada dasarnya, sudo menyetel ulang nilai $PATH(seluruh lingkungan, tentu saja) ke yang "dikenal baik", dan karenanya mengabaikan segala perubahan yang Anda lakukan pada lingkungan lokal Anda. The env Perintah di atas menetapkan PATHvariabel dalam lingkungan yang tlmgrdijalankan, sehingga berjalan dengan nilai $PATHyang Anda tentukan pada baris perintah.

Untuk menghindari mengetik semua itu untuk setiap perintah TeXlive, Anda dapat menentukan alias di shell Anda: tambahkan baris berikut ke .bashrcfile di rumah Anda:

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

dan kemudian Anda cukup mengeluarkan ini di prompt perintah:

psudo tlmgr

Selain itu, sudo tidak menjalankan shell login untuk menjalankan perintah, itulah sebabnya trik "profil.d" Anda tidak berhasil untuk root. Anda bisa memaksa sudo untuk mengeksekusi perintah di shell, yang merupakan cara alternatif untuk mencapai efek yang sama:

sudo sh -l -c tlmgr

Sekali lagi Anda dapat mendefinisikan alias perintah shell untuk mempersingkat ini:

alias shsudo='sudo sh -l -c'

yang dapat digunakan sebagai:

shsudo tlmgr
Riccardo Murri
sumber
Apakah Anda keberatan menyertakan deskripsi lengkap tentang cara mengatur $PATHdi lingkungan saya? Juga, jadi saya harus melakukan envuntuk setiap perintah di jalur TeX Live yang ingin saya aktifkan sudo? Ada cukup banyak binari di / usr / local / texlive / 2011 / bin / x86_64-linux yang mungkin ingin Anda jalankan sebagai root.
NN
@NN Saya sudah memperbarui jawabannya dengan lebih detail; harap ini lebih jelas sekarang.
Riccardo Murri
Tepuk tangan! Hargai penjelasan Anda.
NN
7

Jika Anda menambahkan symlink maka Anda tidak perlu membuat skrip. Anda dapat melakukan ini dengan dua cara:

Menggunakan GUI:

  1. sudo env PATH="$PATH" tlmgr --gui.
  2. Klik 'Tindakan -> Tangani symlinks di dirs sistem'.
  3. Klik 'Perbarui tautan simbolis'.

Menggunakan baris perintah (belum diuji, karena saya menggunakan GUI):

  1. sudo env PATH="$PATH" tlmgr path add. (temukan informasi lebih lanjut di dokumentasi tlmgr )
Chris
sumber
3

Apa yang berhasil untuk saya: Saya mulai tlmgrdalam mode gui dengan

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

dan kemudian di menu ketiga pilih item terakhir tetapi satu (di menu Jerman saya, yaitu menu "Aktionen" (tindakan?) dan item "Verwaltung der symbolischen Links" (administrasi tautan simbolik?). Di jendela dialog berikutnya saya klik tombol "Symbolische Links erneuern" (perpanjang tautan simbolik?). Sekarang

sudo tlmgr --OPTIONS

bekerja tanpa masalah. Saya yakin ada juga cara baris perintah untuk melakukan ini;)

Thomas Fehige
sumber
1

Untuk meneruskan pengguna $PATHke file yang sudosaya modifikasi /etc/sudoersmenggunakan visudoperintah dan tambahkan baris berikut:

Defaults        exempt_group=<group that I belong to>

Sekarang saya bisa menjalankan (mis.)

sudo tlmgr update all

atau

sudo texhash

dan semuanya bekerja dengan sempurna.

Saya akan sangat menghargai komentar tentang pendekatan ini.

Andrej
sumber
1

Anda benar-benar tidak perlu menambahkan direktori tlmgrke jalan. Solusi cepat sederhana digunakan which, misalnya:

sudo $(which tlmgr) update --list
pengguna652427
sumber
0

Ini bukan praktik yang baik untuk menginstal dan mengelola TeX Live menggunakan hak "root". Sebagai gantinya, buat /usr/local/texlivedirektori, misalnya, menggunakan sudo, dan kemudian ubah kepemilikan kepada pengguna yang akan mengelola TeX Live. Setelah itu, TeX Live dapat diinstal dan diperbarui tanpa menggunakan hak istimewa "root".

George
sumber