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


1

这一切都是因为我想要C ++类型/函数的手册页。我找到了一个名为Cppman的存储库,旨在从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>正常联机帮助页中缺少); SYNOPSIS为空,后面是“详细说明”而不是说明。我试图复制下面的内容(下划线代表缩进。)

详细说明

____ template <typename _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

条目是散列(准随机)顺序,因此这些条目的良好样本应该显示与类型“3”一样多的类型“3cxx”条目。相反,它们实际上都是'3'类型。Index.db已经摆脱困境,但我正式没有想法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.