パッケージマネージャと依存関係

パッケージマネージャと依存関係

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./configuremakemake install

長いセクションですが、以下に要約されています。"readme, ./configure, make, make install"。これが覚えておくべき慣例です。

他のディストリビューションのパッケージのインストール(これをしないでください)

私はこれをリストします。はいそして代替案がありますが、ほとんど確実にうまくいきません。他のディストリビューションのパッケージをインストールすることが可能で、そうしたい場合があります。まあ。システムを理解するまでは、この作業を行わないでください。実際には、可能であってもこれを行う方法を示すために、ここにはどのコマンドも入れません。これが唯一のオプションであるように見えるポイントに達したら、パッケージマネージャを使用してパッケージをインストールしないでください。必要に応じてキャンセルできるようにしました。

コマンドラインビット

何人かの人々は利点のためにコマンドラインを好む。これは次の3つにまとめることができます。

  • 自動化が容易
  • スピード(GUIのどこをクリックするかと比較)
  • 表現力

その中で最も重要なのは表現力です。グラフィカルインターフェイスではできませんが、コマンドラインではできることがあります。

最後に、コマンドラインの手順については、「ここをクリックしてそこをクリックしてください。」タイプのガイダンスを提供するよりも正しい情報を渡す方が簡単なので、役に立つフォーラム(このフォーラムなど)でよく提供されます。

答え2

回答が長くてすみません。速くて汚いことをしたい場合は、要約をお読みください。

一般化する

  • 実行ファイル形式は同じです。
  • パッケージプログラムが互換していても、互換性のないさまざまなパッケージマネージャがあります。 (パッケージはファイルなどのインストーラファイルと考えることができます.msi)。
  • デフォルトでは、ディストリビューション/バージョンごとにコアライブラリのバージョンが異なり、一貫性と信頼性のためにこれらのバージョン用にアプリケーションを構築する必要があります。 (Dll地獄のLinuxバージョン)。
  • ディストリビューションごとに少し異なる処理があるため、互換性の問題が発生することがあります。
  • コマンドラインはより速く、UnixコマンドラインはWindowsのコマンドラインよりはるかに優れています。

パッケージマネージャ

まずパッケージマネージャです。パッケージマネージャの主な目的は、インストールされたパッケージとそのパッケージを構成するファイルのデータベースを維持することです。

パッケージマネージャを使用すると、パッケージを簡単にインストールしたり、パッケージを簡単に削除したりできます。また、パッケージは、システムの一貫性を維持するためにインストール/削除時に実行する必要があるさまざまなスクリプトを指定できます(たとえば、特定のサブシステム固有のデータベースにパッケージを登録するなど)。

さまざまなパッケージマネージャ

さまざまな利点と欠点を持つさまざまなパッケージマネージャがあります。例にはrpmとdebianパッケージマネージャ(.debファイル)が含まれますが、他のものもあります。これらのパッケージマネージャは明らかに異なるフォーマットを必要とするので、互換性はありません。

さまざまなディストリビューションまたはバージョン

ほとんどのLinuxディストリビューションはオープンソースなので、Windowsシステムよりもコードの再利用が多くなります。アプリケーションは、機能のさまざまな部分を実装するために多くのライブラリを使用できます。ライブラリ自体でもこれを行うことがよくあり、時には同じライブラリでも実行されます。

残念ながら、ライブラリはさまざまなバージョンで存在し、その一部は互換性がありません(特にプリコンパイルされた実行可能ファイルのバイナリ互換性)。 Unixシステムでは、複数のバージョンがうまく共存できますが(この観点から見るとdllの地獄を減らす)、ほとんどの場合、1つのランチャーで2つの異なるバージョンのライブラリを使用すると競合が発生します。

その結果、バイナリディストリビューションは、さまざまなコアパッケージの新しいバージョンを引き続き使用するために独自にアップグレードされることがよくあります(他の場合は大規模なアップデートを実行する必要があります)。

その他のファイル

さらに、Distroは特定のファイルの場所と構成管理方法が異なります。パッケージに影響を与える可能性のあるパッケージによって異なります。

コマンドライン

Unixは主にワークステーションであり、サーバーオペレーティングシステムです。これは、プロのシステム管理者を念頭に置いて設計されたことを意味します。自動化はシステム管理ツールボックスの重要な部分であり、シェルスクリプトがこれを行う方法です。グラフィックファイルマネージャで、ファイル名の前に0から1000まで追加してみてください。

管理者は複数のコンピュータを管理することが多いため、複数のシステムで同じことを行う必要があります。 SSHなどのツールを使用すると、複数のシステムで同時に作業を実行し、コンピュータが作業を完了するのを待つのが非常に簡単です。

正確な仕様、自動化、および再現性は、タスク管理のためのグラフィックツールよりもコマンドラインをより有望にします。また、Unixに使用できるさまざまなシェルがあり、今回の競争により、Windowsコマンドプロンプトとほとんど比較できない非常に強力なシェルが誕生しました。

実際、Microsoftはこれをよく理解し、最新バージョンのWindows Serverを主に管理するコマンドラインの代わりとしてPowerShellを提供しました。

答え3

実行可能ファイル形式はディストリビューション全体で同じですが、実行可能ファイルが正常に動作するためには追加の基本ソフトウェアが必要になる場合があります。 Redhatベースのディストリビューションを見ると、インストール製品が特定のソフトウェアのすべての要件を含むrpmであり、要件が満たされていないとソフトウェアがデフォルトでインストールされないことがわかります。 (yum一部のRedhatベースのバージョンの代替rpmとして使用してください。)定義によれば、GUIはコマンドプロンプトインターフェースよりもはるかに大きなスペースを占有しなければなりません。 UNIXの基本的なアイデアは、与えられたタスクができるだけ効率的に動作するようにすべてを単純化することです。これが単一のタスクを実行するユーティリティが多すぎて、そのタスクの出力を他のタスクの入力に接続して他のタスクを実行できる理由です。

答え4

アーチ。 または全体的に開発されたFreeBSDです。 (RHEL、SLESなどのシステムは完全にサポートされています。)

ノートパソコン用:ミントカラー

利用可能なハッキングの可能性:Arch。

加法的なハッカー:ジェヌ。

興味深いハッキングの可能性:LFS。

サポート可能性(サーバー):RHEL、Ubuntu LTS、FreeBSD(Linuxとは異なります)。

関連情報