Linuxの実行可能ファイル形式とソフトウェア配布パッケージを理解できません。 Linux自体はさまざまなディストリビューションで提供され、各パッケージは各ディストリビューションごとに個別にコンパイルされるようです。なぜこれですか?特定の「パッケージ」は異なるディストリビューションにインストールするように設計されていますが、ソフトウェアの実行可能ファイル形式が異なることがわかります。
また、多くのLinuxユーザーがGUIバージョンよりもコマンドプロンプトバージョンのアプリケーションを好むのはなぜですか?小さなインストールスペースが必要であることは理解していますが、GUIアプリケーションでも正しくコーディングすると、小さなインストールスペースを持つことができます。
ベストアンサー1
パッケージマネージャと依存関係
ほとんどのLinuxディストリビューションは、ソフトウェアのインストールとアンインストールにパッケージマネージャを使用します。パッケージマネージャは、(ほぼ)すべてのソフトウェアをダウンロードできる中央リポジトリを使用する機能、ソフトウェアを凝集したグループとしてインストールできるバンドルで構成し、主な利点:パッケージの依存関係の処理と追跡などの利点を提供します。削除できるように変更されます。
一部のソフトウェアでは、ソフトウェアで再実装された場合に重複するタスクを実行するために特定のライブラリまたは他のプログラムが必要になる場合があります。パッケージを使用すると、これらの依存関係を表現できます。
違い:パッケージ形式と戦略
さまざまなパッケージマネージャがあります。それぞれは、既存のものが誰かのニーズを満たしていないために作成されました。各パッケージマネージャには独自のパッケージ形式が必要です。
また、ディストリビューションごとに含まれるソフトウェアの要件も異なります。ソースコードからマシン実行可能ファイルにコンパイルするときに提供されるオプションに応じて、さまざまな機能を持つことができるソフトウェアがたくさんあります。一部のディストリビューションは完全な機能セットと豊富な体験を提供したいと思うが、他のディストリビューションでは可能な限りシンプルでシンプルな体験を提供したいと思う。また、ディストリビューションでは、ディレクトリ構造の形式を異なる方法で指定することも、別の初期化システムを使用することもできます。彼らはソフトウェアを異なる方法でバンドルすることに決めることもできます。 2つの異なるディストリビューションに「dev-utils」というパッケージがあるかもしれませんが、あるバージョンにはそれが含まれ、yacc
他のバージョンには含まれません。これらのさまざまな要件により、ディストリビューションはソフトウェアをさまざまな方法でコンパイルすることを選択します。
これが、パッケージマネージャが正しい形式のパッケージを持っていても、そのパッケージが別の展開用である場合は機能しない可能性がある理由です。たとえば、パッケージはyacc
インストールによって異なり、「dev-utils」パッケージを要求してこれらの依存関係を表現しますが、「dev-utils」にはそのパッケージは含まれていませんyacc
。これで、依存関係を満たさないパッケージがインストールされます。
これは問題ではありません。
Linuxディストリビューションの重要な部分は、中央ソフトウェアリポジトリを維持することです。ディストリビューションはこれらすべてを維持します。これは実際にソフトウェアのインストールを非常に簡単にします。通常、パッケージマネージャを使用していくつかのパッケージを検索して選択し、パッケージをインストールするように指示すると、残りは自動的に処理されます。 Windowsソフトウェアのインストールプロセスには、サードパーティのWebサイトでソフトウェアを探し、適切なダウンロードリンクを見つけ、ダウンロードし、ウイルスを確認し、インストーラを実行することが含まれます。これらのどれもLinuxでは標準ではありません。
リポジトリには次のものを含めることはできません。すべて
場合によっては、必要なソフトウェアが配布リポジトリにない場合があります。ソフトウェアリポジトリによって提供されるパッケージは、ディストリビューションの特徴の1つです。展開リポジトリに必要なソフトウェアが見つからない場合は、3つの可能なパスがあります(実際には2つのパスと実際に問題を引き起こす1つの方法)。
コミュニティリポジトリ
多くのディストリビューションには、ディストリビューションに関係のない人が管理する非公式リポジトリがあります。 UbuntuはこれをPPAと呼び、FedoraはFedora People Repositoriesと呼びます。 Arch Linuxには、サードパーティの特定の名前はありません。リポジトリしかし、パッケージ「レシピ」のコレクションであるAURがあります(注:AURは1つしかありません)。パッケージが機能しない場合は、簡単に削除できるため、まずこれらのソースのいずれかからパッケージをインストールできます。
ソースコードからコンパイル
必要な内容を含む非公式のリポジトリが見つからない場合、ソースからコンパイルするのは難しくありません。展開用の開発パッケージをインストールする必要があります。これには通常、ソフトウェアの構築に必要なコンパイラ、リンカ、パーサ、その他のツールなどの基本が含まれます。次に、プロジェクトのソースコードを探します(ほとんどの場合、または.tgz
(.tbz
「tarball」と呼ばれる)にtar -xf filename.tgz
パッケージ化されています)。どこかに自分のディレクトリにダウンロードして解凍します(通常はそのディレクトリに作成されます)。名前のファイルREADME
またはINSTALL
存在する場合は読み続け、次の手順はコマンドラインから実行され、存在する場合は実行しますls
。これは通常、いくつかのテストを実行します。ディストリビューションがどのように設定されているかを確認し、ソフトウェアをコンパイルするために必要なツールがあることを確認します。次のステップは、実際にソフトウェアをコンパイルすることです。これはソフトウェアのサイズによって異なります。コンパイルが完了したら、ソフトウェアを実行できます。これには、コンパイルされた製品をファイルシステムの適切な場所にコピーすることが含まれ、その後ソフトウェアを使用できます。configure
./configure
make
make install
長いセクションですが、以下に要約されています。"readme, ./configure, make, make install"。これが覚えておくべき慣例です。
他のディストリビューションのパッケージのインストール(これをしないでください)
私はこれをリストします。はいそして代替案がありますが、ほとんど確実にうまくいきません。他のディストリビューションのパッケージをインストールすることが可能で、そうしたい場合があります。まあ。システムを理解するまでは、この作業を行わないでください。実際には、可能であってもこれを行う方法を示すために、ここにはどのコマンドも入れません。これが唯一のオプションであるように見えるポイントに達したら、パッケージマネージャを使用してパッケージをインストールしないでください。必要に応じてキャンセルできるようにしました。
コマンドラインビット
何人かの人々は利点のためにコマンドラインを好む。これは次の3つにまとめることができます。
- 自動化が容易
- スピード(GUIのどこをクリックするかと比較)
- 表現力
その中で最も重要なのは表現力です。グラフィカルインターフェイスではできませんが、コマンドラインではできることがあります。
最後に、コマンドラインの手順については、「ここをクリックしてそこをクリックしてください。」タイプのガイダンスを提供するよりも正しい情報を渡す方が簡単なので、役に立つフォーラム(このフォーラムなど)でよく提供されます。