題 Debian:找到已安裝軟件包的存儲庫


在遺留的Debian機器上有大量不同的源代碼庫 /etc/apt/sources.list.d/,我想為每個已安裝的軟件包找到已安裝的repo。 我想編寫輸出的腳本 apt-cache策略,但在此之前我必須更清楚地了解這個輸出。

我發現了一些我不知道如何解釋的東西:

# apt-cache policy apache2
apache2:
  Installed: 2.2.22-13+deb7u8
  Candidate: 2.2.22-13+deb7u12
  Version table:
     2.2.22-13+deb7u12 0
        500 http://security.debian.org/ wheezy/updates/main amd64 Packages
 *** 2.2.22-13+deb7u8 0
        100 /var/lib/dpkg/status
     2.2.22-13+deb7u6 0
        500 http://cloudfront.debian.net/debian/ wheezy/main amd64 Packages

這是否意味著已安裝當前安裝的版本(帶有***的版本) 在/ var / lib中/ dpkg的/狀態?它甚至意味著要安裝的東西 在/ var / lib中/ dpkg的/狀態

在示例中,我可以在類似主題中找到,如果標有***的部分有一行 在/ var / lib中/ dpkg的/狀態 優先級100,它還有另一行具有http repo和優先級500,我想這意味著該包是從這個優先級500 repo安裝的。

但在我的情況下,從哪個repo安裝了apache2包?由於我們可以看到有一個新版本(repo security.debian.org),這是否意味著該軟件包是從該repo安裝的,但由於有可用的更新,該行已從***部分刪除,這就是為什麼只有一條線 在/ var / lib中/ dpkg的/狀態

或者也許是這一行 在/ var / lib中/ dpkg的/狀態 repo意味著它是從已從sources.list.d文件中刪除的倉庫安裝的?

編輯(對於這篇文章的第一條評論):

  # apt-cache showpkg apache2
    Package: apache2                                                                                                                                                                                         
    Versions: 
    2.2.22-13+deb7u12 (/var/lib/apt/lists/security.debian.org_dists_wheezy_updates_main_binary-amd64_Packages)
     Description Language: 
                     File: /var/lib/apt/lists/cloudfront.debian.net_debian_dists_wheezy_main_binary-amd64_Packages
                      MD5: d24f049cd70ccfc178dd8974e4b1ed01
     Description Language: en
                     File: /var/lib/apt/lists/cloudfront.debian.net_debian_dists_wheezy_main_i18n_Translation-en
                      MD5: d24f049cd70ccfc178dd8974e4b1ed01

    2.2.22-13+deb7u8 (/var/lib/dpkg/status)
     Description Language: 
                     File: /var/lib/apt/lists/cloudfront.debian.net_debian_dists_wheezy_main_binary-amd64_Packages
                      MD5: d24f049cd70ccfc178dd8974e4b1ed01
     Description Language: en
                     File: /var/lib/apt/lists/cloudfront.debian.net_debian_dists_wheezy_main_i18n_Translation-en
                      MD5: d24f049cd70ccfc178dd8974e4b1ed01

    2.2.22-13+deb7u6 (/var/lib/apt/lists/cloudfront.debian.net_debian_dists_wheezy_main_binary-amd64_Packages)
     Description Language: 
                     File: /var/lib/apt/lists/cloudfront.debian.net_debian_dists_wheezy_main_binary-amd64_Packages
                      MD5: d24f049cd70ccfc178dd8974e4b1ed01
     Description Language: en
                     File: /var/lib/apt/lists/cloudfront.debian.net_debian_dists_wheezy_main_i18n_Translation-en
                      MD5: d24f049cd70ccfc178dd8974e4b1ed01

這個輸出讓我感到困惑:版本旁邊的repo名稱與File部分中的repo名稱不匹配。


3
2018-01-24 10:58


起源


有關: superuser.com/questions/106794/... - mcalex
這篇文章的大部分內容都談到了尚未安裝的軟件包,我想知道已安裝的軟件包。儘管如此,我還是嘗試在主題中找到一個命令(apt-cache showpkg)並編輯我的帖子以提供輸出。它只是增加了混亂(見輸出後的註釋)。 - koudougou
我不知道版本號旁邊的數據很重要。根據gotgenes回答的那個鏈接, File: line包含repo。如果你水平滾動到gotgenes輸出的末尾,你會看到有兩個版本的reponame,然後就像輸出上的'... dpkg / status'一樣。我建議 man apt-cache - mcalex
當然,兩者都有 問問Ubuntu 人與人 UNIX和Linux 人群已經處理過這個問題。 - mcalex
但我仍然認為這些信息不重要。啟動'File:'的行有repo。忽略版本號的行。我相當確定 /var/lib/dpkg/status 只是一個當地的目錄。 - mcalex


答案: