パッケージマネージャがインストールしたバイナリをデフォルト値に設定するには?

パッケージマネージャがインストールしたバイナリをデフォルト値に設定するには?

MacPortsを介して最新バージョンをインストールし、tcpdumpそれをデフォルトのバイナリにしたいと思います。

$ which -a tcpdump
/usr/sbin/tcpdump
/opt/local/sbin/tcpdump

これで1つを設定しましたが、古い文書が表示されるのをalias防ぐことはできません。man

答え1

ベンダーパスの前にMacPortsパスを一覧表示するには、変数PATHと環境変数を調整する必要があります。MANPATHそのためには、次のことを試してみて、bash実行中のシェルを再ロードしてください。.bashrc.bash_profileexec bash

export MANPATH=/opt/local/share/man:$MANPATH

他の便利なコマンドは、現在何があるかを確認し、MANPATHMacPortsがマニュアルページを非表示にする可能性のあるすべての場所を見つけることです(すべてマニュアルページディレクトリではありませんが、正しいディレクトリにはサブman[0-9]ディレクトリが必要です...)。

echo $MANPATH
find /opt -type d -name man

PATH基本的には次のようになります。

export PATH=/opt/local/sbin:/opt/local/bin:$PATH

最も簡単なオプションでなければなりませんが、もう一度exec bashテストしてみてくださいecho $PATH

/usr/libexec/path_helperただし、Appleにはグローバルrcファイルで実行されるスクリプト()があることに注意してくださいgrep -l path_helper /etc/* 2>/dev/null。カスタマイズが必要です。後ろにプログラムはAppleのデフォルト設定に変更またはPATHリセットします。出力を開始点として使用できます。MANPATHpath_helperpath_helper

/usr/libexec/path_helper -s >> ~/.bashrc

次に、追加された行を編集して、目的のパスを目的の順序で含めます。 (>そのように使用しないでください。破壊するファイル.bashrc>>添付しています...)

答え2

では、OS X 10.8.5実際には何もしてはいけませんbash 3.2.53(1)MacPorts 2.3.4

最初はなぜ動作しなかったのかわかりません。PATH値は何らかの方法で保存され更新されない場合があります(詳細は以下を参照)。

頑張った

MANPATH提案によるとトリガーしかし、それはうまくいきませんでした。manマンページ:"It overrides the configuration file and the automatic search path"

・まず、マイ(グローバル)設定ファイルでパッケージマネージャのディレクトリを使用しますexportPATHこれはプレフィックスを3回付け、サフィックスを1回貼り付けます。最新のバイナリ/manページをデフォルト値に設定しますが、この新しいより長い組み合わせが気になりますPATH(以前の値にはすべてのディレクトリが1回しか含まれていませんが、順序は異なります。最初にオペレーティングシステムのデフォルト値、パッケージマネージャ)。

このトピックについてはSUを確認してください。OS X 10.6 Snow Leopardでは、$ PATHはどこに設定されていますか?

MacPortsインストーラは~/.profile

# MacPorts Installer addition on 2015-10-10_at_20:55:20: adding an appropriate PATH variable for use with MacPorts.
export PATH="/opt/local/bin:/opt/local/sbin:$PATH"
# Finished adapting your PATH environment variable for use with MacPorts.

私はこのような状況にあまりにも多かったので、最後の状況を除いてすべてを検討しました。その結果、きれいPATH

しかし、実際にman更新された文書をどのように入手しますか?

このSEARCH PATH FOR MANUAL PAGESセクションでは:

In  addition,  for  each  directory in the command search path (we'll call it a "command
directory") for which you do not have a MANPATH_MAP statement, man automatically looks for
a manual page directory "nearby" namely as a subdirectory in the command directory itself or
in the parent directory of the command directory.

You can disable the automatic "nearby" searches by including a NOAUTOPATH statement in
/private/etc/man.conf.

一時的に有効にしてこれを確認しましたNOAUTOPATH

はい

$ type tcpdump
tcpdump is /opt/local/sbin/tcpdump

$ ll -d /opt/local/man
lrwxr-xr-x  1 root  admin  9 Oct 10 20:55:20 2015 /opt/local/man -> share/man

他のパッケージマネージャにはYMMVがありますが、それほど多くはないようです。

関連情報