Что это за справочные страницы "3cxx", и как я могу удалить / исключить их из мужских вызовов?

Все это началось, потому что я хотел man-страницы по типам / функциям C++. Я нашел репозиторий под названием Cppman, предназначенный для очистки этих страниц от cplusplus или cppreference. С этой точки зрения man std::cout будет отображать ожидаемую man-страницу, но man -k cout сказал бы "ничего не подходит".

С тех пор я удалил все, кроме папки cplusplus.com, переименовал ее в man3 и запустил mandb (как корень для хорошей меры, тогда как я), который произвел пустую папку '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'.

Где я неправ? Как и где мне устанавливать мой ПУТЬ, если это действительно проблема?


Правка 1 - я снял много подробностей с этого вопроса, но содержание справочных страниц 3cxx может показывать. Для одного, man 3cxx std::result_of имеет название std::result_of< _Signature >(3cxx) (<_Signature> отсутствует на обычной странице man); ОПИСАНИЕ пусто, за которым следует "Подробное описание" вместо "ОПИСАНИЕ". Я попытался повторить то, на что это похоже ниже (подчеркивания представляют отступ.)

Подробное описание

____шаблон

________ класс std::result_of<_Signature>"result_of

_______________ Определение в строке 2097 файла type_traits.

Это заблудилось " как написано, и появляется сразу после основного типа на нескольких других страницах, которые я проверил. У страниц, которые отклонялись, все еще были некоторые несоответствующие кавычки после типов далее вниз по странице, или в конце строк, даже не включая шаблоны.


Редактировать 2 - я не могу понять, как найти файл, связанный с отображаемой man-страницей, или я могу проверить / удалить весь пакет. С помощью lsof Я не вижу ничего похожего на открытую man-страницу, не то чтобы я ожидал, что файл останется открытым. Мое лучшее предположение, что эти короткие страницы запекаются в 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 снят с крючка, но у меня официально нет идей.

0 ответов

Другие вопросы по тегам