Apt

apt-get 是如何工作的?

  • May 27, 2019

我目前正在使用 Ubuntu 並嘗試在 VM 上安裝 Debian 系統,這意味著我必須處理軟體包。因為我是新手,所以我在網上閱讀了很多關於它的內容,尤其是 debian wiki(ubuntu wiki 也很有用)。特別是,我學習瞭如何創建本地儲存庫以及如何正確編輯 sources.list 文件。

但是,我仍然對它的工作原理有一些疑問,我在網上找不到詳細資訊。

  • 首先,當您使用線上儲存庫時。我知道 apt-get 將跟隨您在 source.list 文件中編寫的連結並蒐索 Packages.gz 存檔。我不明白這個簡單的存檔(似乎只是可安裝包的列表)如何允許安裝包?Packages.gz 是否提供了有關如何查找 .deb 文件然後繼續安裝的恰當資訊?或者是別的什麼?
  • 其次,關於 Sources.gz 檔案。我讀過它是 Packages.gz 中列出的包的原始碼,但在大多數情況下它是不需要的。那麼,如果我在我的 source.list 文件中添加指向此 Sources.gz 的連結,它真正給了我什麼?它有什麼意義?
  • 三、關於本地倉庫;這與前面的問題有關。我知道如何使用 .deb 文件創建本地儲存庫,但假設我只有這個 Packages.gz 存檔:這還不夠,對吧?如果我有 Sources.gz 存檔,它會起作用嗎?
  • 最後,我在 Debian 儲存庫上看到,除了 dist 儲存庫之外,還有一個包含大量 .deb 的池儲存庫。我知道一種安裝方法(下載 .deb 及其依賴項,使用 dpkg -i 安裝它們),但有更簡單的方法嗎?更自動化的東西,可以線上找到 .deb,找到它的依賴項並安裝所有東西?(就像 apt-get 一樣,但據我了解,apt-get 僅適用於 Packages.gz 和 Sources.gz 檔案,而不直接適用於 .deb)

很抱歉,這不是一個真正的問題,而是一個問題列表 ^^ 但我在網上找到的所有內容大多是“apt-get 搜尋線上儲存庫中的軟體包及其依賴項並通過 dpkg 安裝它”,我會喜歡關於它的更多細節。

  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. 如果一個包在發行版的 pool 目錄中但不在Packages.gz,它很可能在另一個Package.gz. 注意你在一個典型的sources.list行中有幾個單詞:

deb http://archive.ubuntu.com/ubuntu precise main universe multiverse

mainuniverse並且multiverse每個都有自己的Packages.gz文件。您可能需要啟用一些,例如 debiannon-free預設禁用。但是,某些軟體包仍然不可用(即使在池中也不可用)。您可以選擇添加不受信任的儲存庫(例如 Ubuntu 上的 PPA),自己打包缺少的程序(以便您和其他人可以使用他們的包管理器來管理該程序)或簡單地自己建構和安裝它(您應該使用/usr/local前綴避免與您的包管理器發生衝突)。 4. 當出現新的(a 版本)包時,Release分發的文件會更新。這允許apt update知道它必須重新下載Packages.gz

引用自:https://unix.stackexchange.com/questions/521328