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


24

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

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

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

理由は、私はこれをシステム管理者に売り込みたいし、このような間違ったものを得ることは大きなセールスポイントではありません...


2
それを直接下に置かない理由は/etc/myapp何ですか?私が設定を変更したいと思っていたなら、それは私が見る最初の場所でしょう。
new123456

@ new123456-私は個人的に設定ファイルをバイナリに近づけるという考え方が好きですが(例/usr/local/bin-> /usr/local/etc)、この場合は規約が優先されます。
beatgammit

回答:


24

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

これにより、残りの配布から分離できます。

あなたが他の人のためのソフトウェアの一部を開発している場合、あなたはそれは、人々が望む任意の場所にインストールすることができ、それを設計する必要があり、それは通常のをデフォルトにする必要がありFHS彼らがする接頭辞を指定する際に、システムのディレクトリを指定/usr/etc/usr/binなど)

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

良い読んだFHSを、そしてあなたのソースはどこでもそうそれらの分布のために必要とされる様々なディストリビューションのパッケージビルダーがそれらを設定することができ、ユーザーがにそれを置くことができることを構築し、インストールすることができるようにするために、標準的なLinuxツールを使用して/usr/local 、彼らが望むならばまたは、必要に応じて通常のシステムディレクトリ。


ええ、カスタマイズを許可するのは良いことだと思い/usr/local/etcますが、これらの種類のプログラムの構成ファイルの標準かどうか疑問に思っていました。
beatgammit

/ usr / local / etcは、デーモンをソースからビルドした場合に選択できるものですが、/ etcは、デーモンをdebianまたはUbuntuでパッケージ化した場合に選択する場所です。
EightBitTony

4
実際、GNU標準では、パッケージをソースからビルドする人は通常どこでも指定しないため、デフォルトでローカルパスが必要になります。ディストリビューションは、パッケージ化/ビルド時に非ローカルパスに変更します。
-psusi

@ psusi-良い点、私はそれをデフォルトにすることを確認します。おそらく、makeインストールがrootユーザーまたは通常ユーザーとして実行されていることを検出するでしょう。ルートの場合、ユーザーの場合はデフォルトで/ usr / localに、ユーザーのホームディレクトリに移動します。構成設定も追加します。
beatgammit

@ EightBitTony-異なる規約を持つ他のプラットフォームはありますか?私はすでに、異なるプラットフォーム(upstart、systemd、init)に対して異なる起動スクリプトを作成しています。
beatgammit

7

非常に短い答え

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

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


4

/usr/local/etcLinuxの世界ではめったに使用されません。しかし、決定ストア・コンフィギュレーション・ファイル内にいるかどうか/etc/usr/local/etcまたはいくつかの他の場所では、一般的に、コンパイル時に行われている(そして多くの場合、コマンドラインオプションや環境変数によって上書きすることができます)。コンパイル時のデフォルトは実際には関係ありません。設定が簡単であることを確認してください(通常、--sysconfdirautoconfに続くのオプション)。デーモンがディストリビューション用にパッケージ化されている場合、実行可能ファイルは/usr/sbin(ソースからビルドするときのデフォルトは/usr/local/sbin)で、構成はになります/etc

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


/usr/local/etcあまり頻繁に使用されない理由はありますか?構成ファイルをファイルシステムのバイナリと同じレベルに保つというアイデアが好きです。
beatgammit

1
@tjameson広範囲に及ぶ理由があるかどうかわかりません。BSDはそのようにします。管理者として、私はすべての構成ファイルが好きです(バックアップと変更管理が必要です。binlib再インストール可能ななどとが必要)が同じ場所にあること。
ジル 'SO-悪であるのをやめる'

1

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

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.