サーバーではどのディレクトリ仕様に従う必要がありますか?

サーバーではどのディレクトリ仕様に従う必要がありますか?

PCでXDGデスクトップ仕様を使用すると、各デスクトップにさまざまなデータに対して異なるフォルダを持つことができます。サーバー上でのみ実行されるアプリケーションを作成するときは、単にハードコードする必要がありますか、/etc/myappそれとも/var/cache/myapp確認する必要がある潜在的な環境変数または類似項目が必要ですか?

答え1

私が知っている限り、ほとんどのLinuxアプリケーションにはハードコーディングされたパスがありますが、環境変数とコマンドラインパラメータを使用してパスを上書きすることができます。

このパスのハードコーディングに問題はありませんが、設定ファイルの場所をコマンドラインパラメータとして指定し、このconfファイルの変更を許可する場合/var/cache/myapp

すべてをハードコードする場合は、少なくともディストリビューションの既存のパッケージがその場所と競合しないことを確認してください。 DNFベースの展開では、次のようになります(例)。

dnf whatprovides '/var/cache/dnf'
dnf-4.9.0-1.fc35.noarch : Package manager
Repo        : @System
Matched from:
Filename    : /var/cache/dnf

dnf-4.9.0-1.fc35.noarch : Package manager
Repo        : fedora
Matched from:
Filename    : /var/cache/dnf

だからあなたは明らかに使用することはできません/var/cache/dnf

結局のところ、またはにすべてをインストールする方がはるかに/opt/appname簡単です/usr/local/opt/appname。デフォルトのLinuxアプリケーションはこれらのディレクトリを使用しません。

答え2

プログラムにパスをハードコードする必要がありますか?いいえ!

少なくとも、、、、またはシステム管理者が必要な場所にアプリケーションをインストールできるように、コンパイル時にパスを設定する必要があります/var/local。より良いことは、プログラムがその設定ファイルを指すようにするために使用できるコマンドラインオプションがあることです。その後、必要な他のパスを設定するために使用できます。 (デフォルトの場所はコンパイル時に設定されます。)/opt/home/someuser

関連情報