Де слід встановити сторінки вручну в каталозі користувачів?


13

Я намагаюся створити Makefile для невеликої утиліти Perl, про яку я писав, і я намагаюся знайти спосіб, куди встановити мою сторінку man, коли makeвона запускається як некореневий користувач.

В даний час я розбираю результат, manpathщоб дізнатися перший шлях у $HOMEкаталозі ... і він майже добре працює.

Шляхи, які я знайшов, є ~/manі є~/share/man

Єдина проблема полягає в тому, що якщо ці каталоги не існують в першу чергу, manpathвони не виводять жодного з них.

Запитання

  • Чи є портативний спосіб дізнатися, де мені слід встановити довідкові сторінки в каталозі $ HOME користувача?
  • Якщо ні, то якому з них слід віддати перевагу?

Відповіді:


13

Ви можете розмістити довідкові сторінки в цьому каталозі:

$HOME/.local/share/man

Доступ безпосередньо

Тоді ви можете отримати доступ до них безпосередньо, використовуючи man:

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

$ МАНПАТ

Ви можете перевірити, що $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буде доступний для некореневих користувачів, як ви просили. Будь ласка, виправте мене, якщо я помиляюся.


Обіцяна записка внизу

Зауважте, що я використав цей -maxdepth 2параметр з find, тому що я зрозумів, що manкаталог буде знаходитись у двох каталогах кореня файлової системи, і я не хотів отримувати занадто багато сторонніх каталогів, які якось мали підрядку man, як і /lib/gnome-coлюдинаder .

Додатковий матеріал навколо findє, щоб придушити будь-які Permission deniedпомилки, якщо у вас немає доступу до suабо sudo. Ось чудовий опис того, що відбувається. (Шукайте рядок, який починається з "gniourf_gniourf".)


0

Я встановив декілька програм, які я компілював, із відповідним configureнабором s для встановлення ${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.