/usr/bin
とのリンクの場合、/usr/local/bin
ハードリンクまたはシンボリックリンクのどちらが良いですか?それらはすべて象徴的だと思いますか?なぜ?
答え1
リンクがまたは/usr/bin
に挿入されている場合/usr/local/bin
は、通常、実際のバイナリが他の場所にあるためです。なぜ他の場所に住んでいるのですか?これは通常、機能に依存するファイルセットの一部(通常は独自のサブディレクトリにある)であるためです。なぜこれらのファイルをすべて/usr/bin
ORにダンプできないのですか/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
この場合、シンボリックリンクはすべての可能なバイナリ範囲を指すので、正しいメカニズムであることは明らかです。