MANPATH를 읽게 하는 방법

MANPATH를 읽게 하는 방법

저는 시스템에서 권한이 없는 사용자이므로 홈 디렉터리에 일부 소프트웨어가 설치되어 있습니다. ~/.local/usr/binmy 에 추가하는 것 외에도 이러한 패키지에 대한 매뉴얼 페이지를 쿼리할 수 있도록 my에도 PATH추가하고 있습니다 .~/.local/usr/share/manMANPATH

예를 들어, 그러한 명령 중 하나는 입니다 cgdb.

man cgdbMANPATH잘 작동합니다. 내 환경 변수 에서 매뉴얼 페이지를 가져옵니다 .

그러나 apropos cgdb( man -k cgdb, whatis cgdb)는 작동하지 않습니다.

$ apropos cgdb
cgdb: nothing appropriate

man apropos당시에 를 man whatis사용하여 whatis 데이터베이스를 재구축하는 것이 가능하다는 것을 읽었 makewhatis지만 이는 시스템 디렉토리에서 권한이 있는 사용자에 의해서만 수행되는 것 같습니다. 사용자 공간에서는 이 작업을 수행할 방법을 찾을 수 없습니다.

권한이 없는 사용자(일명)가 가리키는 비시스템 디렉터리에서 이것이 가능합니까 apropos?man -kMANPATH

FWIW: CentOS 6 서버에 있습니다.

$ uname -osrv
Linux 2.6.32-754.11.1.el6.x86_64 #1 SMP Tue Feb 26 15:38:56 UTC 2019 GNU/Linux
$ lsb_release -d
Description:    CentOS release 6.6 (Final)

답변1

apropos일반적으로 각 맨페이지를 검색하는 대신 미리 생성된 색인 파일을 빠르게 읽습니다.

이는 맨페이지가 추가될 때마다 인덱스 파일을 업데이트해야 함을 의미합니다.

CentOS 6에서는 시스템 매뉴얼 페이지가 야간에 전달됩니다 /etc/cron.daily/makewhatis.cron.

그것은makewhatis의미는-o플래그를 사용하면 자신만의 디렉터리를 지정할 수 있습니다. 그러나 그것은 작동하지 않는 것 같습니다 ...

% makewhatis -v $HOME/man -o $HOME/man/whatis
about to enter /home/sweh/man
skipping /var/cache/man - whatis file is readonly
% cat man/whatis
% 

그러나 makewhatis이는 스크립트이므로 복사하고 수정하여 새 경로를 지정할 수 있습니다.

% diff mymakewhatis /usr/sbin/makewhatis 
69c69
< DEFWHATISDIR=$HOME/man
---
> DEFWHATISDIR=/var/cache/man

지금:

% ./mymakewhatis -v $HOME/man 
about to enter /home/sweh/man
adding /home/sweh/man/man1/smbsh.1

이제 항목이 있는 것을 볼 수 있습니다.

% cat man/whatis 
smbsh                (1)  - Allows access to remote SMB shares using UNIX commands

그리고 apropos작동합니다:

% man -k smbsh
smbsh                (1)  - Allows access to remote SMB shares using UNIX commands

관련 정보