バイナリファイルとマニュアルページパスの違い

バイナリファイルとマニュアルページパスの違い

システムには多くのバージョンのバイナリがあり、どのバージョンを選択するかによって異なります$PATH。たとえば、私が作業しているシステムには複数のバージョンがあります。

$ which sort
~/coreutils-8.25/bin/sort
$ ~/coreutils-8.25/bin/sort --version | head -n 1
sort (GNU coreutils) 8.25
$ /bin/sort --version | head -n 1
sort (GNU coreutils) 8.4

私が使用しているシステムでは、sortそのまま呼び出してGNU coreutils 8.25バージョンを選択しますPATH。ただし、MANPATHシステムの環境変数は、sortGNU coreutils 8.4のマニュアルページが表示されるように設定されています。/bin/sort)、これは優先順位文書を持つバイナリではありません)。

この状況は、3つの部分からなる質問を作成します。

まず、反映されたフォームをman使用または生成するように指示(またはシェル)する簡単な方法はありますか?または、手動で実行する必要があります(たとえば、各エントリに関連するマニュアルページのパスを見つけ、同じパスが変更されるたびにこれらのパスがリンクされた順序を繰り返す必要がありますか?)との間に一貫性を設定するメカニズムがある場合マニュアルページが自動的に表示されるため、デフォルトで使用されているバージョン以外のバージョンのマニュアルページを誤って読み取る問題を回避できます。MANPATHPATHPATHPATHPATHPATHMANPATH

次に、メインのマニュアルページへのパスをすばやく決定するためのコマンドがあります(たとえば、which "man sort"実行時に表示されるマニュアルページへのパスを報告するなどのコマンドman sort)。たとえば、 を入力するとman sortポケットベルに送信されるシステム上の特定のファイルを表しません。

man ~/coreutils-8.25/bin/sort第三に、関連ファイルを追跡することなく、コマンドの明示的なバージョン(私のGNU coreutils 8.25バージョンのマニュアルページと同様)のマニュアルページを取得する方法はありますか?私の場合は、~/coreutils-8.25/share/man/man1/sort.1 または ~/coreutils-8.25/man/sort.1).

ベストアンサー1

~のため地元のこのようなインストールでは、一貫した結果を得るためにシェルスクリプトを使用してPATH値を設定します。そんな小物がなかったらLD_LIBRARY_PATHMANPATHいいえ自動で一貫した結果を得る。

以下は古い例です。

#!/bin/bash
# $Id: with-ncurses,v 1.1 2006/09/02 23:04:39 tom Exp $
export LIBS="-lncursesw"
for prefix in \
        /usr/local/ncurses6
do
        test  -f $prefix/lib/libncursesw.so && break
        test  -f $prefix/lib/libncursesw.a  && break
done

if [ -d $prefix/include/ncursesw ] ; then
        export CPPFLAGS="-I$prefix/include/ncursesw $CPPFLAGS"
        if [ $prefix != /usr ] ; then
                export CPPFLAGS="-I$prefix/include $CPPFLAGS"
        fi
fi

if [ $prefix != /usr ] ; then
        export PATH=`newpath -bd $prefix/bin`
        export LD_LIBRARY_PATH=`newpath -n LD_LIBRARY_PATH -bd $prefix/lib`
        export LIBS="-L$prefix/lib $LIBS"
        # this doesn't work for db30:
        # export LIBS="-static -L$prefix/lib $LIBS -shared"
fi

case `partition` in
rh*|md*)
        export MANPATH=$prefix/man:`manpath`
        ;;
*)
        export MANPATH=$prefix/man:`manpath -q`
        ;;
esac
eval $*

これらのスクリプトを作成してください持ち運べるMANPATHこれは、どのように使用するかの基準がないために問題になります。ただし、特定のシステムに対しても同様の調整を実行できます。

ところで、このスクリプトはnewpathこれらの変数を修正し、重複を避けてください。

おすすめ記事