コマンドラインアプリケーションを構築していますが、一時データをファイルに保存する必要があります。アプリケーションがUNIXベースのシステム(この場合はUbuntu 12.0.4)にキャッシュを保存するための規則がどこにあるのかわかりませんか?
「Unixベースのシステム」は、すべてのUnixベースのシステムに適用される一般的に適用可能なあらゆる種類の決定を行うにはあまりにも一般的なカテゴリです。問題は、ファイルシステムの構造(および物を置くための「適切な」/「従来の」場所)が「Unix」のさまざまなフレーバー間で非常に大きく異なるため(それと呼べる場合でも)、ほとんど処理する必要があることです。ケースバイケースで。
いくつかの例:
答えは、Linux、BSDのディストリビューションであるかどうかにかかわらず、オペレーティングシステムのどこに何かを格納するかについての標準的で、社会的に受け入れられ、十分に統合された規則です。 、Solaris、HP-UXなどは正確な状況に依存します。具体的には:
apt-get
やyum
などのコマンドを使用して、Webサイトからインストーラーをダウンロードせずに直接インストールできますか?すべての要因を考慮せずにこれに対する正解はありません。ただし、Ubuntu 12.04、特にの場合、PPAで配布するため、またはUbuntuに送信するために、パッケージを.deb
ファイルにビルドする場合独自のパッケージリポジトリ(main
またはuniverse
)の場合、キャッシュを/var/cache
に保存することをお勧めします。しかし、それはUbuntuのみであり、あなたは確かに仮定を適用すべきではありませんすべてのディストリビューションまたはUnixベースのOSは、これを許容できると見なします。
さらに、システムの起動間でキャッシュデータを保存することに利点がない場合は、/ tmpにも属している可能性があると思います。
プログラムが使用するすべてのタイプのファイル(共有データ、実行可能ファイル、ライブラリ、ヘルプファイル)について、これらのパス規則の問題が発生することに注意してください。 、画像、音声、Webページなど。したがって、キャッシュファイルについて質問している場合、他のファイルタイプをどのように処理する予定であるか疑問に思う必要があります。あなたはただ素朴な仮定をしていて、誰もあなたに反対しないことを望んでいますか? Ubuntuのドキュメントや標準を読んでいない場合は、それらをどこに置くかを提案しているので、何かを想定するのは悪い考えです。たとえば、ライブラリが他の場所に属している場合があるため、ライブラリを常に/ usr/libに貼り付けるのは間違いである可能性があります。
さらに、ソフトウェア開発者として最も責任があるのは、エンドユーザーがファイルを配置する場所を決定できるようにすることだと思います。デフォルトを設定できますが、ユーザー(およびディストリビューター)は、ディストリビューションに合わせてビルドをカスタマイズできます。
これを行う最も簡単な方法は、 GNU Autoconf を使用してプログラムをビルドすることです。 Autoconfは、ユーザーがコマンドライン引数をビルドスクリプトに渡して、さまざまな「ディレクトリタイプ」のパスをデフォルトから変更できるビルドシステムです。ほとんどすべてのディストリビューションには、すべてのAutoconfパッケージ用のビルドスクリプトがあり、タイプごとにディストリビューションに適した従来のディレクトリを設定します。それらは特にキャッシュ用のディレクトリタイプを持っています: sharedstatedir 。