Linuxにプログラムをインストールしてデーモンとして実行したい。 (この場合はチームスピーク3ですが、問題は本質的に一般的です)。パッケージは提供されていません。tarされたバイナリのみが提供されています。そのようなプログラムを慣例的にディレクトリ構造のどこに置くべきですか?
ウェブ上で、/ optは「オプションのアドオンアプリ」用、/ usrは「ユーザープログラム」用であることがわかりました。/optを提案しているチュートリアルと、/ usrを提案しているチュートリアルが見つかりました。
それで、どちらが「より正しい」ですか?
「より正確」は、ディストリビューションによって異なります。パッケージマネージャーで管理されていないソフトウェアを配置する場所に関するディストリビューションのガイドラインを確認する必要があります(多くの場合/usr/local
)OR独自のパッケージを作成する方法について。
TeamSpeakはすべてを1つのフォルダーに配置するだけであると述べたとおり(再編成は簡単ではない場合があります)、はい/opt/
がおそらく最善です。
(しかし、たとえば、Archlinuxでは、パッケージマネージャーがそこにインストールできるため、PKGBUILDを作成して/opt
にインストールします。)
また、ディストリビューション通常は Filesystem Hierarchy Standard に従っているため、これがより一般的な規則を探す場所です。
独自のソフトウェアをコンパイルする場合は、最終的にインストール場所を制御します。慣例により、(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
Linux Standard Base と Filesystem Hierarchy Standard は、おそらくLinuxシステムにソフトウェアをインストールする場所と方法の標準であり、含まれていないソフトウェアを配置することをお勧めします/opt
または/usr/local/
またはその中のサブディレクトリ(/opt/<package> /opt/<provider> /usr/local/bin
)。
ベストプラクティスは、ダウンロードしたソフトウェアを、dpkgやrpm形式など、ディストリビューションに固有のインストール可能なソフトウェアパッケージに変換することです。これにより、ソフトウェアの報告、アップグレード、および完全な削除が容易になります。
バイナリは、一般的な規則に従ってbin
フォルダーに格納されます。パッケージ構造をどのように整理するかは自由です。/opt/<prog_name>/
バイナリのリストだけの場合。
Eclipseインストーラーを使用してEclipseをインストールするときに、同じ質問がありました。
Gimp、Perl、Vimが/usr/share
フォルダにインストールされていることに気づき、そこにインストールすることにしました。
~/.local/bin
これは systemdの標準 で定義されており、ディレクトリの内容について次のように記述されています。
ユーザーの
$PATH
検索パスに表示される実行可能ファイル。シェルからの呼び出しに役立たない実行可能ファイルをこのディレクトリに配置しないことをお勧めします。これらは、代わりに~/.local/lib/
のサブディレクトリに配置する必要があります。この場所にアーキテクチャ依存のバイナリを配置するときは注意が必要です。これは、異なるアーキテクチャの複数のホスト間でホームディレクトリが共有されている場合に問題になる可能性があります。
ディストリビューションによっては、これを~/.bashrc
に入れて、パスにディレクトリを追加する必要がある場合があります。
PATH=$PATH:~/.local/bin
this も参照してください。
プログラムのパック方法に応じて、プログラムをインストールする方法は2つあります。
ソフトウェアマネージャーを介して(apt、synaptic、Gdebiなど)–プログラムはパッケージの形式で、通常は.debまたはrpmです。ほとんどの場合、ソフトウェアマネージャーは依存関係を処理し、通常はバイナリを/usr/bin
に、構成ファイルを/etc
にインストールします。彼らはまたあなたの家のプログラムのための設定ファイルを作成するかもしれません、通常~/.foo
。このファイルを編集できる場合は、この方法でセッションの設定を簡単に変更することもできます。パッケージを削除すると、マネージャーはすべてのファイルを見つけ、それらを完全に削除します(すべての場所が特別なテキストファイルに保存されています)。しかし、それはいくつかの設定ファイル、例えばあなたのホームフォルダにあるものを保存するかもしれません。
プログラム(通常は圧縮)を、ご使用のアーキテクチャー用に事前コンパイルされたバイナリー・ファイルの形式でダウンロードします。プログラムの実行可能ファイルは通常、他のファイル(動的にリンクされたライブラリなど)の隣の単一のフォルダにあります。このフォルダ全体は、ルート権限で/opt
または/usr/bin
にコピーできます。権限が許可する場合は、任意のユーザーが使用できます。私自身、バイナリファイルを含むフォルダをホームフォルダの~/bin
に配置しました。これで、binファイルを呼び出してプログラムを実行できるはずです。