사용자 디렉토리에서 매뉴얼 페이지를 어디에 설치해야합니까? 설치할 위치를 찾는 방법을 찾기

필자가 작성한 작은 Perl 유틸리티를 위해 Makefile을 만들려고 노력 중이며 루트make아닌 사용자 로 실행될 때 맨 페이지를 설치할 위치를 찾는 방법을 찾기 위해 고심하고 있습니다.

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

내가 찾은 경로가 ~/man~/share/man

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

질문

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


답변

이 디렉토리에 매뉴얼 페이지를 넣을 수 있습니다.

$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


답변

설명으로 대답

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당신이 요구 한대로, 루트가 아닌 사용자가 사용할 수있다. 내가 틀렸다면 정정 해주세요.


하단에 약속 된 메모

디렉토리가 파일 시스템 루트의 두 디렉토리 내에 있음 을 알았으므로 man 과 같이 하위 문자열이있는 외부 디렉토리를 너무 많이 얻고 싶지 않기 때문에 -maxdepth 2옵션을으로 사용했습니다 .findmanman/lib/gnome-coder

또는에 액세스 할 수없는 경우 오류 find를 억제하기 위해 주위에 추가 항목 Permission denied이 있습니다 . 여기 에 무슨 일이 일어나고 있는지에 대한 훌륭한 설명이 있습니다. “gniourf_gniourf”로 시작하는 줄을 찾으십시오.susudo


답변

에 설치하기 위해 각각 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}}"

(참고 이것을 ).