필자가 작성한 작은 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.bash
MANPATH=
$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
옵션을으로 사용했습니다 .find
man
man
/lib/gnome-co
der
또는에 액세스 할 수없는 경우 오류 find
를 억제하기 위해 주위에 추가 항목 Permission denied
이 있습니다 . 여기 에 무슨 일이 일어나고 있는지에 대한 훌륭한 설명이 있습니다. “gniourf_gniourf”로 시작하는 줄을 찾으십시오.su
sudo
답변
에 설치하기 위해 각각 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}}"
(참고 이것을 ).