web-dev-qa-db-ja.com

apt-getはどのように機能しますか?

現在Ubuntuで作業していて、VMにDebianシステムをインストールしようとしています。つまり、パッケージを扱わなければなりません。初心者なので、Webや特にdebian wikiで多くのことを読みました(ubuntu wikiも役に立ちます)。特に、ローカルリポジトリを作成する方法とsources.listファイルを適切に編集する方法を学びました。

しかし、それがどのように機能するか、ウェブ上で見つけることができなかった詳細については、まだいくつか質問があります。

  • まず、オンラインリポジトリを使用する場合。 apt-getがsource.listファイルに書き込んだリンクをたどり、Packages.gzアーカイブを検索することを理解しました。私が理解していないのは、この単純なアーカイブ(installable packagesのリストにすぎないようです)がパッケージのインストールをどのように許可するかです。 Packages.gzは、.debファイルを見つけてインストールを続行する方法に関する適切な情報を提供しますか?それとも別のものですか?

  • 次に、Sources.gzアーカイブについてです。 Packages.gzにリストされているパッケージのソースコードであることがわかっていますが、ほとんどの場合、必要ありません。したがって、このSources.gzへのリンクをsource.listファイルに追加すると、実際に何が得られますか?それの意味は何ですか?

  • 第三に、ローカルリポジトリについて。これは前の質問に関連しています。 .debファイルを使用してローカルリポジトリを作成する方法を知っていますが、このPackages.gzアーカイブしか持っていないとしましょう。十分ではありませんか? Sources.gzアーカイブがある場合、それは機能しますか?

  • 最後に、Debianリポジトリで、distリポジトリに加えて、多くの.debを含むプールリポジトリがあることを確認しました。それらをインストールする方法は知っていますが(.debとその依存関係をダウンロードし、dpkg -iを使用してインストールします)、もっと簡単な方法はありますか? .debをオンラインで見つけ、その依存関係を見つけ、すべてをインストールする、より自動的なものは何ですか? (apt-getと同様ですが、私が理解している限り、apt-getはPackages.gzおよびSources.gzアーカイブでのみ機能し、.debでは直接機能しません)

これは実際には質問ではなく、質問のリストです^^しかし、オンラインで見つけたものはすべて「apt-get search for the package and its dependency in the online repository and install it through dpkg」でした。それについての詳細のように。

7
Ablia
  1. Packages.gzには、Filenameフィールドが含まれ、値はおそらくpool/main/n/name-of-package/name-of-package_version_AMD64.debのようになります。これは、パッケージマネージャーにそのURLを確認するように指示します。
    たとえば、sources.list(.d)に次の行がある場合:
    deb https://some-domain.com/some-url some-distribution main
    次のファイルが作成されます: https://some-domain.com/some-url/dists/some-distribution/main/binary-AMD64/Packages.gz
    そのファイルはpool/main/n/name-of-package/name-of-package_version_AMD64.debを参照するため、パッケージマネージャーはhttps://some-domain.com/some-url/pool/main/n/name-of-package/name-of-package_version_AMD64.debを参照します。

  2. Sources.gzは同じように機能しますが、オプションです。これはapt sourceと連携して動作し、ビルド済みのバイナリを使用するのではなく、自分でコンパイルする場合にソースを取得します。
    これは主に、プロジェクトのホームページにアクセスしてそこでビルドの指示に従うだけの寄稿者/好奇心の強い人々ではなく、ディストリビューションが使用するパッケージの正確なバージョンにパッチを適用したいシステム管理者に役立ちます。

  3. パッケージがディストリビューションのプールディレクトリにあるがPackages.gzにない場合は、おそらく別のPackage.gzにあります。一般的なsources.list行にいくつかの単語があることに注意してください。
    deb http://archive.ubuntu.com/ubuntu precise main universe multiverse
    mainuniverse、およびmultiverseには、それぞれ独自のPackages.gzファイルがあります。たとえばdebianはデフォルトでnon-freeを無効にするため、一部を有効にする必要がある場合があります。ただし、一部のパッケージはまだ利用できません(プール内であっても)。信頼できないリポジトリ(UbuntuのPPAなど)を追加するか、不足しているプログラムを自分でパッケージ化するか(自分や他の人がパッケージマネージャーを使用してそのプログラムを管理できるようにする)、または自分でビルドしてインストールする(/usr/local接頭辞(パッケージマネージャーとの競合を回避するため)。

  4. 新しい(aのバージョン)パッケージが表示されると、ディストリビューションのReleaseファイルが更新されます。これにより、apt updatePackages.gzを再ダウンロードする必要があることを認識できます。
9
Nathan Monfils