जड़ के लिए TeX लाइव पथ सेट करना


20

मैंने TeX Live 2011 वेनिला स्थापित किया है और मुझे TeX Live पथ को रूट के लिए (Ubuntu 11.10 में) सेट करने में समस्या है।

समस्या यह है कि जब मैं दौड़ता sudo tlmgrहूँ तो मुझे मिलता है:

sudo: tlmgr: command not found

गैर-रूट के लिए पथ को ठीक करने के लिए इसे जोड़ने के लिए पर्याप्त था

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

को /etc/profile

मैंने इसी लाइन को जोड़ने की कोशिश की है /root/.bashrcऔर मैंने इसे /tex/26624/tlmgr-inaccessible/26626#26626/etc/profile.d/zzz-texlive.sh में सुझाने की तरह जोड़ने की कोशिश भी की है । यह मदद नहीं करता है।


वास्तव में यह सवाल TeX से असंबंधित है, लेकिन SO पर उत्तर दिया गया है

जवाबों:


22

त्वरित सुधार: चूंकि आपके पास पहले से ही $PATHअपने वातावरण में सही /etc/profileबदलाव है ( संशोधनों के माध्यम से ) जिनका आप उपयोग कर सकते हैं:

sudo env PATH="$PATH" tlmgr

असल में, सूडो$PATH एक "ज्ञात अच्छे" के मूल्य (पूरे वातावरण, वास्तव में) को रीसेट करता है , और इस प्रकार आपके स्थानीय वातावरण में किए गए किसी भी बदलाव को अनदेखा कर रहा है। Env सेट उपरोक्त आदेश PATHके वातावरण में चर tlmgrवह निष्पादित तो यह चलाता है के मूल्य के साथ $PATHआप कमांड लाइन पर निर्दिष्ट करें।

प्रत्येक TeXlive कमांड के लिए वह सब टाइप करने से बचने के लिए, आप अपने शेल में एक उपनाम को परिभाषित कर सकते हैं : .bashrcअपने घर में फ़ाइल में निम्न पंक्ति जोड़ें :

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

और फिर आप इसे बस कमांड प्रॉम्प्ट पर जारी कर सकते हैं:

psudo tlmgr

इसके अलावा, sudo कमांड को निष्पादित करने के लिए एक लॉगिन शेल नहीं चलाता है, यही वजह है कि आपके "profile.d" ट्रिक्स रूट के लिए काम नहीं करते थे। आप सूडो को एक शेल में एक कमांड निष्पादित करने के लिए मजबूर कर सकते हैं , जो समान प्रभाव को प्राप्त करने का एक वैकल्पिक तरीका है:

sudo sh -l -c tlmgr

फिर से आप इसे छोटा करने के लिए शेल कमांड उपनाम को परिभाषित कर सकते हैं :

alias shsudo='sudo sh -l -c'

जिसका उपयोग निम्न प्रकार किया जा सकता है:

shsudo tlmgr

क्या आपको $PATHअपने वातावरण में सेट करने का पूरा विवरण सहित मन है? इसके अलावा, मुझे envTeX लाइव पथ में प्रत्येक कमांड के लिए करना है जिसे मैं सक्षम करना चाहता हूं sudo? हमें / usr / लोकल / टेक्सलाइव / 2011 / बिन / x86_64-linux में बहुत सारे बायनेरिज़ हैं जो आप रूट के रूप में चलाना चाहते हैं।
एनएन

@ एनएन मैंने अधिक विवरण के साथ उत्तर को अपडेट किया है; उम्मीद है कि अब यह स्पष्ट है।
रिकार्डो मुर्री

चीयर्स! अपने स्पष्टीकरण की सराहना करें।
एनएन

7

यदि आप सिमिलिंक जोड़ते हैं तो आपको एक स्क्रिप्ट बनाने की आवश्यकता नहीं होगी। आप इसे दो तरीके से कर सकते हैं:

GUI का उपयोग करना:

  1. sudo env PATH="$PATH" tlmgr --gui
  2. 'कार्य -> ​​सिस्टम डेयर में हैंडल सिम्बलिंक' पर क्लिक करें।
  3. 'प्रतीकात्मक लिंक अपडेट करें' पर क्लिक करें।

कमांड लाइन का उपयोग करना (अप्रयुक्त, जब से मैंने GUI का उपयोग किया है):

  1. sudo env PATH="$PATH" tlmgr path add। ( tlmgr प्रलेखन पर अधिक जानकारी प्राप्त करें )

3

मेरे लिए क्या काम किया: मैंने tlmgrगुई मोड में शुरुआत की

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

और फिर तीसरे मेनू में अंतिम आइटम को चुना, लेकिन एक (मेरे जर्मन मेनू में, वह मेनू "अक्सेनटेन" (क्रियाएं?) और आइटम "वेरवाल्टुंग डेर सिम्बिसिचेन लिंक्स" (प्रतीकात्मक लिंक का प्रशासन?) आगामी संवाद खिड़की में है। बटन पर क्लिक किया "प्रतीक चिह्न erneuern" (प्रतीकात्मक लिंक नवीनीकृत?)

sudo tlmgr --OPTIONS

समस्याओं के बिना काम करता है। मुझे यकीन है कि ऐसा करने का एक कमांड लाइन तरीका भी है;)


1

उपयोगकर्ता को आदेश का उपयोग करके संशोधित फ़ाइल में पास करने के $PATHलिए और निम्नलिखित पंक्ति जोड़ें:sudo/etc/sudoersvisudo

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 को स्थापित और प्रबंधित करना अच्छा नहीं है। इसके बजाय, /usr/local/texliveनिर्देशिका बनाएँ , जैसे, sudo का उपयोग कर, और फिर उस उपयोगकर्ता के लिए स्वामित्व बदलें जो TeX Live का प्रबंधन करेगा। उसके बाद, TeX Live को "रूट" विशेषाधिकारों का उपयोग किए बिना स्थापित और अद्यतन किया जा सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.