tarファイルを「グローバルに」インストールする方法は? [閉鎖]

tarファイルを「グローバルに」インストールする方法は? [閉鎖]

「sudo apt-get install XYZ」(依存関係がないと仮定)を使用したように、コマンドラインですぐに使用できるようにローカルのtarファイルをインストールしたいと思います。

tarを解凍し、構成/ makeを使用してコンパイルする方法を知っていますが、後でパスを追加する必要がある実行可能ファイルだけが残ります。

/binにコピーして終わることができるようですが、ここで標準的な慣行が何であるか疑問に思います。

ボーナスとしてRPMとは異なるタイプのパッケージを使用してこれを行う方法を知っておくとよいでしょう。

答え1

この回答は以下に基づいています。複数のチャットメッセージこれで、それを拡張された要約として公開しました。

環境$PATH変数

「コマンドラインですぐに利用可能」という言葉は、または同じnameものを入力せずに実行できるという意味であると仮定します。/path/to/name/home/galahad/bin/name./name

あなたの$PATH環境変数区切られたディレクトリ名のリストが含まれています:。シェルで文字を含むコマンドを実行すると、/実行する実行可能ファイルの正確な場所と名前に解決されます。しかし、コマンドを実行するといいえを含めると、/シェルは$PATHディレクトリからその名前の実行可能ファイルを検索し、見つかった最初のファイルを実行します。 (以前に実行した実行ファイルの場所も覚えているので、実際に毎回検索する必要はありません。)

そのため、現在ディレクトリにある実行可能ファイルを./name実行するのが一般的な方法です。代わりにnameランタイムは。name$PATH

実行すると、echo "$PATH"次のような内容が表示されますが、正確に次のようにはなりません。

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

のディレクトリを必ず$PATH呼び出す必要はありませんが、binこれは一般的です。

ビルドの構成

./configureを実行してコンパイルするソースコードがある場合は、通常(または)をmake使用してインストールします。これにより、ビルドディレクトリのファイルがインストール場所にコピーされます。インストールする項目が実行可能なコマンドを提供している場合、その実行可能ファイルは通常。make installsudo make install$PATH$PATH

ソフトウェアのビルドとインストールは、、./configure時にはmakeまたはmake checkを実行しmake testてから、またはを実行するのと同じくらいmake install簡単ですが、ビルドを構成するためにスクリプトsudo make installにオプションを渡したい場合があります。configure特に、pfnueselが言ったように、これが設定方法ですどこソフトウェアがすぐにインストールされる予定です。このmake installステップでは、実際にソフトウェアをインストールしますが、通常、すべてが./configureインストールされる場所を設定します。

最も一般的なオプションはです--prefix。何を使うべきかわからないとき、デフォルトのconfigureプレフィックスは通常です/usr/local。 (時にはプログラムやライブラリのソースコードが別のプレフィックスにデフォルト設定されていることがあります。幸いなことに、これはまれです。)

したがって、./configure一般的に該当するのはです./configure --prefix=/usr/local。ホームディレクトリにソフトウェアをインストールするには./configure --prefix=/home/galahad/home/galahadホームディレクトリの場合)またはを使用できます--prefix="$HOME"。もちろん、ソフトウェアをビルドしてインストールする必要がありますmake。ソースコードの形で配布されるすべてのソフトウェアがこのように構築されるわけではありません。常に抽出されたソースコードアーカイブで文書を見つける必要があります。

どういう--prefix意味ですか?

実行すると、ソフトウェアを次の場所にインストールする必要があることを示します。./configure --prefix=directorydirectory目次。しかし、これが緩いファイルを次の場所に置くことはほとんどありません。directory。代わりに、他の目的で使用されるファイルを別のサブディレクトリに配置します。directory。これらのサブディレクトリがない場合は作成されます。

実行可能ファイルは通常入っていますが、通常はdirectory/binシステム管理に使用されていても入ることができ、ゲームの場合でも入ることができます(現在はほとんどありません)。ライブラリを同じ名前の別のディレクトリ(ヘッダファイルなど)に配置します。マニュアルページを入力してください。ソフトウェアが使用するデータファイルは。directory/sbindirectory/gamesdirectory/libdirectory/lib32directory/includedirectory/mandirectory/share

これはどういう意味ですかdirectoryになるプレフィックス。別のファイルがインストールされる場所を含む親ディレクトリ。したがって、プレフィックスとして表示されます。内部に絶対パスmake installほとんどのファイルとディレクトリはsudo make install

しかし、いくつかの例外があります。システム全体の構成ファイル(時にはそれを使用するソフトウェアがインストールされたときに生成されますが、必ずしもそうではありません)/etcは、通常、別のプレフィックスを指定しても影響を受けません。多くのソフトウェアをインストールしても/usr/local依然としてほとんど使用され、/etcディレクトリ/usr/local/etcが存在しないか、空であるか、ファイルがほとんど含まれない可能性があります。

man hier多くのシステムでは、以下を実行して、一般的なファイルシステムレイアウトに関する詳細情報を見つけることができます。 GNU / Linuxシステムを使用している場合は、次に興味があります。ファイルシステム階層標準

システムにソフトウェアをインストールする場所

ほとんどのGNU / Linuxオペレーティングシステムでは、パッケージマネージャによってインストールされたプログラムを含むシステム上のほとんどのプログラム(ゴボリナックス例外)および他のいくつかのUnixシリーズシステムはプレフィックスとしてインストールされます。通常、システム提供のソフトウェアとの競合を避けたいので、/usrその接頭辞をに渡すことはほとんどありません。./configure

/usr起動プロセスの最初にインストールされなかったネットワーク共有またはパーティションに存在する可能性があります。この時点でアクセスする必要があるソフトウェアは通常インストールされます//usr/bin/binsh/bin/sh

パッケージ管理

ほとんどのパッケージマネージャはバイナリインストールをサポートしています(例外もあります)。通常、パッケージマネージャを使用してGNU / Linuxシステムにソフトウェアをインストールすると、バイナリパッケージがインストールされます。この場合、パッケージマネージャ自体は何もコンパイルしません。ただし、インストールにはまだファイルシステムの場所にファイルをコピーまたは抽出することが含まれます。

これは、パッケージマネージャが付属のほとんどのコマンドをインストールすることを意味します。パッケージマネージャが必ず実行されるわけでは/usrありません。./configure --prefix=/usr./configure

オペレーティングシステムごとにパッケージマネージャが異なります。dpkgなどapt-getのユーティリティを使用するように設計されたDebianやUbuntuなどのディストリビューションを使用する場合aptitudeしなければならないいいえ通常、およびを使ってソフトウェアをrpmインストールしてみてください。yumdnf

しかし、さまざまなパッケージマネージャの重要な原則は同じです。パッケージマネージャがコマンドをインストールすると、通常は$PATHユーザーの環境変数にあると予想されるディレクトリに移動します。 GNU/Linux システムでは、通常、パッケージマネージャによって管理されます。みんなシステム - 他にインストールしたすべての項目に加えて、プレフィックスを含むほとんどのソフトウェアをインストールするため、/usr実行可能なほとんどのコマンドが/usr/binmake installsudo make install

答え2

インストールするプログラムがベストプラクティスに従う場合は、以下を使用してインストールできます。

./configure
make
make install

./configureシステムがすべての要件を満たしていることを確認し、インストールオプションを設定します。makeすべてをコンパイルし、必要なmake installすべてのファイルを正しい場所にコピーします。すべてのライブラリ、マニュアルページなどを正しい場所にインポートするのはかなり面倒なので、この最後の手順を手動で実行したくありません。

パッケージがインストールされる場所を定義することもできます。たとえば、ホームディレクトリにパッケージをインストールする場合(たとえば、管理者権限がないため)、次のようになります。

./configure --prefix="$HOME"/somefolder

make install次に、そのフォルダにインストールします。しかし、一般的にこれは必要ではありません。

関連情報