사용자 디렉토리의 어디에 매뉴얼 페이지를 설치해야 합니까?

사용자 디렉토리의 어디에 매뉴얼 페이지를 설치해야 합니까?

제가 작성한 작은 Perl 유틸리티용 Makefile을 만들려고 하는데 다음 make과 같이 실행할 때 매뉴얼 페이지가 설치된 위치를 찾는 방법을 찾는 데 어려움을 겪고 있습니다.루트가 아닌사용자.

현재 디렉토리의 첫 번째 경로를 manpath찾기 위해 출력을 구문 분석하고 있습니다 .$HOME거의잘 작동합니다.

내가 찾은 경로는 다음 ~/man과 같습니다.~/share/man

유일한 문제는 해당 디렉터리가 처음부터 존재하지 않으면 manpath디렉터리가 출력되지 않는다는 것입니다.

질문

  • 사용자의 $HOME 디렉토리에서 매뉴얼 페이지를 어디에 설치해야 하는지 알아내는 이식 가능한 방법이 있습니까?
  • 그렇지 않다면 어느 것이 선호되어야 합니까?

답변1

이 디렉토리에 매뉴얼 페이지를 배치할 수 있습니다.

$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.bashMANPATH=$HOME/.bash_profile$HOME/.bashrc

인용하다

답변2

저는 컴파일한 몇 가지 응용 프로그램을 설치 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}}"

(보다추가/앞 추가에 대한 방탄 접근 방식:) 에서 콜론을 처리하는 데 사용됩니다 PATH.

답변3

설명과 함께 답변

저는 Windows 7에서 Cygwin을 실행하고 있습니다. 내가 시도할 때

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을 사용했습니다.findmanman/lib/gnome-co남성der.

주변의 추가 콘텐츠는 또는 에 액세스할 수 없는 경우 find오류를 억제 하는 것입니다.Permission deniedsusudo여기무슨 일이 일어나고 있는지에 대한 좋은 설명입니다. ("gniourf_gniourf"로 시작하는 줄을 찾으세요.)

관련 정보