Đặt đường dẫn TeX Live cho root


20

Tôi đã cài đặt TeX Live 2011 vanilla và tôi gặp sự cố khi đặt đường dẫn TeX Live cho root (trong Ubuntu 11.10).

Vấn đề là khi tôi chạy sudo tlmgrtôi nhận được:

sudo: tlmgr: command not found

Để sửa đường dẫn cho không root, chỉ cần thêm

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

để /etc/profile.

Tôi đã thử thêm dòng này vào /root/.bashrcvà tôi cũng đã thử thêm nó vào /etc/profile.d/zzz-texlive.shnhư gợi ý của Herbert trong /tex/26624/tlmgr-inaccessible/26626#26626 nhưng không được.


Quả thực câu hỏi này không liên quan đến TeX, nhưng đã trả lời trên SO .

Câu trả lời:


22

Khắc phục nhanh: vì bạn đã có bộ chính xác $PATHtrong môi trường của mình (thông qua các /etc/profilesửa đổi), bạn có thể sử dụng:

sudo env PATH="$PATH" tlmgr

Về cơ bản, sudo đặt lại giá trị của $PATH(toàn bộ môi trường, thực sự) thành một "hàng hóa đã biết", và do đó bỏ qua mọi thay đổi bạn đã thực hiện đối với môi trường địa phương. Lệnh env ở trên thiết lập PATHbiến trong môi trường của tlmgrnó thực thi, vì vậy nó chạy với giá trị $PATHbạn chỉ định trên dòng lệnh.

Để tránh nhập tất cả các lệnh cho mỗi lệnh TeXlive, bạn có thể xác định bí danh trong trình bao của mình: thêm dòng sau vào .bashrctệp trong nhà của bạn:

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

và sau đó bạn có thể chỉ cần đưa ra điều này tại một dấu nhắc lệnh:

psudo tlmgr

Ngoài ra, sudo không chạy shell đăng nhập để thực thi lệnh, đó là lý do tại sao các thủ thuật "profile.d" của bạn không hoạt động cho root. Bạn có thể buộc sudo thực thi một lệnh trong shell, đây là một cách khác để đạt được hiệu quả tương tự:

sudo sh -l -c tlmgr

Một lần nữa, bạn có thể định nghĩa một bí danh lệnh shell để rút ngắn điều này:

alias shsudo='sudo sh -l -c'

có thể được sử dụng như:

shsudo tlmgr

Bạn có phiền bao gồm một mô tả đầy đủ về cách thiết lập $PATHtrong môi trường của tôi không? Ngoài ra, vì vậy tôi phải làm envcho mọi lệnh trong đường dẫn TeX Live mà tôi muốn kích hoạt sudo? Có khá nhiều nhị phân trong / usr / local / texlive / 2011 / bin / x86_64-linux mà bạn có thể muốn chạy với quyền root.
NN

@NN Tôi đã cập nhật câu trả lời với nhiều chi tiết hơn; hy vọng nó rõ ràng hơn bây giờ.
Riccardo Murri

Chúc mừng! Đánh giá cao lời giải thích của bạn.
NN

7

Nếu bạn thêm các liên kết tượng trưng thì bạn sẽ không cần phải tạo một tập lệnh. Bạn có thể làm điều này theo hai cách:

Sử dụng GUI:

  1. sudo env PATH="$PATH" tlmgr --gui.
  2. Nhấp vào 'Hành động -> Xử lý các liên kết tượng trưng trong thư mục hệ thống'.
  3. Nhấp vào 'Cập nhật các liên kết tượng trưng'.

Sử dụng dòng lệnh (chưa được kiểm tra, vì tôi đã sử dụng GUI):

  1. sudo env PATH="$PATH" tlmgr path add. (tìm thêm thông tin tại tài liệu tlmgr )

3

Điều gì làm việc cho tôi: Tôi bắt đầu tlmgrtrong chế độ gui với

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

và sau đó trong menu thứ ba đã chọn mục cuối cùng nhưng một (trong menu tiếng Đức của tôi, đó là menu "Aktionen" (hành động?) và mục "Verwaltung der Symbolischen Links" (quản trị các liên kết tượng trưng?). nhấp vào nút "Symbolische Links erneuern" (gia hạn các liên kết tượng trưng?). Bây giờ

sudo tlmgr --OPTIONS

hoạt động mà không có vấn đề. Tôi chắc chắn cũng có một cách dòng lệnh để làm điều này;)


1

Để chuyển tập tin người dùng $PATHsang sudotôi đã sửa đổi /etc/sudoerstệp bằng visudolệnh và thêm dòng sau:

Defaults        exempt_group=<group that I belong to>

Bây giờ tôi có thể thực thi (ví dụ)

sudo tlmgr update all

hoặc là

sudo texhash

và mọi thứ hoạt động hoàn hảo.

Tôi sẽ đánh giá rất cao bất kỳ ý kiến ​​về phương pháp này.


1

Bạn thực sự không phải thêm thư mục của tlmgrđường dẫn. Một giải pháp nhanh chóng đơn giản đang sử dụng which, ví dụ:

sudo $(which tlmgr) update --list

0

Việc cài đặt và quản lý TeX Live bằng các đặc quyền "root" là không tốt. Thay vào đó, hãy tạo /usr/local/texlivethư mục, ví dụ: sử dụng sudo và sau đó thay đổi quyền sở hữu cho người dùng sẽ quản lý TeX Live. Sau đó, TeX Live có thể được cài đặt và cập nhật mà không cần sử dụng đặc quyền "root".

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.