问题描述
我最近了解到/usr/share/doc
中有大量文档。
似乎很多都是gzip压缩,因此没有管理权限就无法直接访问它:
$ gunzip examples/letter.tex.gz
gzip: examples/letter.tex: Permission denied
虽然对此的一个解决方案是每个用户复制其主目录中的每个项目只是为了阅读它,但这种安排似乎不利于定期浏览。
普通人如何阅读此文档?
我不倾向于认为典型用户只需阅读本地文本文档即可安装和维护Web服务器。
最佳解决方案
jgbelacqua用于终端,大多数已经说过并且很好地解释了。只需为桌面管理员上的人添加此内容:
从图形桌面(此处为GNOME),从/usr/share/doc
读取文档的最简单方法是(双击)使用标准存档管理器(此处为File Roller)打开压缩文件,您可以从中(双击)打开并阅读它们在你的标准编辑器(这里是Gedit)。只要不解压缩文件,就不需要写入权限。
次佳解决方案
这里至少有两个问题:
-
无痛地阅读.gz文件
-
目录的权限
-
(tex文件可选)
对于#1,有许多应用程序可以无缝地处理gzip压缩文件。您可以使用的是less
和vim
。
less README.gz
vim -R README.Debian.gz
view Important.bits.gz
view
是vim -R
的别名,它只是打开文件read-only。
在过去,在我的系统上安装less之前,我会使用gzcat
并将输出传输到另一个实用程序。显然,它现在只在Ubuntu上被称为zcat
,但你会像这样使用它,例如:
/usr/share/doc/xpdf$ zcat changelog.Debian.gz | more
zcat仍然可用,并且在某些情况下使用它来管道压缩内容在某些地方可能很有用。 (对于.bz2文件的情况,可以使用bzcat
。)
对于#2,我在/usr /share /doc下看到的所有文件都在具有其他+ rx权限的目录中,这意味着所有用户都可以搜索目录(例如,列表内容)并读取其中的文件。你不能做什么(因为只有root默认具有写权限),就是创建文件。因为您正在尝试解压缩到该目录,我想它会拒绝您的权限,因为您已经读取但默认情况下没有写入权限。
对于#3,我猜你比我更多地使用.tex文件。但这是处理它们而不复制到home或临时文件的一种方法。为此,您将创建一个命名管道,但您可以将其重用于其他tex管道和处理需求。它应该是这样的:
-
zcat或gzcat文本
-
…并管道到您的TeX处理器
-
…并将其发送到您的命名管道(在这里,我称之为
pipey
) -
…然后在一个单独的屏幕中抓住你的输出
-
…并将其发送到dvi显示过程。
如果您使用与此处不同或更好的实用程序,您显然可以更改这些步骤。
我的示例将使用mkfifo
实用程序创建命名管道pipey
。要处理的目标文件是/usr/share/doc/gdb/refcard.tex.gz
。您需要两个shell命令行(通过终端,Alt + F2,或者然而)。
您将键入终端1:
mkfifo pipey
您现在拥有一个持久命名管道。您可以使用ls -l
来查看它。
zcat /usr/share/doc/gdb/refcard.tex.gz | tex > pipey
请注意,在对输入到命名管道的输出执行某些操作之前,此命令不会返回。
现在,在终端2中,您将输入:tex pipey | xdvi
它很有效(好吧,无论如何)。这个过程可以进行优化以获得更漂亮的输出,但如果您正在寻找快速且相对较强的mess-free,那么这就是一种方法。
第三种解决方案
也许现在回答已经太晚了,但我找到了最好的解决方案(易用性和完整性)
-
安装dwww
A typical Linux system has documentation in many formats (manual pages, Info files, READMEs, and so on). dwww makes it possible to access all of these via the same interface, a WWW browser. This makes it easier to use the documentation.
dwww is a web interface to all on-line documentation on a Debian system. It builds some web pages that list all installed documents, and converts all documents to HTML. The conversion is done when the user requests the document.
-
打开浏览器并指向:http://localhost/dwww/
-
完成!
您的所有info
页面,man
页面,/usr/share/doc
文件和包装描述都在一个地方!您的个人文档网站!
第四种方案
gunzip file.gz
尝试将file.gz
解压缩至file
,除去file.gz
。这就是为什么你得到”Permission denied”错误,你不能用/usr/share/doc
写。要获取文件的内容,请使用gunzip -c file.gz
或zcat file.gz
。
读取gzip-compressed文本文件可以使用zless
完成。正如它的名字所暗示的那样,它只是less
,但是对于gzip-compressed文件。
用法示例:
zless /usr/share/doc/bash/NEWS.gz
.gz
后缀也可以省略:
zless /usr/share/doc/bash/NEWS
第五种方案
首先安装apache2
sudo apt-get install apache2 apache2-doc
apache2-doc
就是这里的特例。它允许您通过Web浏览器浏览文档/usr/share/doc/
。来自http://localhost/doc/
。
但这并不合适。您需要更改Apache的配置以使其解压缩并将* .gz文件显示为纯文本。
I posted on Stack Overflow获取一种方法,使用Apache在/usr/share/doc/
目录中显示* .gz文档的内容。这是作为可能的解决方案发布的内容。
这些是简要说明。它告诉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