重複の可能性あり:
典型的なLinuxプログラムはどこにインストールされるか
私は Linux 初心者なので、パッケージについてもう少し詳しく聞きたいです。
Windows では、.exe
ファイルをダウンロードしてインストールします。インストール時に、そのアプリケーションを保存するパスを定義します。そのフォルダーには、アプリケーションに必要なすべてのファイルがあります。
yum
しかし、またはを使用して Linux にパッケージをインストールする場合apt-get
、パッケージがどこにインストールされ、そのアプリケーションに必要なファイルがどこに保存されるかわかりません。ほとんどの構成は ディレクトリにあることがわかりました/etc
。しかし、Linux はなぜアプリケーションに必要なファイルを異なるディレクトリに保存するのでしょうか?
パッケージはどのようにインストールされ、どこにどのように保存されるのか教えていただけますか? また、パッケージ管理についての私の理解が間違っている場合は、訂正してください。
答え1
すでに指摘されているように、多くのプログラム (バイナリ/スクリプト) は、さまざまな構成ディレクトリ (多くの場合、 内または の下) に、/bin
または内の他の部分とともに配置されます。/usr/bin
etc
特定のコマンドについてはチェックアウトできますどこに
whereis prog_name
このコマンドがどこにあるかの情報が表示されます。また、どれの
which prog_name
また、これはグラフィックと説明/例役に立つかもしれません。
答え2
次のコマンドを実行すると、特定のパッケージによってインストールされるファイルのリストを取得できますyum
。
yum install yum-utils
次のように実行できます:
repoquery --list yum-utils
(当然ですが、2 番目の「yum-utils」を、ファイル リストを表示したいパッケージの名前に置き換えてください。)
にはapt-get
、以下を使用できます。
dpkg -L package-name
答え3
Windows、特に古いバージョンでは、プログラムが設定ファイルや非定数データをC:\Program Files
ディレクトリに保存するのが一般的でした。これは、プログラムが通常、シングルユーザー、ネットワーク化されていない、ファイル権限のない DOS でインストールされ実行される方法に由来しています。
セキュリティの観点から、これは悪い考えです。実行可能コードが存在する場所は、変更可能なデータから分離する必要があります。そうすれば、適切なファイル権限を適用して、権限のないユーザーによるインストールされたバイナリの変更を防ぐことが容易になります。同様に、メインの実行可能ファイルとは別に更新される可能性のあるライブラリ ディレクトリも、別のディレクトリに配置する必要があります。
Vista と UAC の煩わしさの出現により、この伝統はついに本格的に勢いを失い始めています。
UNIX および Linux は、かなり以前からマルチユーザー システムであったため、インストールされたバイナリを root 以外のユーザーが変更できないようにする必要があったため、かなり以前から実行可能ディレクトリを他のディレクトリから分離する傾向がありました。また/usr
、 と が/sbin
別々のパーティションになっていることもあるのもこのためです。特にセキュリティ意識の高い管理者は、これらのパーティションを読み取り専用でマウントし、インストール/アンインストールが必要になったときに読み取り/書き込みで再マウントできます。
パッケージは通常、パッケージ マネージャーからインストールされます。パッケージ マネージャーには、aptitude
(Debian および派生ディストリビューション)、yum
(Redhat および派生ディストリビューション)、pacman
(どのディストリビューションか忘れました...) など、さまざまなものがあります。
パッケージ マネージャーを使用すると、高度な (無料の)「アプリ ストア」のように、リポジトリを参照したり、ソフトウェアをダウンロード、インストール、照会、削除したりできます。依存関係が確実に処理され、現在インストールされているものを追跡する責任を負います。
通常、パッケージ マネージャーでは、リポジトリの外部で手動でダウンロードしたパッケージに対しても同じ操作を実行できます。自分で作成またはコンパイルしたソフトウェアから独自のパッケージを作成する場合にも、ツールを利用できます。
パッケージ自体は実行可能ファイルではないため、実際に何をするのか分からない信頼できない実行可能ファイルを実行する必要はありません。(Windows は、ようやく.msu
の代わりにを配布することで更新を行うようになりました.exe
が、.msi
は以前から存在していました...)
答え4
Linux/Unixでは、ほとんどのプログラムは通常単一のディレクトリに収まるわけではなく、そのさまざまな部分(実行ファイル、設定ファイル、ログファイル、ドキュメント、その他のリソース)がファイルシステム全体に分散しています(通常はシンボリックリンクを介して)。ウィキペディアの記事通常のファイルシステム階層における標準的なディレクトリ構造についてより詳細に説明し、さまざまなディレクトリと、それぞれのディレクトリに含まれる内容を示します。