パッケージマネージャーと依存関係
ほとんどのLinuxディストリビューションでは、ソフトウェアのインストールと削除にパッケージマネージャーを使用しています。パッケージマネージャーは、(ほとんどの)ソフトウェアをダウンロードできる中央リポジトリを使用できること、ソフトウェアを1つのまとまりのあるグループとしてインストールできるバンドルに編成できること、主な利点(自動など)を提供します。パッケージをアンインストールできるように、依存関係の処理とパッケージによる変更の追跡。
特定のソフトウェアは、そのソフトウェアに再実装された場合に冗長になる義務を実行するために、特定のライブラリまたは他のプログラムを必要とする場合があります。パッケージは、これらの依存関係の表現を可能にします。
違い:パッケージの形式と戦略
いくつかの異なるパッケージマネージャーが存在します。既存のものは一部の人々のニーズを満たしていないため、それぞれが作成されました。各パッケージマネージャーには、独自の形式のパッケージが必要です。
さらに、ディストリビューションが異なると、含まれるソフトウェアの要件も異なります。ソースコードからマシンの実行可能ファイルにコンパイルされるときに指定されるオプションに応じて、機能が異なる可能性のあるソフトウェアは多数あります。一部のディストリビューションは、完全な機能セットと豊富なエクスペリエンスを提供したい一方で、他のディストリビューションは、可能な限り無駄のないシンプルなエクスペリエンスを提供したいと考えています。また、ディストリビューションは、そのディレクトリ構造を別の方法でフォーマットするか、別の初期化システムを使用することを決定する場合があります。彼らはソフトウェアを異なる方法でバンドルすることを決定するかもしれません:2つの異なるディストリビューションに「dev-utils」と呼ばれるパッケージがあるかもしれませんが、その1つのバージョンにはyacc
他の人はしませんが。これらの異なるニーズのため、ディストリビューションは異なる方法でソフトウェアをコンパイルすることを選択します。
これが、パッケージマネージャーに適した形式のパッケージがある場合でも、そのパッケージが別のディストリビューション向けである場合は機能しない可能性があるためです。たとえば、そのパッケージはyacc
インストールに依存している可能性があり、「dev-utils」パッケージが必要であることを介してその依存関係を示しましたが、「dev-utils」にはが含まれていませんyacc
。今、満たされていない依存関係でインストールされたパッケージがあります。
それは本当に問題ではありません。
Linuxディストリビューションであることの大きな部分は、中央のソフトウェアリポジトリを維持することです。ディストリビューションはあなたのためにこれらすべてを維持します。これにより、ソフトウェアのインストールが非常に簡単になります。通常、パッケージマネージャーを使用して、いくつかのパッケージを検索して選択し、インストールするように指示します。残りはあなたの代わりになります。Windowsソフトウェアのインストールプロセスには、サードパーティのWebサイトでのソフトウェアの検索、適切なダウンロードリンクの検索、ダウンロード、ウイルスチェック、およびインストールプログラムの実行などが含まれます。その全体の混乱はLinuxの標準ではありません。
リポジトリにすべてを含めることはできません
現在、必要なソフトウェアの一部がディストリビューションのリポジトリにない場合があります。ソフトウェアリポジトリによって提供されるパッケージは、ディストリビューションの差別化機能の1つです。ディストリビューションのリポジトリで必要なソフトウェアが見つからない場合、3つの方法が考えられます(実際には、2つの方法に加えて、実際に問題を解決する方法があります)。
コミュニティリポジトリ
多くのディストリビューションには、そのディストリビューションに関係のない人々が管理している非公式のリポジトリがあります。UbuntuはPPAと呼び、FedoraはFedora People Repositoriesと呼びます。Arch Linuxにはサードパーティのリポジトリに特定の名前はありませんが、パッケージの「レシピ」のコレクションであるAURがあります(注:AURは1つだけです)。機能しない場合は簡単にアンインストールできるため、これらのソースのいずれかからパッケージをインストールしてみてください。
ソースからコンパイル
必要なものが含まれている非公式リポジトリが見つからない場合、ソースからのコンパイルは難しくありません。ディストリビューションの開発パッケージをインストールする必要があります。これには、コンパイラー、リンカー、パーサー、およびソフトウェアのコンパイルに通常必要なその他のツールなどの基本的なものが含まれます。次に、プロジェクトのソースコード(ほとんどの場合、.tgz
orまたは.tbz
(「tarball」と呼ばれます)にパッケージ化されています。それを独自のディレクトリにダウンロードし、それを抽出します(を使用してtar -xf filename.tgz
、通常、作成した1つのディレクトリに移動します。そのディレクトリと呼ばれるファイルであってもよいREADME
かINSTALL
。それらのほとんどが同じことを行うためにあなたを伝える次のいくつかの手順は、コマンドラインで実行されます実行します。。。それが存在する場合は、先に行くと、それを読んでls
、呼び出された実行可能ファイルを探しconfigure
。存在する場合は、次のように実行し./configure
ます。場合によっては数分かかることがあります。これは通常、ディストリビューションでどのように設定されているかを把握するためにいくつかのテストを実行し、このソフトウェアのコンパイルに必要なツールがあることを確認します。次のステップはを実行することmake
です。これは実際にソフトウェアをコンパイルします。コンパイルするソフトウェアのサイズに応じて、数分から数時間の時間がかかる可能性があります。それが完了したら、を実行しmake install
ます。これによりソフトウェアがインストールされます。これには、コンパイルの結果をファイルシステムの適切な場所にコピーすることが含まれます。その後、ソフトウェアは使用可能になります。
これは長いセクションでしたが、「README、。/ configure、make、make install」として要約されています。それは覚えておくべきルーチンです。
別のディストリビューションからパッケージをインストールします(これを行わないでください)
私はこれが代替であるという理由だけでこれをリストしますが、それはほぼ確実にうまく終わらないでしょう。他のディストリビューション用のパッケージをインストールすることは可能であり、そうしたいと思うかもしれません。まあ、しないでください。システムを十分に理解するまでは、それを行わないでください。実際、それが可能であるとしても、それを行う方法を示すコマンドをここに配置するつもりはありません。これが唯一のオプションであると思われるポイントに達した場合は、パッケージマネージャーを使用してパッケージをインストールしないでください。代わりに、パッケージから物を引き出し、システムに手動で配置します。また、必要に応じて元に戻せるように、実行したことについてのメモも含めます。
コマンドラインビット
一部の人々は、それが与える利点のためにコマンドラインを好みます。これらは次の3つに要約できます。
- 自動化のしやすさ
- 速度(GUI内のあちこちをクリックするのと比較して)
- 表現力
これらの最大のものは表現力です。コマンドラインで実行できることで、グラフィカルインターフェイスでは実行できないものがあります。
最後に、コマンドラインの説明は、このような便利なフォーラムで頻繁に提供されます。これは、「ここをクリックすると、そこにある」タイプの指示を与えるよりも正しい情報を伝える方がはるかに簡単だからです。