web-dev-qa-db-ja.com

/ etcと/ usr / local / etcの違いは何ですか

大量のアプリケーションデータを格納する必要のあるデーモンを開発しています。私のシステム(Fedora 15)には/usr/local/etcディレクトリがあることに気付きました。

デーモンを/usr/local/binにインストールすることにしました。設定ファイル用の場所が必要です。

これは Wikipedia で見られませんでした。これは非標準ですか、それとも/usr/local/binにインストールされて設定ファイルを保存するプログラムの標準的な場所ですか?

理由は、私はこれをsys-adminsに売り込みたいからです。そして、このような何かを得るのは素晴らしいセールスポイントではありません...

24
beatgammit

/usr/localは通常、ソースから構築されたアプリケーション用です。つまり、aptのようなものを使用してほとんどのパッケージをインストールしますが、何かの新しいバージョンまたは私のディストリビューションの一部ではないソフトウェアをダウンロードする場合、ソースからビルドしてすべてを `/ usr/localの階層。

これにより、残りのディストリビューションから分離できます。

他の人のためにソフトウェアを開発している場合は、どこにでもインストールできるように設計する必要がありますが、デフォルトは通常の [〜#〜] fhs [〜#〜] にする必要があります=プレフィックスが/usr/etc/usr/binなど)であると指定されている場合、指定されたシステムディレクトリ

つまり、/usr/localは個人用であり、ソフトウェアをインストールする唯一の場所ではありません。

[〜#〜] fhs [〜#〜] をよく読んで、標準のLinuxツールを使用してソースを構築し、どこにでもインストールできるようにして、さまざまなディストリビューションのパッケージビルダーができるようにします。配布に必要なものとして構成し、ユーザーはそれを/usr/local必要に応じてまたは必要に応じて通常のシステムディレクトリに配置できます。

24
EightBitTony

非常に短い答え

/ etcは、OSの構成ファイルに使用されます

/ usr/local/etcは、あなたとあなたが追加でインストールしたソフトウェアによってあなたの設定ファイルに使用できます

7
AndyM

/usr/local/etcは、Linuxの世界ではめったに使用されません。ただし、構成ファイルを/etc/usr/local/etcまたはその他の場所に格納するかどうかの決定は、通常、コンパイル時に行われます(多くの場合、コマンドラインオプションまたは環境変数によってオーバーライドできます)。コンパイル時のデフォルトが何であるかは関係ありません。設定が簡単であることを確認してください(通常、autoconfに続く--sysconfdirのオプション)。デーモンがディストリビューション用にパッケージ化されている場合、実行可能ファイルは/usr/sbin(ソースからビルドするときのデフォルトは/usr/local/sbinである必要があります)と/etcの下の構成に入ります。

/etcは「大量のアプリケーションデータ」の場所ではないことに注意してください。それは/varに入ります。ソースからビルドする場合のデフォルトは/var/local/mydaemonまたは/var/lib/mydaemonです。繰り返しますが、ソースからビルドする場合のデフォルトには、強い規則はありません。コンパイル時のデフォルト(通常はconfigure --localstatedirを使用)と実行時のデフォルト(構成ファイルの設定、場合によってはコマンドラインオプションまたは環境変数を使用)の両方を変更する方法が必要です。

Archユーザーとして、私は/ usr/localをすべて避け、/ etcだけを構成に使用します。ソースからインストールするときは、私が作業している間に小さなPKGBUILDファイルを作成し、将来的には他のコンピューター上の他のユーザーのためにArch User Repository(AUR)にアップロードする可能性があります。 AURにあるパッケージの数と、それらが作成される速度から判断すると、このように考えるのは私だけではありません。これにより、パッケージをソースからインストールする必要がなくなり、/ usr/localのような古い場所を回避できるため、パッケージを利用できる可能性が高まります。

Debianはまた、/ usr/localに何かをインストールするのではなく、ソースのパッケージを構築するという考え、つまり checkinstall のようなユーティリティを好むようです。

インストールするソースのパッケージを作成することは、ファイルの場所を追跡し、一部のファイルが別のパッケージまたは別の「make install」によって矛盾して上書きされないようにするための良い方法です。 「make uninstall」でアンインストールすることは良い解決策ではありません。インストールされているバージョンに関する情報は、最新のパッケージマネージャーが追跡しやすいもう1つの情報です。

私は/ usr/localを完全に無視するでしょう。何かを置くのに適した場所ではありません。パッケージのインストール(システム全体のディレクトリの方が適しています)やユーザーには適していません。

1
Alexander