どの組織を選択したとしても、いくつかのことは簡単になり、いくつかのことはより困難になります。
種類、Unixの方法でファイルを整理(へbin
、man
、lib/python
、...)、それが簡単にファイルを使用できるようになります。コマンドを実行する場合は、どのパッケージがコマンドを提供しているかに関係なく、コマンドの場所を知っています。ドキュメントを検索したい場合は、すべて1か所にあります。一部のプログラムがVim構文強調表示モジュール、zsh補完関数、またはPythonバインディングを提供している場合、関連ファイルはvim / zsh / pythonが見つけられる場所にあります。
Unixはまた、使用パターンによってファイルを編成します。構成ファイルが入り/etc
、通常の操作で変更されない/usr
ファイルが入り、自動的に変更されるファイルが入ります/var
。ユーザーデータは以下になり/home
ます。これは、構成管理(/etc
インストールされているパッケージの一覧とインストールされているパッケージの一覧の管理)に非常に役立ちます。また、バックアップ戦略を定義することも役立ちます。何が含まれ/etc
てい/home
て非常に重要であるのに対し、何が含まれているか/usr
は簡単に再ダウンロードできます。
Unixの方法の主なコストは、ソフトウェアのインストールが多くのディレクトリに分散していることです。しかし、現代のUNIXシステムにはとにかくパッケージマネージャがあります。多くのディレクトリでファイルを管理することは、それらが行う最も複雑なことではありません(依存関係の追跡は非常に便利で困難です)。
Windowsとは対照的です。Windowsはパッケージ管理なしで開始し、各アプリケーションは独自のディレクトリをどこかに作成しました。すべてのファイルは通常、そのディレクトリ内にあります。プログラム、静的データ、ユーザーデータなどです。ただし、ライブラリが競合を考慮せずに共通のシステムディレクトリにドロップする場合があります(「DLL hell」)。時間の経過とともに、Windowsはマルチユーザーになり、ユーザーディレクトリをシステムディレクトリから分離する必要がありました。Windowsは、構成ファイル(Unixの/etc
)といくつかのシステムデータ(Unixの/var
)、レジストリ。これは、主にパッケージ管理の欠如とシングルユーザーシステムとしての初期の歴史による、より歴史的な成果物です。Windowsのアプローチには多くの制限があります。ソフトウェアパッケージが簡単に相互作用することはできません。たとえば、インストールされているほとんどのソフトウェアは、デフォルトのコマンド検索パスに到達しないため、あらゆる形式のスクリプトと適切に相互作用しません。インストーラーは通常、特別なケースとしてメニューアイコンを提供します—別のシステムディレクトリにドロップされます(Unix!)。
Unixアプローチの制限は、パッケージの複数のバージョンの共存を簡単に許可しないことです。これは、パッケージのアップグレード中に特に問題になります。両方の世界を最大限に活用する方法は、各パッケージを独自のディレクトリ(/opt
構造)に解凍し、パッケージディレクトリから/usr
構造へのシンボリックリンクのフォレストを作成することです。これは、ストウのようなソフトウェアが行うことです。
要約すると、Unixアプローチにより、ファイルの使用、ファイルの管理、およびパッケージの相互作用が容易になります。パッケージ管理ソフトウェアが必要ですが、とにかくそれが望ましいです。Windowsのアプローチでは、パッケージを手動で管理するのが簡単になりますが、有用な機能を利用するには、Unixモデルに移行する必要があります。