![アプリケーションファイル(データ、キャッシュ、ログ、競合など)をどこに保存する必要がありますか? [閉じる]](https://linux33.com/image/144515/%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%EF%BC%88%E3%83%87%E3%83%BC%E3%82%BF%E3%80%81%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%80%81%E3%83%AD%E3%82%B0%E3%80%81%E7%AB%B6%E5%90%88%E3%81%AA%E3%81%A9%EF%BC%89%E3%82%92%E3%81%A9%E3%81%93%E3%81%AB%E4%BF%9D%E5%AD%98%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E9%96%89%E3%81%98%E3%82%8B%5D.png)
このトピックについていくつかの調査を行いましたが、目的の正確な情報を取得できませんでした。実際、具体的な開示はなく、誰のアプローチも異なります。
のための:ファイルシステム階層標準
私のファイルを次の場所に保存する必要があります。
一時ファイル:
/var/temp/app_name/*
または/temp/app_name/*
キャッシュファイル:
/var/cache/app_name/*
構成ファイル:
~/.config/app_name/*
ログファイル:
/var/log/app_name/*
データファイル(データベースなど):
???
質問1:これが最新システムへの正しいアプローチですか?
XDG
標準用ここで説明されています:
一時ファイル:
???
または/temp/app_name/*
キャッシュファイル:
~/.cache/app_name/*
構成ファイル:
~/.config/app_name/*
ログファイル:
???
データファイル(データベースなど):
???
なぜキャッシュファイルを~/.cache
。/var/cache
このような場合は混乱しています。どこに行ってもアプローチが違っていました。
質問2:純粋なLinuxディストリビューション($ XDGを使用しない)からアプリケーションを作成するには、ファイル(データ、ログ、一時ファイル、構成など)をどこに置く必要がありますか?
Q3:一部のアプリケーションはLinux構造を使用していますXDG
。彼らはこれをどのように選びましたか?どんな状況によると?$XDG
私たちが使用している場合は、環境変数を使用しますか?
上記の内容に基づいて、私のenv | grep -i "XDG"
結果は次のとおりです。
XDG_VTNR=1
XDG_SESSION_ID=1
XDG_DATA_DIRS=/home/furkan/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
XDG_RUNTIME_DIR=/run/user/1000
XDG_SEAT=seat0
添付: 私が見せている部分がわからない。 ???
答え1
混乱する部分は、ユーザアプリケーションとシステムアプリケーションの違いであり得る。
たとえば、エンドapache
ユーザーとして実行されません(「Harry」は通常Apacheを実行せず、システム起動スクリプト(systemdやinitなど)で実行されます)。これらのアプリケーションは通常、ファイルシステム標準に準拠し、ログファイルを/var/log
設定ファイル/etc
などに保存します。
同様にroot
、システム全体に影響を与えるためにシステム管理者が実行するコマンド(またはapt
)yum
もファイルシステムの標準に従います。
ただし、Webブラウザやその他のデスクトップアプリケーションなど、エンドユーザーが実行するように設計されたアプリケーションはXDG標準に準拠しています。ここで、「Harry」は「Julie」とは異なる独自のプライベートキャッシュを持ち、異なるサイトを訪問するため、異なるページがキャッシュされます。同様に、HarryはJulieとは異なるデスクトップを構成できるため、構成は~/.config
その領域にあります。
一部の場所(たとえば/tmp
)はすべてのユーザーが共有するように設計されているため、デスクトップアプリケーションでも使用できます。しかし、ここでも時々/run/user/
より現代的な構造が使用されます。