我最近了解到,有大量的文档/usr/share/doc
。
其中大部分似乎都经过了 gzip 压缩,因此没有管理权限无法直接访问:
$ gunzip examples/letter.tex.gz
gzip: examples/letter.tex: Permission denied
虽然解决这个问题的一个方法是让每个用户复制他们的主目录中的每个项目以便阅读,但这种安排似乎不利于常规浏览。
普通人如何阅读该文档?
我并不认为典型用户仅仅为了阅读本地文本文档就需要安装和维护网络服务器。
答案1
这里至少有两个问题:
- 轻松读取 .gz 文件
- 目录的权限
- (对于 tex 文件可选)
为了#1,有许多应用程序可以无缝处理 gzip 文件。您可以使用的几个是less
和vim
。
less README.gz
vim -R README.Debian.gz
view Important.bits.gz
view
是 的别名vim -R
,仅表示以只读方式打开文件。
以前,在我的系统上安装 less 之前,我会使用gzcat
并将输出通过管道传输到另一个实用程序。显然,zcat
现在它只在 Ubuntu 上被调用,但你可以像这样使用它,例如:
/usr/share/doc/xpdf$ zcat changelog.Debian.gz | more
zcat 仍然可用,在某些情况下,使用它来将压缩内容传输到某处会很有用。(对于 .bz2 文件的情况,bzcat
可用。)
为了#2,我在 /usr/share/doc 下看到的所有文件都位于具有 other+rx 权限的目录中,这意味着所有用户都可以搜索目录(例如,列出内容)并读取其中的文件。您无法执行的操作(因为默认情况下只有 root 具有写入权限)是创建文件。由于您尝试解压到该目录,我想它会拒绝您的权限,因为默认情况下您具有读取权限但没有写入权限。
对于 #3,我猜你使用 .tex 文件比我多。但这里有一种方法可以处理它们,而无需复制到主目录或临时文件。为此,你将创建一个命名管道,但你可以将其重用于其他 tex 管道和处理需求。它应该是这样的:
- zcat 或 gzcat 文本
- ...并将其传送到你的 TeX 处理器
- ...并将其发送到你的命名管道(这里,我会打电话给他
pipey
) - ...然后在单独的屏幕中获取来自 pipey 的输出
- ...并将其发送到 dvi 显示进程。
如果您使用与此处不同或更好的实用程序,您显然可以改变这些步骤。
我的示例将使用mkfifo
实用程序创建命名管道pipey
。要处理的目标文件是/usr/share/doc/gdb/refcard.tex.gz
。您需要两个可用的 shell 命令行(通过终端、Alt+F2 或其他方式)。
您将在终端一中输入:
mkfifo pipey
现在您有一个持久命名管道。您可以使用ls -l
它来查看它。
zcat /usr/share/doc/gdb/refcard.tex.gz | tex > pipey
请注意,直到您对进入命名管道的输出执行某些操作后,此命令才会返回。
现在,在第二个终端中,您将输入:tex pipey | xdvi
而且它确实有效(至少在这里有效)。这个过程可以改进,以获得更漂亮的输出,但如果您正在寻找快速且相对无混乱的方法,那么这是一种方法。
答案2
也许回答已经太晚了,但我已经找到了最好的解决方案(既易于使用又完整)
- 安装dww
典型的 Linux 系统具有多种格式的文档(手册页、信息文件、README 等)。dwww 使得可以通过同一界面(WWW 浏览器)访问所有这些文档成为可能。这使得使用文档更加容易。
dwww 是 Debian 系统上所有在线文档的 Web 界面。它创建一些列出所有已安装文档的网页,并将所有文档转换为 HTML。转换在用户请求文档时完成。
启用 CGI 模块,该模块在较新的 Ubuntu/Apache 中不再默认启用:
sudo a2enmod cgi sudo service apache2 restart
打开浏览器并指向:http://localhost/dwww/
完毕!
您的所有info
页面、man
网页、/usr/share/doc
文件和软件包描述集中于一处!您的个人文档网站!
答案3
首先安装 apache2
sudo apt-get install apache2 apache2-doc
apache2-doc
是此处的特例。它允许您/usr/share/doc/
通过 Web 浏览器浏览文档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
答案4
gunzip file.gz
尝试解压file.gz
到file
,删除file.gz
。这就是为什么您会收到“权限被拒绝”错误,因为您无权写入/usr/share/doc
。要获取文件的内容,请使用gunzip -c file.gz
或zcat file.gz
。
可以使用 来读取 gzip 压缩的文本文件zless
。顾名思义,它就是less
,但适用于 gzip 压缩文件。
使用示例:
zless /usr/share/doc/bash/NEWS.gz
后缀.gz
也可以省略:
zless /usr/share/doc/bash/NEWS