В Linux, как получить справочную страницу для скомпилированных программ?

417
AniDev

Я знаю, что установка пакета через APT (apt-get или aptitude для моего компьютера) автоматически установит соответствующие страницы man и обновит базу данных man. Когда я хочу собрать те же пакеты, однако, man-страница не устанавливается, и я не могу использовать man для этой программы. Как получить справочные страницы для программного обеспечения, которое я скомпилировал? (Я использую Ubuntu 10.10).

3
Вы пытаетесь собрать пакет `deb` или компилируете, а затем устанавливаете с помощью` make install`? Если первое, опубликуйте свой `debian / rules`. Если последнее, объясните, как вы конфигурируете программу (вы запускали `. / Configure`, редактировали ли вы make-файл, какие переменные вы передавали в` make` и т. Д.). Gilles 13 лет назад 0
Я использовал cmake для настройки программы; командная строка была `cmake ../ -DCMAKE_INSTALL_PREFIX = / usr / local`. Затем я запустил `make && sudo make install` как обычно. AniDev 13 лет назад 0

1 ответ на вопрос

3
Rich Homolka

Вы настраиваете свою сборку программного обеспечения с местоположениями по умолчанию (в / usr) и устанавливаете как root? (но я не строю как root, я надеюсь). Если так, то man-страницы, если они есть, должны быть установлены там, где manих уже видно.

Если вы устанавливаете в нестандартное место, вам нужно сообщить man, где они находятся. Вы можете использовать MANPATHпеременную окружения, чтобы сделать это. Установите его в обычные manкаталоги и добавьте в него также каталог установки. Что-то вродеexport MANPATH=/usr/share/man:/path/to/your/dir

РЕДАКТИРОВАТЬ : Кроме того, я не уверен насчет «базы данных человека». Там действительно нет ни одного. Есть некоторые дистрибутивы, которые выполняют пост-обработку man-страниц, либо сжимают, либо распаковывают. Но они нигде не хранят список страниц руководства. В псевдокоде:

for DIR in $MANPATH for SEC in $MANSECTIONS (or just the one section if you give as `-s SEC`) open dirlist for $DIR/man$ in dir list list, look for $COMMAND.$SEC if you find it, display and exit 

Это может быть вашей проблемой. Если вы установили в нестандартный каталог, правильно ли указано соглашение об именах? Если у вас есть файл bubba.1, файл должен быть установлен в какой-то путь /path/to/bubba/install/man1/bubba.1иMANPATH=/usr/share/man:/path/to/bubba/install

Иногда я настраиваю свое программное обеспечение для компиляции в / usr / local, это может быть проблемой. Я не компилирую как root, но я устанавливаю как root (make; sudo make install). Тем не менее, я не думаю, что там есть man-страницы (я посмотрел в папке man8). AniDev 13 лет назад 0
Кроме того, если нет «базы данных», как же появятся папки для man-db и есть программа под названием «mandb»? AniDev 13 лет назад 0
@AniDev: у меня нет мандб в моей системе. Для моего комментария, приведенного выше, я запустил strace по команде man, чтобы проверить, не достиг ли он значения db, но не сделал этого. Я не могу сказать для всех версий человека, используют ли они один или нет. Rich Homolka 13 лет назад 0
Хорошо спасибо. Всякий раз, когда APT устанавливает пакет, он почти всегда говорит где-то в конце «Обработка триггеров для man-db ...». AniDev 13 лет назад 0
Не совсем отвечает на мой вопрос, но, тем не менее, полезен, поэтому я отмечаю ваш ответ как принятый ответ. AniDev 13 лет назад 0

Похожие вопросы