การตั้งค่าเส้นทาง TeX Live สำหรับรูท


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แล้วและฉันได้ลองเพิ่มเข้าไปใน/etc/profile.d/zzz-texlive.shแบบที่เฮอร์เบิร์ตแนะนำใน/tex/26624/tlmgr-inaccessible/26626#26626 แต่ก็ไม่ได้ช่วยอะไร


อันที่จริงคำถามนี้ไม่เกี่ยวข้องกับเท็กซ์ แต่ตอบในดังนั้น

คำตอบ:


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" ของคุณไม่ทำงานสำหรับรูท คุณสามารถบังคับให้ 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 ที่คุณอาจต้องการเรียกใช้เป็นรูท
NN

@NN ฉันได้อัปเดตคำตอบพร้อมรายละเอียดเพิ่มเติมแล้ว หวังว่าจะชัดเจนขึ้นในขณะนี้
Riccardo Murri

ไชโย! ขอบคุณคำอธิบายของคุณ
NN

7

หากคุณเพิ่ม symlink คุณไม่จำเป็นต้องสร้างสคริปต์ คุณสามารถทำได้สองวิธี:

ใช้ GUI:

  1. sudo env PATH="$PATH" tlmgr --gui.
  2. คลิก 'การทำงาน -> จัดการ symlink ในระบบ dirs'
  3. คลิก 'อัปเดตลิงก์สัญลักษณ์'

การใช้บรรทัดคำสั่ง (ยังไม่ทดลองเนื่องจากฉันใช้ GUI):

  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"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.