私が書いた小さな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.bash
MANPATH=
$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
私にとって、これは2つの可能性があることを意味/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
他の2つの候補を見つけまし/var/cache/man
たが、usr/share/man
すでに機能している解決策が見つかったので、気にしませんでした。
また参考にしてください
あなたの要件に応じて、rootではなくユーザーに提供できると思います/share/man/man1
。/var/cache/man
間違っていたら訂正してください。
約束ノートは一番下にあります。
ディレクトリがファイルシステムのルートの2つのディレクトリ内にあると思い、サブストリングを含む外部ディレクトリをあまり取得したくないので、このオプションを-maxdepth 2
使用しました。find
man
man
/lib/gnome-co
男性der
。
周辺の追加コンテンツは、または にアクセスできない場合にfind
エラーを抑制することです。Permission denied
su
sudo
ここ何が起こっているかについての良い説明です。 ("gniourf_gniourf"で始まる行を探してください。)