インストールされたソフトウェアはLinuxのどこに保存されますか?[重複]


11

重複の可能性:
一般的なLinuxプログラムがインストールされている場所

Linuxは初めてなので、パッケージについてもう少し質問したいと思います。

Windowsでは、.exeファイルをダウンロードしてインストールします。インストールするときに、アプリケーションを保存するパスを定義します。そのフォルダーには、アプリケーションに必要なすべてのファイルがあります。

しかし、yumまたはを使用してLinuxにパッケージをインストールするときapt-get、パッケージがインストールされている場所と、そのアプリケーションに必要なファイルが格納されている場所がわかりません。ほとんどの設定が/etcディレクトリにあることを確認しました。しかし、なぜLinuxはアプリケーションに必要なファイルを異なるディレクトリに保存するのでしょうか?

パッケージがどのようにインストールされ、どこにどのように保存されるかを誰かに教えてもらえますか?また、パッケージ管理に関する私の理解が間違っている場合は、私を訂正してください。


ディストリビューションでを使用している場合はrpm、を使用rpm -q --whatprovidesして特定のファイルのパッケージ名rpm -q -aを見つけ、パッケージがインストールしたファイルを見つけることができます。
David Schwartz、

apt-get、パッケージがインストールされている場合はdpkg -L PKGNAME、使用されていない場合はを使用しますapt-file list
トール

回答:


14

すでに述べたように、多くのプログラム(バイナリー/スクリプト)は、さまざまな構成ディレクトリー(多くの場合、/の下)に、/binまたは/usr/bin他の部分とともに含まetcれます。

特定のコマンドについて、whereisをチェックアウトできます

whereis prog_name

このコマンドがどこにあるかについての情報を提供します。あなたもどちらかを試すことができます

which prog_name

また、このグラフィックと説明/例が役立つ場合があります。


1
whereisの+1-Linuxの

しかし、なぜ構成が別のディレクトリに保存されるのでしょうか。

@KOUこれの履歴はわかりませんが、別のディレクトリにあるため、構成情報をめちゃくちゃにせずにプログラムを更新できる可能性があります。このようにして、異なるバージョンが同じ構成情報を使用できます(フォーマットなどが変更されていない、つまり互換性があると仮定)。私はここで推測しています。明確な答えを得るには、Unix / Linuxファイルシステムの履歴を調査する必要があります。
Levon、2012

1
システム全体の構成ファイルをすべてに配置する決定の履歴は/etc/わかりませんが、構成ファイルを1か所にまとめておくと、バックアップが非常に簡単になります。(Windowsのシステム全体の構成ファイルのバックアップを想像してください。ファイルシステムとレジストリ全体に散在しています...)
Li-aung Yip

@ Li-aungYip良い点
レボン

5

Windowsでは、特に古いバージョンでは、プログラムが構成ファイルと非定数データをC:\Program Filesディレクトリに格納するのが一般的でした。これは、プログラムが通常インストールされ、シングルユーザー、ネットワーク、ファイル権限のないDOSの下で実行された方法に由来します。

セキュリティの観点から、これは悪い考えです。実行可能コードが存在する場所は、変更可能なデータから分離する必要があります。そうすれば、適切なファイル権限を適用して、許可されていないユーザーによるインストール済みバイナリの変更を防ぐのが簡単になります。同様に、メインの実行可能ファイルとは別に更新できるライブラリディレクトリも、別のディレクトリにある必要があります。

VistaとUACの煩わしさの出現により、この伝統はついに深刻な牽引力を失い始めています。

UNIXとLinuxは、以前からマルチユーザーシステムであり、インストールされたバイナリをroot以外のユーザーが変更できないようにする必要があったため、実行可能ディレクトリを他のディレクトリから分離する傾向がありました。これも理由で/usrあり、場合/sbinによっては個別のパーティションです。特にセキュリティを意識した管理者は、これらのパーティションを読み取り専用でマウントし、インストール/アンインストールが必要になったときに読み取り/書き込みで再マウントできます。

パッケージは通常、パッケージマネージャーからインストールされます。aptitude(Debianと派生ディストリビューション)、yum(Redhatと派生ディストリビューション)、pacman(どのディストリビューションかを忘れて...)など、さまざまなパッケージマネージャーがあります。

パッケージマネージャーを使用すると、洗練された(無料の)「アプリストア」のように、リポジトリの参照、ソフトウェアのダウンロード、インストール、クエリ、および削除を行うことができます。依存関係が確実に処理され、現在インストールされているものを追跡する責任があります。

通常、パッケージマネージャーは、リポジトリの外で手動でダウンロードしたパッケージに対しても同じ操作を許可します。自分で作成またはコンパイルしたソフトウェアから独自のツールを作成する場合も、ツールを利用できます。

パッケージ自体は実行可能ファイルではないので、信頼できる実行可能ファイルを実行する必要はありません。この実行可能ファイルは、何をしているのか本当にわかりません。(Windowsのは最終的に配布することでアップデートして周りに来ている.msu「の代わりにSを.exeS」 -しかし.msiさんは...しばらくの周りされています)


1
再 pacman、それはArch Linux用です。

2

特定のyumパッケージがインストールするファイルのリストを取得するには、次のようにします。

yum install yum-utils

その後、次のように実行できます。

repoquery --list yum-utils

(明らかに、2番目の「yum-utils」を、ファイルリストを表示したいパッケージの名前に置き換えます。)

についてはapt-get、以下を使用できます。

dpkg -L package-name

1

/usr/binインストールする特定のアプリケーションまたはライブラリによって異なりますが、通常はの下にあります。


1

Linux / Unixでは、ほとんどのプログラムは通常、単一のディレクトリに配置されませんが、その異なる部分(実行可能ファイル、構成ファイル、ログファイル、ドキュメント、その他のリソース)は、通常はシンボリックリンクによってファイルシステムに散在しています。Wikipediaの記事は異なるディレクトリと何がそれぞれに見つけることを期待することができを示し、通常のファイルシステムの階層の下にさらに詳細に標準的なディレクトリ構造を説明しています。


0

/optディレクトリには、各パッケージは、独自のディレクトリツリーを持つWindowsのようなインストールのために予約されています。誰もそれを使用しません。理由はわかりません。パッケージをインストールするたびにに追加/opt/PACKAGE/binするの$PATHは面倒すぎるかもしれません。


/optほとんどの場合、MATLABなどの商用/非フリーソフトウェアパッケージで使用されているようです。
Li-aung Yip、2012

私のUbuntu 12.04にはGoogle Chromeがインストールされて/optいますが、ここから直接インストールしたLibreOffice 3.5もインストールされました

0

Linuxのソフトウェアは、WindowsやMacとはパラダイムが少し異なります。Windowsが正常にそれらを保持します。これらには、実行可能ファイルとそのすべてのサポートファイルは、単一のフォルダにインストールされているc:\Program Files\program name中で、アップル、/Applications/program.app。Linuxでは、さらに...共同構造があります。バイナリは通常に/usr/binあり、システム全体の構成はにあり/etc、ユーザー固有の構成は通常にあり~/.programます。ライブラリはにあり/usr/lib、サポートファイル(アートワークなど)はしばしばに/usr/share/programあります。どこに行くべきかを示唆する標準さえあります。

プログラムは、一般的に、パッケージマネージャがインストールされ、されているrpmdpkg、これらはyumaptitude/ apt-getによってそれぞれ自動的に検索および取得されます(依存関係管理を含む)。より技術的なレベルでは、パッケージは単純な圧縮ファイルです(rpmとdebはどちらもそうです.tar.gz)。これらのアーカイブファイルは(例えばに設置することになったファイルは行くルートからファイルシステムの断片のミラーを含ん/usr/bin/programでなりusr/bin/program、パッケージ内の適切なフォルダの下に。

特定のパッケージに関する情報を見つけるには、ここで他の人が説明しているように、システムのパッケージマネージャーを使用します。


0

hierの manページには、いくつかの洞察を提供することができます


2
このリンクで質問に答えることができますが、回答の重要な部分をここに含め、参照用のリンクを提供することをお勧めします。リンクされたページが変更されると、リンクのみの回答が無効になる可能性があります。
MaQleod 2012

@MaQleodリンクが無効になる可能性がある場合は、便宜上リンクを張っています。「man hier」はプレーンテキストで簡単に書くことができます。このマンページは、主流のLinuxディストリビューションで見つかるからです。
AnonymousLurker

2
「マニュアルを見る」も適切な回答ではなく、コメントです。答えは実際に質問に答えるべきです。これは提起された質問にどのように答えますか?階層リストはどのように重要ですか?OP(または他の誰も)がこの回答を注目に値するものと見なすべきなのですか リンク(またはmanページ)の関連部分をコピーし、それらが質問のコンテキストで重要である理由を説明してください。そうすれば、単にコメントをするのではなく、質問に答えることになります。
MaQleod 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.