/usr/binまたは/usr/local/binのリンク:ハードまたはシンボル?

/usr/binまたは/usr/local/binのリンク:ハードまたはシンボル?

/usr/binとのリンクの場合、/usr/local/binハードリンクまたはシンボリックリンクのどちらが良いですか?それらはすべて象徴的だと思いますか?なぜ?

答え1

リンクがまたは/usr/binに挿入されている場合/usr/local/binは、通常、実際のバイナリが他の場所にあるためです。なぜ他の場所に住んでいるのですか?これは通常、機能に依存するファイルセットの一部(通常は独自のサブディレクトリにある)であるためです。なぜこれらのファイルをすべて/usr/binORにダンプできないのですか/usr/local/bin?これらの場所はバイナリファイルにのみ適用されるため、バイナリはそのディレクトリの最上位レベルにあり、サブディレクトリは許可されません。

それでは、ここでハードリンクを使用するのはどうですか?これは、ファイルへのハードリンクは元のファイルと同じ状態(同じinode共有)を持つと見なされ、ハードリンクが存在してもファイルが削除されないためです。代わりに、シンボリックリンクは「実際」へのポインタにすぎません。実際には、別の場所/サブディレクトリにある別のファイルを削除すると、ファイルを独自に実行できないため、別の場所にあるバイナリへのハードリンクを入れることはあまり意味がありません。

1つの例は、にあるさまざまなTeXユーティリティです/usr/bin。これを見ると、これらの多くは、にある実際のユーティリティを指していることがわかります/usr/share/texlive/texmf-dist/scripts/ls -la | grep texmf

muruが述べたように、もう一つの理由は、ハードリンクがファイルシステム全体で機能しないことです。

Debian 代替システムでファイルへのリンクが使用される別のケースは、/usr/binまたはです。/usr/local/binこの場合、バイナリは、シンボリックリンクを指すシンボリックリンクであり/etc/alternatives、通常は自分自身を指す実際のバイナリを指します/usr/bin

例:

ls -la /usr/bin/awk 
lrwxrwxrwx 1 root root 21 Jul 31  2013 /usr/bin/awk -> /etc/alternatives/awk
ls -la /etc/alternatives/awk
lrwxrwxrwx 1 root root 13 Aug 11  2013 /etc/alternatives/awk -> /usr/bin/gawk

この場合、シンボリックリンクはすべての可能なバイナリ範囲を指すので、正しいメカニズムであることは明らかです。

関連情報