パスへのパッケージの追加を処理する「正しい」方法

パスへのパッケージの追加を処理する「正しい」方法

Haskellプラットフォームをダウンロードしてインストールしました。次の場所にインストールされます(デフォルト)。/usr/local/haskell/

/usr/local/haskell/bin/私のパスにバイナリを追加したいです。しかし、(可能であれば)進路を変えたくありません。

ここで最善の措置は何ですか?パスにHaskellフォルダを追加するのが最善の方法haskell/bin/*ですか?local/bin

答え1

かなり一般的な代替更新方法は、たとえば、すでにリストさ$PATHれているバイナリへのシンボリックリンクを作成することです。$PATH/usr/local/bin

これにより、これを達成できます。

$ cd /usr/local/bin
$ sudo ln -s ../haskell/bin/* .

(ただし、これを行う前に、バイナリのリストを確認し、/usr/local/haskell/bin/シンボリックリンクを作成するのが適切であることを確認してください。ファイルのサブセットだけがシンボリックリンクを決定することもできます。)

あなたがこのことをしたい理由の1ついいえバイナリ自体を移動しようとする理由は、タールボールとして配布されたバイナリがシステムのどこでも解凍された場合に動作するように書かれることが多いからです。この目的のために、彼らはしばしば設置された場所を検出しようとします(最も一般的に見てください)。これにより、必要な他のライブラリとファイルを見つけることが期待される親ディレクトリを見つけることができます/proc/self/exe/usr/local/haskellシンボリックリンクを作成しても、通常、これらのメカニズムを妨げることはありません。なぜなら、シンボリックリンクはまだ実際のバイナリを見つけ、インストールパスをうまく見つける/usr/local/haskell/binことができるからです。

バイナリを移動しないもう1つの理由は、後でHaskellを削除したい場合は、別途作業せずに/usr/local/haskellディレクトリ全体を削除するだけです。覚える一部のバイナリは移動されており/usr/local/bin、これを覚えていても、どのバイナリがHaskellに属しているかを覚える必要はありません(この方法を使用して複数のパッケージをインストールしたと仮定)。するディレクトリを削除してHaskellを削除すると、一部の壊れたシンボリックリンクが発生しますが、/usr/local/binこれは無害で名前に含まれているため、どちらがHaskellに属しているかを簡単に識別できるため、../haskell/bin清掃も簡単です。 。

関連情報