私は多くのアプリケーションデータを保存する必要があるデーモンを開発していますが、私のシステム(Fedora 15)にディレクトリがあることがわかりました/usr/local/etc
。
デーモンをインストールすることにしましたが、/usr/local/bin
設定ファイルを保存する場所が必要でした。
私はこれを見ませんでしたウィキペディア。これは非標準ですか、それとも実際に/usr/local/bin
設定ファイルを保存するためにインストールされたプログラムの標準的な場所ですか?
その理由は、これをシステム管理者に販売しようとしますが、このようなエラーが発生するのはあまり良い販売ポイントではないからです。
答え1
/usr/local
通常、ソースコードで構築されたアプリケーションに適しています。つまり、私はそのようなものを使用してほとんどのパッケージをインストールしますが、私のディストリビューションのapt
一部ではないものや最新バージョンのソフトウェアをダウンロードする場合は、ソースからビルドしてすべてを「/usr/local」階層に入れます。
これにより、残りのディストリビューションから分離できます。
他の人のためのソフトウェアを開発する場合は、人々が好きな場所にインストールできるように設計する必要がありますが、基本的には通常のバージョンである必要があります。FHSシステムディレクトリを指定するときにプレフィックス/usr
(/etc
、/usr/bin
など)を指定します。
つまり/usr/local
、個人的な目的にのみ使用し、ソフトウェアをインストールする唯一の場所にしてはいけません。
よく読んでくださいFHS、標準のLinuxツールを使用してソースコードをどこにでもビルドしてインストールできるため、個々のディストリビューションのパッケージビルダーはそのディストリビューションの要件に合わせて設定できます。/usr/local
彼らが欲しいならまたは、必要に応じて通常のシステムディレクトリ。
答え2
非常に短い答え
/ etcは、オペレーティングシステムの設定ファイルに使用されます。
/usr/local/etcは、あなたと設定ファイル用にインストールされた追加のソフトウェアで利用できます。
答え3
/usr/local/etc
Linuxの世界ではほとんど使用されていません。ただし、設定ファイルを別の場所/etc
に保存するかどうかは通常/usr/local/etc
コンパイル時に決定されます(コマンドラインオプションまたは環境変数でオーバーライドされることがよくあります)。コンパイル時のデフォルト値は何であるかは問題ではありません。設定が簡単であることを確認してください(通常--sysconfdir
autoconf以下のオプション)。デーモンが配布用にパッケージ化されている場合は、実行可能ファイルが入ってきます/usr/sbin
(ソースからビルドするときはデフォルトである必要があります/usr/local/sbin
)、設定は/etc
。
これは/etc
「多くのアプリケーションデータ」のための場所ではありません。つまり/var
、ソースからビルドするときのデフォルト値はまたは/var/local/mydaemon
です/var/lib/mydaemon
。同様に、ソースからビルドするときにデフォルト値が何であるかについての厳密な規則はありません。コンパイル時のデフォルト値(通常は使用されますconfigure --localstatedir
)とランタイムのデフォルト値(設定ファイルの設定の使用、コマンドラインオプション、または環境変数の使用可能)の両方を変更する方法が必要です。
答え4
Archユーザーとして、私は/usr/localを完全に避け、/ etcのみを設定に使用します。ソースからインストールするときは、小さなPKGBUILDファイルを作成し、後で他のコンピュータで他の人と私が使用できるようにArch User Repository(AUR)にアップロードすることをお勧めします。 AURにあるパッケージ数とパッケージ生成速度を判断してみると、このような考えをする人が私だけではありません。これにより、ソースからパッケージをインストールしなくても、誰もがパッケージを使用する機会が増え、/usr/localなどの古い場所を回避できます。
Debian は /usr/local に何かをインストールするよりもソースパッケージを構築するというアイデアが好きなようです。したがって、次のユーティリティがあります。インストールの確認。
インストールしたいソースパッケージを作成することは、ファイルの場所を追跡し、それらのいくつかが他のパッケージや他の "make install"によって一貫して上書きされないことを確認するための良い方法です。 「make uninstall」を使って削除するのは良い解決策ではありません。インストールされているバージョンに関する情報は、最新のパッケージマネージャが追跡するのに役立つもう1つの情報です。
私は/usr/localを完全にあきらめます。これはパッケージのインストール(システム全体のディレクトリがより適切になるでしょう)やユーザーのためではなく、何も置くのに最適な場所ではありません。