这些‘3cxx’手册页是什么,我如何从手册调用中删除/排除它们?

这些‘3cxx’手册页是什么,我如何从手册调用中删除/排除它们?

这一切的开始是因为我想要 C++ 类型/函数的手册页。我找到了一个名为卡普曼旨在从 cplusplus 或 cppreference 抓取这些页面。此时man std::cout将显示预期的手册页,但man -k cout会显示“无适当内容”。

从那时起,我删除了除 cplusplus.com 文件夹之外的所有文件夹,将其重命名为“man3”,然后运行mandb(先以 root 身份运行,然后以我自己的身份运行),结果生成了一个空的“cat3”文件夹和一个“index.db”。现在我将 MANPATH 设置如下:

old_manpath=$(manpath 2>/dev/null)
export MANPATH=$HOME/.local/share/man:$old_manpath

结果:

> man -k std::cout
std::cout (3)        - Standard output stream
> man -k std::result_of
std::result_of (3)   - Result of call
std::result_of (3cxx) - (unknown subject)
> man 3 std::result_of # the page I expect
> man 3cxx std::result_of # scrawny and malformed manpage

如果我能隐藏这些“3cxx”页面man [-k],我就满足了。但是,我宁愿删除这些文件并避免首先生成它们。我似乎没有“*.3cxx.gz”文件。

我哪里做错了?如果确实是这个问题,我应该如何以及在哪里设置 MANPATH?


编辑 1 - 我从这个问题中删去了很多细节,但 3cxx 手册页的内容可能会说明问题。首先,man 3cxx std::result_of有标题std::result_of< _Signature >(3cxx)<_Signature>在正常手册页中缺少);概要是空的,后面跟着“详细描述”而不是描述。我试图复制它如下所示的内容(下划线代表缩进。)

详细说明

____模板<类型名称 _Signature>

________class std::result_of< _Signature >" result_of

________位于文件 type_traits 第 2097 行的定义。

那个离题字"与所写的一样,在我检查的其他几个页面中,它出现在主类型之后。偏离的页面在页面下方的类型之后或顶部仍然有一些不匹配的引号结尾甚至不涉及模板的线条。


编辑 2 - 我不知道如何找到与显示的手册页关联的文件,或者我可以检查/删除整个批次。使用时,lsof我没有看到任何类似打开的手册页,我并不指望它能保持文件打开。我最好的猜测是,这些粗略的手册页被嵌入到index.db“dbm/ndbm”数据库文件中;我有这个python3-gdbm包,所以我戳了一下,发现它的类型是“dbm.gnu”,它的“第一个”条目是b'std::list::cend\x00' => b'-\t3\t3\t1509183341\t749359924\tA\t-\t-\tgz\tReturn const_iterator to end\x00'。这暗示着 index.db 只存储名称/描述对,也许头部的一些数字会对应一个文件,但即便如此,如何如果不亲眼看到它的实际作用,我不可能想象到这么多。我想这是我一个人能做到的极限了。


编辑 3-我解码了条目:

>>> from dbm.gnu import *
>>> o=open('/home/john/.local/share/man/index.db', 'c')
>>> def nextn(i,n):
...     sum=""
...     for j in range(0,n):
...             sum += i.decode("utf-8") + "\n" + o[i].decode("utf-8")
...             i=o.nextkey(i)
...     return sum
>>> all=nextn(o.firstkey(), len(o.keys()))
>>> all.find('cxx')
-1

# Example entry for reference:
std::list::cend
-       3       3       1509183341      749359924       A       -       -       gz      Return const_iterator to end

这些条目按哈希(准随机)顺序排列,因此这些条目的良好样本应该显示类型“3cxx”条目的数量与类型“3”条目的数量大致相同。相反,它们实际上都是类型“3”。Index.db 已经摆脱困境,但我正式没有主意了。

相关内容