Linuxのプログラムはどのディレクトリにインストールする必要がありますか?


43

Linuxにプログラムをインストールし、デーモンとして実行したい。(この場合はTeam Speak 3ですが、質問は本質的に一般的なものです)。提供されるパッケージはありません。tarされたバイナリのみです。慣例により、このようなプログラムはディレクトリ構造のどこに置くべきですか?

Webでは、/ optは「オプションのアドオンアプリ」用であり、/ usrは「ユーザープログラム」用です。/ optを推奨するチュートリアルと、/ usrを推奨するチュートリアルが見つかりました。

では、どちらが「より正しい」のでしょうか?


1
「より正しい」は、ディストリビューションによって異なります。パッケージマネージャーによって管理されていないソフトウェアを配置する場所(多くの場合/usr/local)、または独自のパッケージを作成する方法については、ディストリビューションのガイドラインを確認してください。
レイアス14

ライアス、ありがとう。あなたのコメントは、答えを見つけるのに役立ちました(askubuntu.com/questions/1148/…)。したがって、私の場合(UbuntuベースのLinux Mintを使用)は/ optである必要があり、アプリケーションは単一のフォルダーを使用しています。コメントを回答に変換する場合、私はそれを受け入れます。
Eiver

回答:


27

「より正しい」は、ディストリビューションによって異なります。パッケージマネージャーによって管理されていないソフトウェアを配置する場所(多くの場合/usr/local)、または独自のパッケージを作成する方法については、ディストリビューションのガイドラインを確認してください。

TeamSpeakがすべてを1つのフォルダーに入れる(そして再編成するのは簡単ではないかもしれない)と言ったように、はい/opt/がおそらく最善です。

(ただし、たとえば、Archlinuxでは、パッケージマネージャーがそこにインストールできるため、PKGBUILDを作成してインストールし/optます。)

また、ディストリビューションは通常Filesystem Hierarchy Standardに準拠しようとするため、ここでより一般的な規則を探します。


使用法ごとに各ディレクトリの場所を知るためのエイリアスはありますか?(たとえば、ルート構成を配置する場所、バイナリ、依存関係、テンプレートを配置する場所など)
Sandburg

5

独自のソフトウェアをコンパイルする場合は、最終的にインストール場所を制御します。慣例により、(apt、yum、pacmanなどのパッケージマネージャーを使用せずに)手動でコンパイルおよびインストールされたソフトウェアはにインストールされ/usr/localます。一部のパッケージ(プログラム)は、サブディレクトリを作成して/usr/local、関連するすべてのファイルを格納します(例:)/usr/local/openssl。他のパッケージは、/usr/local/sbinやなどの既存のディレクトリに必要なファイルをインストールします/usr/local/etc。これらは単にデフォルトの場所であり、コンパイル中に変更できます。

ソフトウェアをコンパイルする--prefix=場合、実行時のオプションを使用してインストール場所を指定できます./configure。を実行して、パッケージで使用可能なすべてのオプションを確認することを強くお勧めします$ ./configure --help | less。さらに、パッケージに付属しているINSTALLおよびREADMEドキュメントを参照することをお勧めします。それらは、パッケージに固有のインストール手順と依存関係情報を含む傾向があります。

FHSによると、ソフトウェアはどこにでも保存できますが、ローカルにインストールされたソフトウェアのソースコードは/usr/local/src 、ソースツリーを保存する標準化に保存する必要があります。構成ファイルまたはバイナリ。一部のパッケージで使用され/usr/srcていても、ソースコードはカーネルなどのシステムソフトウェア用に指定されているため、保存しないでください。

最後に、インストール場所がに含まれていることを確認する必要があります$PATH。パッケージをインストールすることに決めた/opt$PATH、シェルにない場合は、実行可能ファイルが見つからず、プログラムを呼び出すために絶対パスを使用する必要があります。以下にAUの構成に関するいくつかの素晴らしい議論を示します。$PATH

追加の読み物: man hier


5

Linuxの標準ベースはFilesystem Hierarchy Standardには、間違いなくあなたがLinuxシステムにソフトウェアをインストールする必要がありますどこで、どのようの基準であり、のいずれかで、あなたのディストリビューションに含まれていない置くソフトウェアを示唆している/opt/usr/local/というか、サブディレクトリ、その中に(/opt/<package> /opt/<provider> /usr/local/bin)を。

ベストプラクティスは、ダウンロードしたソフトウェアを、ディストリビューション固有のインストール可能なソフトウェアパッケージ(dpkgまたはrpm形式など)に変換することです。これにより、ソフトウェアのレポート、アップグレード、およびクリーンな削除が容易になります。


これは、質問に答えるのではなく、単に再説明するだけです。OPはそれを認識して/optおり/usr/local/、2つの利用可能なオプションでしたが、それらのオプションのどちらを使用するについての特定の情報が必要でした。代わりに、2つの場所が互換性があるという主張をした場合、これは有効な答えになる可能性があります(ただし、そのような場合は正しい答えになることに異議を唱えます)。
JBentley

1

バイナリはbin一般的な規則に従ってフォルダに入れられます。パッケージ構造をどのように整理するかはあなた次第です/opt/<prog_name>/。それが単なるバイナリのリストであるかどうかは考えられます。


私はチーム3人はそれは/ binにまたは/ etcや/ var /ログを使用していないので、それが必要とするすべてのものは、ただ一つのフォルダ(バイナリ、設定ファイル、ログ)に座っているような方法でプログラムを作っ話すことを恐れています
Eiver 14

1

Eclipseインストーラーを介してEclipseをインストールしているときに、同じ質問がありました。

Gimp、Perl、およびVimが/usr/shareフォルダーにインストールされていることに気付き、そこにインストールすることにしました。


0

プログラムのインストール方法に応じて、プログラムをインストールする方法は2つあります。

  1. ソフトウェアマネージャー(apt、synaptic、Gdebiなど)を介して–プログラムはパッケージ形式で、通常は.debまたはrpmです。ほとんどの場合、ソフトウェアマネージャーは依存関係を処理し/usr/bin、通常はにバイナリをインストールし、構成ファイルに/etcなどをインストールします。彼らはまた、あなたの家で、通常はプログラムの設定ファイルを作成するかもしれません~/.foo。このファイルを編集できる場合は、この方法でセッションの設定を簡単に変更することもできます。パッケージを削除すると、マネージャーはすべてのファイルを検索し、それらを完全に削除します(すべての場所を特別なテキストファイルに保存します)。ただし、ホームフォルダーにある構成ファイルなど、一部の構成ファイルは保持される場合があります。

  2. プログラム(通常は圧縮されている)を、アーキテクチャ用にプリコンパイルされたバイナリファイルの形式でダウンロードします。このフォルダ全体は、いずれかに、root権限で、コピーすることができ、他のファイル(ダイナミックリンクライブラリなど)の隣に、プログラムの実行可能ファイルには、1つのフォルダ内に通常ある/opt/usr/binと権限が許可した場合、任意のユーザーが使用することができます。私自身は、バイナリファイルを含むフォルダをホームフォルダに入れ~/binます。これで、binファイルを呼び出してプログラムを実行できるようになります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.