ผู้ใช้ทั่วไปคาดหวังว่าจะอ่านเอกสารใน / usr / share / doc อย่างไร


43

ฉันเพิ่งเรียนรู้ว่ามีกองเอกสารขนาดใหญ่/usr/share/docมา

ดูเหมือนว่าส่วนใหญ่จะเป็น gzipped ดังนั้นจึงไม่สามารถเข้าถึงได้โดยตรงโดยไม่มีสิทธิ์ระดับผู้ดูแลระบบ:

$ gunzip examples/letter.tex.gz 
gzip: examples/letter.tex: Permission denied

ในขณะที่วิธีการหนึ่งในการแก้ปัญหานี้สำหรับผู้ใช้ทุกคนในการทำซ้ำแต่ละรายการในโฮมไดเร็กตอรี่ของพวกเขาเพื่ออ่าน, การจัดเรียงนี้แทบจะไม่เอื้อต่อการเรียกดูปกติ

คนทั่วไปอ่านเอกสารนี้ได้อย่างไร

ฉันไม่อยากเชื่อว่าผู้ใช้ทั่วไปคาดว่าจะติดตั้งและบำรุงรักษาเว็บเซิร์ฟเวอร์เพียงเพื่ออ่านเอกสารข้อความท้องถิ่น


ชัดเจนแล้วคุณสนใจที่จะจัดการกับเอกสารใด ๆ ในไดเรกทอรี / usr / share / doc หรือเฉพาะ TeX / LaTeX
belacqua

ตกลงอีกหนึ่งคำถาม - คุณจำเป็นต้องประมวลผลไฟล์. tex เป็น dvi หรืออะไรก็ตามหรือแค่ดูซอร์สโค้ด?
belacqua

1
ฉันถามเกี่ยวกับเอกสาร/usr/share/docโดยทั่วไปและด้วยความสนใจเป็นพิเศษในการสังเกตว่าส่วนใหญ่จะถูกเก็บไว้ในรูปแบบการบีบอัด หากมีเอกสารใดที่จัดเก็บเป็น LaTeX ที่ไม่เรียงพิมพ์ฉันยังไม่ได้พบมัน texlive-latex-extra-docที่ผมยกตัวอย่างเช่นโดยเฉพาะอย่างยิ่งอ้างถึงข้างต้นเป็นแม่แบบน้ำยางจากแพคเกจ
ændrük


1
askubuntu.com/questions/24072/… . ฉันคิดว่านี่เป็นทางออกที่ดีที่สุดสำหรับการตั้งค่าทั้งหมดและใช้งานได้หลังจากนั้น
nelaaro

คำตอบ:


6

ส่วนใหญ่ได้รับการพูดและอธิบายอย่างมากโดยjgbelacquaสำหรับใช้ในสถานี เพียงเพิ่มสิ่งนี้สำหรับคนที่อยู่ในผู้จัดการเดสก์ท็อป:

จากเดสก์ท็อปกราฟิก (ที่นี่ GNOME) วิธีที่ง่ายที่สุดในการอ่านเอกสารจาก/usr/share/docคือถึง (ดับเบิล -) คลิกเปิดไฟล์ซิปด้วยเครื่องมือจัดการไฟล์เก็บถาวรมาตรฐานของคุณ (ที่นี่ File Roller) จากที่ที่คุณสามารถ (ดับเบิลคลิก) คลิกเปิดแล้วอ่านใน เครื่องมือแก้ไขมาตรฐานของคุณ (ที่นี่ Gedit) ไม่จำเป็นต้องมีสิทธิ์ในการเขียนตราบใดที่คุณไม่ได้ทำการแตกไฟล์


ทางออกที่ยอดเยี่ยม นี่คือเหตุผลที่ผู้คนใช้สิ่งต่าง ๆ เช่น Ubuntu, Gnome และอื่น ๆ งานประเภทนี้ทำให้ง่ายขึ้น
belacqua

20

มีปัญหาอย่างน้อยสองประเด็นที่นี่:

  1. อ่านไฟล์. gz อย่างไม่เจ็บปวด
  2. สิทธิ์ในไดเรกทอรี
  3. (ไม่บังคับสำหรับไฟล์ tex)

สำหรับ# 1มีแอปพลิเคชั่นจำนวนมากที่จัดการกับไฟล์ gzipped ได้อย่างราบรื่น คู่รักที่คุณสามารถใช้เป็นlessและvim.

 less README.gz 
 vim -R README.Debian.gz
 view Important.bits.gz

viewเป็นนามแฝงvim -Rซึ่งเพิ่งบอกว่าจะเปิดไฟล์อ่านอย่างเดียว

ในสมัยก่อนที่ติดตั้งน้อยลงในระบบของฉันฉันจะใช้gzcatและท่อส่งออกไปยังยูทิลิตี้อื่น เห็นได้ชัดว่ามันถูกเรียกzcatตอนนี้บน Ubuntu เท่านั้น แต่คุณจะใช้มันในลักษณะนี้เช่น:

 /usr/share/doc/xpdf$ zcat changelog.Debian.gz  | more

zcat ยังคงใช้งานได้และการใช้เพื่ออัดเนื้อหาที่บีบอัดบางแห่งอาจมีประโยชน์ในบางกรณี (สำหรับสถานการณ์ที่มีไฟล์. bz2 bzcatจะพร้อมใช้งาน)

สำหรับ# 2ไฟล์ทั้งหมดที่ฉันเห็นภายใต้ / usr / share / doc อยู่ในไดเรกทอรีที่มีสิทธิ์ + rx อื่น ๆ ซึ่งหมายความว่าผู้ใช้ทุกคนสามารถค้นหาไดเรกทอรี (เช่นรายการเนื้อหา) และอ่านไฟล์ภายใน สิ่งที่คุณไม่สามารถทำได้ (เนื่องจากรูทเท่านั้นที่มีสิทธิ์เขียนโดยค่าเริ่มต้น) คือการสร้างไฟล์ เนื่องจากคุณพยายามที่จะคลายซิปลงในไดเรกทอรีนั้นฉันคิดว่ามันให้สิทธิ์แก่คุณที่ถูกปฏิเสธเพราะคุณได้อ่าน แต่ไม่ได้เขียนการอนุญาตตามค่าเริ่มต้น

สำหรับ # 3 ฉันเดาว่าคุณใช้ไฟล์. tex มากกว่าที่คิด แต่นี่เป็นวิธีหนึ่งในการจัดการกับพวกเขาโดยไม่ต้องคัดลอกไปที่บ้านหรือไฟล์ชั่วคราว สำหรับสิ่งนี้คุณจะสร้างไปป์ที่มีชื่อ แต่คุณสามารถนำกลับมาใช้ใหม่ได้สำหรับความต้องการการส่งและการประมวลผล tex อื่น ๆ ของคุณ มันควรเป็นแบบนี้:

  • zcat หรือ gzcat ข้อความ
  • ... และไพพ์ไปยังโปรเซสเซอร์ TeX ของคุณ
  • ... และส่งมันไปที่ Named Pipe ของคุณ (ที่นี่ฉันจะเรียกเขาว่าpipey)
  • ... และจากนั้นในหน้าจอแยกคว้าผลลัพธ์ของคุณจาก pipey
  • ... และส่งไปยังกระบวนการแสดงผล dvi

คุณสามารถแก้ไขขั้นตอนเหล่านี้ได้อย่างชัดเจนหากคุณใช้ยูทิลิตีอื่นหรือดีกว่าที่นี่

ตัวอย่างของฉันจะใช้mkfifoยูทิลิตีเพื่อสร้างไพพ์ที่มีชื่อ, pipey. /usr/share/doc/gdb/refcard.tex.gzแฟ้มเป้าหมายที่จะดำเนินการคือ คุณจะต้องมีสองบรรทัดคำสั่งเชลล์ (ผ่านเทอร์มินัล, Alt + F2 หรืออย่างไรก็ตาม)

คุณจะพิมพ์เทอร์มินัลหนึ่ง:

mkfifo pipey

ตอนนี้คุณมีไพพ์ที่มีชื่อถาวร คุณสามารถใช้ls -lมองมัน

zcat /usr/share/doc/gdb/refcard.tex.gz | tex > pipey

โปรดสังเกตว่าคำสั่งนี้จะไม่ส่งคืนจนกว่าคุณจะทำอะไรกับผลลัพธ์ที่ไปยังไพพ์ที่มีชื่อ

ในเทอร์มินัลสองคุณจะพิมพ์: tex pipey | xdvi

และมันก็ใช้งานได้ดี กระบวนการสามารถปรับแต่งให้ได้ผลลัพธ์ที่สวยกว่า แต่ถ้าคุณกำลังมองหาที่รวดเร็วและไม่ยุ่งเหยิงนั่นเป็นวิธีหนึ่งที่ทำได้


1
ลองดูโซลูชันของฉันฉันคิดว่าคุณจะประทับใจ askubuntu.com/questions/24072/…
nelaaro

1
+1 สำหรับรายละเอียด สำหรับฉันตามที่กล่าวถึงโดย @nelaar ฉันเพิ่งเพิ่มคำสั่งบางอย่างในการ<Directory "/usr/share/doc/">ประกาศไดเรกทอรีApache (โดยปกติจะอยู่ใน/etc/apache2/sites-enabled/000-default) และฉันเชื่อว่าเบราว์เซอร์จะถูกจัดการด้วยตัวเอง ( AddEncoding x-gzip gz tgzและAddType text/plain .gz)
ลบ

แม้ว่านี่จะเป็นบทเรียนที่ยอดเยี่ยมและมีรายละเอียดเกี่ยวกับคำสั่งที่มีประโยชน์มากมาย แต่นี่ก็เป็นวิธีแก้ปัญหาที่ดีสำหรับผู้ใช้ทั่วไปที่คาดว่าจะอ่านเอกสารของระบบ สำหรับ Ubuntu นั้นyelpหรือ Debian's dwwwของGnomeเป็นวิธีที่ไร้ความเจ็บปวดและง่ายที่สุด คำตอบของฉันอธิบายหลัง: askubuntu.com/a/52419/11015
MestreLion

1
@MestreLion A 'ผู้ใช้ทั่วไป' ในความรู้สึกที่เหมือนจริงที่สุดไม่รู้ว่าไฟล์ยังอยู่ที่นั่น ผมคิดว่าวิธีการแก้ปัญหาที่ง่ายที่สุดคือคนที่ผมกล่าวถึงครั้งแรก - lessใช้ นี่เป็นข้อได้เปรียบเพิ่มเติมของการติดตั้งโดยค่าเริ่มต้นในระบบ * modern ทุกระบบ สำหรับผู้ใช้ที่รู้ว่ามีไฟล์อยู่ที่นั่นและต้องการอ้างถึงพวกเขามากกว่าสองครั้งต่อปีให้ทำการติดตั้งบางสิ่งบางอย่างเช่น dwww ฟังเหมือนโซลูชันที่ยอดเยี่ยม ตัวของฉันเองฉันอาจจำ dwww ไม่ได้ แต่ฉันจะจำคำสั่งพื้นฐานเช่น 'less' หรือเป็น Takkat กล่าวว่า Nautilus / fileroller / etc ..
belacqua

13

อาจจะสายเกินไปที่จะตอบ แต่ฉันพบวิธีแก้ปัญหาที่ดีที่สุด (ใช้งานง่ายและครบถ้วน)

  • ติดตั้งdwww ติดตั้ง dwww

ระบบ Linux ทั่วไปมีเอกสารประกอบในหลายรูปแบบ (หน้าแบบแมนนวล, ไฟล์ข้อมูล, READMEs และอื่น ๆ ) dwww ทำให้สามารถเข้าถึงสิ่งเหล่านี้ผ่านทางอินเทอร์เฟซเดียวกันซึ่งเป็นเบราว์เซอร์ WWW ทำให้ง่ายต่อการใช้เอกสาร

dwww เป็นเว็บอินเตอร์เฟสสำหรับเอกสารออนไลน์ทั้งหมดในระบบ Debian มันสร้างบางหน้าเว็บที่แสดงรายการเอกสารที่ติดตั้งทั้งหมดและแปลงเอกสารทั้งหมดเป็น HTML การแปลงเสร็จสิ้นเมื่อผู้ใช้ร้องขอเอกสาร

  • เปิดใช้งานโมดูล CGI ซึ่งไม่ได้เปิดใช้งานตามค่าเริ่มต้นใน Ubuntu / Apache ล่าสุด:

    sudo a2enmod cgi
    sudo service apache2 restart
    
  • เปิดเบราว์เซอร์ของคุณและชี้ไปที่: http: // localhost / dwww /

  • ทำ!

ทั้งหมดของinfoหน้าmanเพจ/usr/share/docไฟล์และรายละเอียดแพคเกจในที่เดียว! เว็บไซต์เอกสารส่วนตัวของคุณ!


ใช้วิธีนี้ มันปวดน้อยกว่าเต็ม และคุณสามารถค้นหาสิ่งต่าง ๆ ได้อย่างรวดเร็วในขณะที่คุณกำลังมี google เหมือนช่องค้นหา
ลูกศิษย์อยากรู้อยากเห็น

1
สำหรับผู้เข้าชมในอนาคตโปรดทราบว่าต้องเปิดใช้งาน CGI และเริ่มบริการ Apache ใหม่: askubuntu.com/questions/581118/…
Sergiy Kolodyazhnyy

7

gunzip file.gzความพยายามที่จะยกเลิกการบีบอัดfile.gzเพื่อลบfile file.gzนั่นคือเหตุผลที่คุณได้รับ "อนุญาตปฏิเสธข้อผิดพลาด" /usr/share/docคุณไม่ได้รับอนุญาตให้เขียนใน เพื่อให้ได้เนื้อหาของแฟ้มการใช้งานหรือgunzip -c file.gzzcat file.gz

อ่าน textfiles gzip zlessบีบอัดที่สามารถทำได้ด้วย ตามที่ชื่ออาจแนะนำเป็นเพียงlessแต่สำหรับไฟล์ที่บีบอัด gzip

ตัวอย่างการใช้งาน:

zless /usr/share/doc/bash/NEWS.gz

.gzต่อท้ายสามารถละเว้นเช่นกัน:

zless /usr/share/doc/bash/NEWS

ในระบบล่าสุดฉันไม่ได้ระบุzlessเช่นเดียวกับที่lessจะจัดการมันโดยอัตโนมัติ
belacqua

1
@ belacqua จริงฉันทำเช่นเดียวกันทุกวันนี้ ผมคิดว่ามันมีสิ่งที่จะทำอย่างไรกับการLESSOPENและLESSCLOSEตัวแปรสภาพแวดล้อม
Lekensteyn

5

ก่อนติดตั้ง apache2

sudo apt-get install apache2 apache2-doc  

apache2-docเป็นกรณีพิเศษที่นี่ ช่วยให้คุณเรียกดูเอกสาร/usr/share/doc/ของคุณผ่านเว็บเบราว์เซอร์ของคุณ http://localhost/doc/ไปๆมาๆ

สิ่งนี้ไม่ได้ผล คุณต้องเปลี่ยนการกำหนดค่าของ Apache เพื่อให้มันขยายขนาดและแสดงไฟล์ * .gz เป็นข้อความธรรมดา

ฉันโพสต์บน Stack Overflowเพื่อรับวิธีการใช้ Apache เพื่อแสดงเนื้อหาของเอกสาร * .gz ใน/usr/share/doc/ไดเรกทอรี นี่คือสิ่งที่โพสต์เป็นวิธีแก้ปัญหาที่เป็นไปได้

นี่คือคำแนะนำสั้น ๆ เหล่านั้น มันบอก Apache ว่าจะจัดการกับไฟล์. gz อย่างไรเพื่อประมวลผลเป็นข้อความธรรมดาและส่งไปยังเบราว์เซอร์เป็นข้อความธรรมดา

sudo a2enmod headers   
sudo a2enmod deflate  
gksu gedit /etc/apache2/sites-enabled/000-default 

ไปที่ด้านล่างของไฟล์และค้นหาส่วนด้วยAlias /doc/ "/usr/share/doc/" และเปลี่ยนให้เป็นดังนี้

Alias /doc/ "/usr/share/doc/"
<Directory /usr/share/doc>
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128

    AddEncoding gzip gz
    <FilesMatch "\.gz$">
      ForceType text/plain
      Header set Content-Encoding: gzip
    </FilesMatch>
</Directory>   

จากนั้นรีสตาร์ท Apache:

sudo apache2ctl restart   

1
ฉันไม่แน่ใจเหมือนกันว่านี่เป็นวิธีแก้ปัญหาที่แตกต่างกันหรือไม่ ฉันเพิ่งเพิ่มลงAddEncoding x-gzip gz tgz AddType text/plain .gzใน<Directory "/usr/share/doc/">รายการของฉันและฉันเชื่อว่าการบีบอัดได้รับการจัดการในด้านลูกค้า
ลบ

@ ถึงกระนั้นก็ไม่ได้เป็นทางออกที่แตกต่างนี่คือสิ่งที่ฉันทำ
nelaaro

ในขณะที่ฉันคิดว่านี่เป็นทางออกที่ดีที่สุด (ไม่มีอะไรสามารถเอาชนะการใช้เบราว์เซอร์เพื่อเรียกดูเอกสาร) มันเป็น overkill ที่สำคัญในการติดตั้งเว็บเซิร์ฟเวอร์ทั้งหมดเพื่อสิ่งนั้น ฉันหวังว่า Linux ( yelpอาจจะ) มีวิธีนอกกรอบในการอ่านเอกสาร
MestreLion

ปรับปรุง: โซลูชันทำงานได้อย่างสมบูรณ์แบบ !!! mod "deflate" ถูกเปิดใช้งานแล้วออกจากกล่องและฉันเปลี่ยนบรรทัดสุดท้ายเป็นsudo service apache2 restartเพื่อการทำให้เป็นมาตรฐาน สุดท้าย แต่ไม่ท้ายสุดการอ่านต้องระวังการลาก "/": มันต้องเป็นlocalhost / doc / , localhost / docจะไม่ทำงาน
MestreLion

-3

คุณไม่ควรอ่านไฟล์. tex! มันอยู่ในรูปแบบที่มนุษย์สามารถอ่านได้ แต่มันถูกออกแบบมาให้ประมวลผลก่อนที่จะอ่านใหม่ คุณสามารถใช้เครื่องมือ tex2pdf เพื่อแปลงเป็น. pdf


1
1) ฉันต้องการอ่านที่มาของ LaTeX 2) pdflatexคำสั่ง 3) สิ่งนี้เป็นเรื่องเกี่ยวกับปัญหาที่ต้องมีการบีบอัดไฟล์ก่อนที่จะอ่าน
ændrük
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.