Где я должен установить справочные страницы в пользовательском каталоге?


13

Я пытаюсь создать Makefile для небольшой утилиты Perl, которую я написал, и я изо всех сил пытаюсь найти способ найти, где установить мою man-страницу, когда makeона запускается как пользователь без полномочий root .

В настоящее время я анализирую вывод, manpathчтобы найти первый путь в $HOMEкаталоге ... и он почти работает нормально.

Пути, которые я нашел, есть ~/manи~/share/man

Единственная проблема заключается в том, что, если эти каталоги не существуют в первую очередь, manpathне выводит ни один из них.

Вопросов

  • Есть ли портативный способ узнать, где я должен установить man-страницы в каталоге $ HOME пользователя?
  • Если нет, какой из них следует отдать предпочтение?

Ответы:


13

Вы можете поместить страницы справочника в этот каталог:

$HOME/.local/share/man

Доступ напрямую

И тогда вы можете получить к ним доступ напрямую, используя man:

man $HOME/.local/share/man/manX/manpage.1.gz

$ MANPATH

Вы можете проверить, что $MANPATHс командой manpath, или вывести переменную окружения $MANPATH.

Примеры

$ manpath
manpath: warning: $MANPATH set, ignoring /etc/man_db.conf
/home/saml/apps/perl5/perlbrew/perls/perl-5.14.0/man:/home/saml/.rvm/rubies/ruby-1.9.2-p180/share/man:/home/saml/.rvm/man:/usr/local/share/man:/usr/share/man:/usr/brlcad/share/man:/usr/man:/usr/brlcad/share/man:/usr/brlcad/share/man

$ echo $MANPATH
/home/saml/apps/perl5/perlbrew/perls/perl-5.14.0/man:/home/saml/.rvm/rubies/ruby-1.9.2-p180/share/man:/home/saml/.rvm/man:/usr/local/share/man:/usr/share/man:/usr/brlcad/share/man:/usr/man:/usr/brlcad/share/man:/usr/brlcad/share/man

Вы можете временно добавлять вещи в MANPATH:

MANPATH=$HOME/.local/share/man:$MANPATH

Если вы хотите сделать это постоянным, то добавьте в свой /etc/profile.d/каталог файл myman.bashс указанной выше MANPATH=строкой. Это получит широкую систему для всех. Если вы хотите, чтобы это было только для вас, то добавьте его в свой $HOME/.bash_profileили $HOME/.bashrc.


2
Чтобы подавить manpathпредупреждения об MANPATHустановке, вы можете передать -qопцию.
Джозеф Р.

2
Да, я знаю, что могу сказать, manгде искать. Я ищу общий, портативный способ для общей установки (то есть: где manищет стандартную конфигурацию)
Romuald Brunet

Сделайте echo $MANPATHи посмотрите, что это показывает. Это хорошие места, чтобы начать искать или использовать manpathкоманду, как я показал в своем ответе.
SLM

0

Ответ с описанием

Я запускаю Cygwin на Windows 7. Когда я пытаюсь

echo $MANPATH

Я ничего не получаю. Вот мой портативный способ найти, где разместить новые manстраницы.

$ { find / -maxdepth 2 -type d -name "*man*" 3>&2 2>&1 1>&3 | \
grep -v 'Permission denied' >&3; } 3>&2 2>&1

(Примечание к этой сумасшедшей команде находится внизу этого ответа.)

Вы можете просто заменить /на ~. Другая возможность находится в разделе « Другое примечание » ниже.

На моей машине findкоманда вернула:

 /etc/openwsman
 /lib/filemanager-actions
 /lib/gnome-commander
 /lib/help2man
 /lib/window-manager-settings
 /share/man
 /usr/man

Для меня это означало, что есть две возможности: /share/manи /usr/man.

Я решил использовать /usr/man, чего не скажешь, но мне нужно было еще немного изучить.

$ ls -l /usr/man
total 0
drwxr-xr-x+ 1 me Users 0 April 31 17:13 man1

Итак, где у меня были новые manфайлы в doc/подкаталоге моего рабочего каталога, я использовал

$ cp -R doc/* /usr/man/man1

Теперь я могу добраться до своего «руководства», набрав

$ man my_new_executable

Если вы не видите вероятного кандидата, вы можете удалить эту часть или изменить ее, например, на -maxdepth 3, или 4, или 5, или как угодно глубоко, чтобы найти то, что вам нужно. Когда я сделал это с 3, я нашел двух других кандидатов, /var/cache/manи usr/share/man, но я уже нашел рабочее решение, поэтому я не связывался с ними.


Еще одна заметка

Я полагаю, что /share/man/man1или /var/cache/manбудет доступно для пользователей без полномочий root, как вы и просили. Пожалуйста, поправьте меня, если я ошибаюсь.


Обещанная записка внизу

Обратите внимание, что я использовал -maxdepth 2опцию с find, потому что я полагал, что manкаталог будет в двух каталогах корня файловой системы, и я не хотел получать слишком много посторонних каталогов, которые каким-то образом имели подстроку man, как и /lib/gnome-comander .

Дополнительный материал по всему findесть, чтобы подавить любые Permission deniedошибки в случае, если у вас нет доступа к suили sudo. Вот отличное описание того, что происходит. (Ищите строку, которая начинается с "gniourf_gniourf".)


0

Я установил несколько скомпилированных приложений с соответствующим configureнабором для установки в ${HOME}/usr/local.

Теперь я нахожу, что у меня есть каталоги

~/usr/local/share/man/man1
~/usr/local/share/man/man3
~/usr/local/share/man/man5

с страницами руководств gnuplot.1, gnuplot-ja.1, python3.1, python3.5.1, libpng.3, libpngpf.3, zlib.3, png.5, так что я думаю , (учитывая мой префикс) это довольно стандартное расположение для приложений , установленных локально.

Тогда это подходящее место для случаев, когда нужно вручную выбрать локальный manкаталог.

Конечно, можно добавить произвольные пути (и должен делать это даже в обычном упомянутом случае) для manстраниц с

export MANPATH="$HOME/usr/local/share/man${MANPATH:+:${MANPATH}}"

(см. это ).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.