典型用户如何阅读 /usr/share/doc 中的文档?

ænd*_*rük 49 usability documentation

我最近了解到/usr/share/doc.

似乎大部分内容都是 gzip 压缩的,因此没有管理权限就无法直接访问:

$ gunzip examples/letter.tex.gz 
gzip: examples/letter.tex: Permission denied
Run Code Online (Sandbox Code Playgroud)

虽然对此的一种解决方案是让每个用户复制其主目录中的每个项目只是为了阅读它,但这种安排似乎几乎不利于常规浏览。

普通人如何阅读这份文档?

我不倾向于相信典型用户只是为了阅读本地文本文档而安装和维护 Web 服务器。

bel*_*qua 23

这里至少有两个问题:

  1. 轻松读取 .gz 文件
  2. 目录权限
  3. (对于 tex 文件是可选的)

对于#1,有许多应用程序可以无缝处理 gzipped 文件。您可以使用的一对是lessvim

 less README.gz 
 vim -R README.Debian.gz
 view Important.bits.gz
Run Code Online (Sandbox Code Playgroud)

view是 的别名vim -R,它只是说以只读方式打开文件。

在过去,在我的系统上安装 less 之前,我会使用gzcat输出并将其通过管道传输到另一个实用程序。显然,它现在只zcat在 Ubuntu 上被调用,但你会像这样使用它,例如:

 /usr/share/doc/xpdf$ zcat changelog.Debian.gz  | more
Run Code Online (Sandbox Code Playgroud)

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

它有效(好吧,无论如何都在这里)。可以改进该过程以获得更漂亮的输出,但如果您正在寻找快速且相对无杂乱的方法,这是一种方法。


Mes*_*ion 16

也许回答为时已晚,但我找到了最佳解决方案(易用性和完整性)

典型的 Linux 系统具有多种格式的文档(手册页、信息文件、自述文件等)。dwww 可以通过相同的界面(一个 WWW 浏览器)访问所有这些。这使得使用文档更容易。

dwww 是 Debian 系统上所有在线文档的 Web 界面。它构建一些列出所有已安装文档的网页,并将所有文档转换为 HTML。当用户请求文档时完成转换。

您的所有info页面、man页面、/usr/share/doc文件包裹描述都集中在一个地方!您的个人文档网站!

  • 非常感谢。这是我去年在 Linux 上得到的最有用的提示。像这样浏览所有本地文档的能力会让许多人对系统中已有的内容感到震惊。 (2认同)

Tak*_*kat 8

jgbelacqua已经说过并很好地解释了在终端中使用的大部分内容。只需为桌面管理器上的人添加这个:

从图形桌面(此处为 GNOME)读取文档的最简单方法/usr/share/doc是(双击)使用标准存档管理器(此处为 File Roller)打开压缩文件,您可以(双击)打开并在其中阅读你的标准编辑器(这里是 Gedit)。只要您不解压缩文件,就不需要写权限。


nel*_*aro 8

首先安装apache2

sudo apt-get install apache2 apache2-doc  
Run Code Online (Sandbox Code Playgroud)

apache2-doc是这里的特例。它允许您/usr/share/doc/通过 Web 浏览器浏览文档。从http://localhost/doc/.

但这并不正确。您需要更改 Apache 的配置以使其解压缩并将 *.gz 文件显示为纯文本。

我在 Stack Overflow发帖,获得了一种使用 Apache 显示/usr/share/doc/目录中 *.gz 文档内容的方法。这是发布的可能解决方案。

以下是这些说明的简要说明。它告诉 Apache 如何处理 .gz 文件以将它们作为纯文本处理并将它们作为纯文本发送到浏览器。

sudo a2enmod headers   
sudo a2enmod deflate  
gksu gedit /etc/apache2/sites-enabled/000-default 
Run Code Online (Sandbox Code Playgroud)

转到文件底部,找到带有的部分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>   
Run Code Online (Sandbox Code Playgroud)

然后重启Apache:

sudo apache2ctl restart   
Run Code Online (Sandbox Code Playgroud)


Lek*_*eyn 7

gunzip file.gz尝试解压缩file.gzfile,删除file.gz. 这就是为什么您会收到“权限被拒绝”错误的原因,您不允许写入/usr/share/doc. 要获取文件的内容,请使用gunzip -c file.gzzcat file.gz

读取 gzip 压缩的文本文件可以使用zless. 顾名思义,它只是less, 但用于 gzip 压缩文件。

用法示例:

zless /usr/share/doc/bash/NEWS.gz
Run Code Online (Sandbox Code Playgroud)

.gz后缀可以被省略,以及:

zless /usr/share/doc/bash/NEWS
Run Code Online (Sandbox Code Playgroud)

  • @belacqua 是的,我现在也这样做。我想这与 `LESSOPEN` 和 `LESSCLOSE` 环境变量有关。 (2认同)