私はプログラミングの経験はありませんが、シェルスクリプトが理論的にどのように機能するかを理解しています。スクリプトを実行可能にするには、2つの重要なステップしかありません。
#!/path/to/interpreter
スクリプトの内容を解釈する方法をシェルに伝える必要があります。- ファイル実行権限を付与する必要があります
chmod +x filename
。
これまでは理解できますが、1つの.tar.gz
パッケージに多数のファイルが圧縮されている「実際の」プログラムはこの種のインストールとどのように異なります。つまり、Linuxでのインストールは実際に何を意味しますか?
答え1
Unixプログラムのインストールは通常2つの部分で構成されています。
1)ファイルを適切な場所に入れてください
2) ファイル権限と所有権を適切に設定します。
最初の点については、Linuxファイル階層標準
関連しています。これはLinux固有のものですが、主に歴史的に性文化されたUnixの規則に従います。具体的には、ユーザーが実行することを意図したバイナリはに配置され/usr/bin
、管理などに使用されるシステムレベルのバイナリはに配置され、ローカルにインストールされたバイナリは通常などに/bin
配置されます。/usr/local/bin
これは、DebianでPATH変数に基づいて実行時にシステムがチェックする場所です。同様に、ライブラリは、/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
同様の規則に従って特定の場所/usr/lib
などに配置される。繰り返しますが、デフォルトでは、システムは実行時にこれらのディレクトリをチェックするように設計されています。/lib
/usr/local/bin
ドキュメント(マンページを含む)とデータファイル用の別の指定された場所がありますが、これはシステム機能にとってそれほど重要ではありません。
2番目のポイントでは、システムのさまざまな部分にあるファイルは所有権と権限が異なります。ほとんどのファイルはルートが所有していますが、関連グループはさまざまです。
実際のインストールメカニズムはさまざまですが、通常はビルドシステムのインストール先によって処理されます。無料のUnixシリーズシステム(Linuxベースのシステムなど)の場合、最も一般的なビルドシステムはAutotoolsとCmakeです。
通常、追加のレイヤーがあります。通常、Linuxシステムにはバイナリパッケージマネージャがあります。これらのパッケージは通常、インストール先を呼び出してビルドされますが、ファイルをシステムにインストールするのではなく、バイナリパッケージのビルドプロセスの一部として一時ディレクトリにインストールします。 Debian の場合、これは通常debian/tmp
ソースディレクトリのサブディレクトリです。
システムにバイナリパッケージをインストールすると、ローカルインストールに比べて多くの利点があります。特に、どのファイルがどのパッケージ/ソフトウェアに属しているかを追跡し、パッケージ/ソフトウェアのアンインストールをクリーンで信頼性の高い方法で処理します。ビルドシステムにオフロードターゲットがある可能性がありますが、これはオフロードを処理する安定した方法ではありません。
答え2
インストールプロセスは、オペレーティングシステムのパッケージマネージャによって実行されます。したがって、オペレーティングシステムによって異なります(Linuxはカーネルです)。
たとえば、Debianはソフトウェアパッケージapt
のインストールに使用されるGnu / Linuxです。deb
レッドハット、水洗、Freebsd。など。別のパッケージマネージャを使用してください。
デフォルトでは、ファイルを目的の場所(一般ユーザーが変更できない場所)にコピーし、適切な権限を設定します。また、適切な設定ファイルを調整します。
魔法のようなものはありません。カーテンの後ろにあるのは、削除を簡単にするために追跡するだけです。