homebrew いれてると man がグチャグチャ・・
brew したコマンドは無事に動くんだけど、man や completion などが結構大変。今回は man / manpath を何とかするために調べた話。
brew したgnu date の man はどこ?
BSDコマンドはLinuxメインの私には、ちょっと面食らうことが多いので、brew でGNU コマンドを使っているのですが、man どこだ。。。
date の man
$ man date # BSD manual $ man date -M /usr/local/opt/coreutils/libexec/gnuman/ # GNU User manual
ということで、date
コマンドのman は coreutils の gnuman にありました。
なぜ、見れないのか
manpath で解決しないのはナゼなのでしょうか?それは brew link
してないからです。brew で link したものは、/usr/local/share/man
にリンクされいつも通りに表示できました。それ以外(未link)は出てこないようです。
リンク非推奨の curl なども同じ
これらも 通常のman だけでは調べることが出来ない。
g-prefix については gつけたら見られる
上記のlink 非推奨で link 出来ないコマンドについては g-prefix をつけたらman を見ることが出来る
$ man gls $ man grm $ man gsed $ man gdate $ man ggrep $ man gfind
ただし、それでもman が見られないものもある。
ls / date
など頻繁に使うコマンドについても BSD コマンドより GNU コマンドのマニュアルをよく使うので、そっちを参照したい。
man のためだけに、いちいちlinux にログインするもの面倒だ
環境変数MANPATHに含めるしか無い。
coreutils / curl / sqlite
に関しては、MANPATHで強引に解決することにした。
~/.bashrc
MANPATH=$(manpath) if [[ $( realpath $(which curl ) ) =~ local ]] ; then MANPATH=/usr/local/opt/curl/share/man:$MANPATH fi if [[ $( realpath $(which date ) ) =~ local ]] ; then MANPATH=/usr/local/opt/coreutils/libexec/gnuman:$MANPATH fi if [[ $( realpath $(which sqlite3 ) ) =~ local ]] ; then MANPATH=/usr/local/opt/sqlite/share/man:$MANPATH fi export MANPATH
なぜ brew link --force
しないのか
--force
で brew link をすれば一発解決なのですが。brew link 非推奨のコマンドはやっぱり リンクしないほうがトラブルが少ない。
過去に起きたトラブルで時間を無駄にした記憶がある。
「なんでこのコマンドはbrew インストールできない!!」
「なんでコマンド動かない!!」といったトラブルで時間を浪費したことがあり、その原因の大半が brew link --force
だったのです。
まとめ
homebrew で入れたコマンドの man が見れない時
- g-prefix を試す. 例:
ls → gls
など - manのパス指定を試す 例:
man date -M /usr/local/opt/coreutils/libexec/gnuman/
- manpath を先にしておく。
- man コマンドでサイトに飛ぶ。 例
function man(){ open https://www.die.net/search/?q=$1; }
の解決策がありそうでした。
おまけ
brew コマンドの日本語man はここにあった
takuya@~$ ll /usr/local/share/man/ja/man1/ total 44 lrwxr-xr-x 1 takuya admin 52 2016-11-28 02:08 evim.1 -> ../../../../Cellar/vim/HEAD/share/man/ja/man1/evim.1 lrwxr-xr-x 1 takuya admin 50 2016-11-28 02:08 ex.1 -> ../../../../Cellar/vim/HEAD/share/man/ja/man1/ex.1 lrwxr-xr-x 1 takuya admin 52 2016-11-28 02:06 nkf.1 -> ../../../../Cellar/nkf/2.1.4/share/man/ja/man1/nkf.1 lrwxr-xr-x 1 takuya admin 53 2016-11-28 02:06 nmap.1 -> ../../../../Cellar/nmap/7.31/share/man/ja/man1/nmap.1 lrwxr-xr-x 1 takuya admin 53 2016-11-28 02:08 rview.1 -> ../../../../Cellar/vim/HEAD/share/man/ja/man1/rview.1 lrwxr-xr-x 1 takuya admin 52 2016-11-28 02:08 rvim.1 -> ../../../../Cellar/vim/HEAD/share/man/ja/man1/rvim.1 lrwxr-xr-x 1 takuya admin 52 2016-11-28 02:08 view.1 -> ../../../../Cellar/vim/HEAD/share/man/ja/man1/view.1 lrwxr-xr-x 1 takuya admin 51 2016-11-28 02:08 vim.1 -> ../../../../Cellar/vim/HEAD/share/man/ja/man1/vim.1 lrwxr-xr-x 1 takuya admin 55 2016-11-28 02:08 vimdiff.1 -> ../../../../Cellar/vim/HEAD/share/man/ja/man1/vimdiff.1 lrwxr-xr-x 1 takuya admin 56 2016-11-28 02:08 vimtutor.1 -> ../../../../Cellar/vim/HEAD/share/man/ja/man1/vimtutor.1 lrwxr-xr-x 1 takuya admin 51 2016-11-28 02:08 xxd.1 -> ../../../../Cellar/vim/HEAD/share/man/ja/man1/xxd.1
brew コマンド man 自体はここにあった
takuya@~$ ll /usr/local/share/man/man1 total 4172