Debian

如何告訴 aptitude 軟體包是手動安裝的?

  • June 16, 2021

我安裝了一個包(不記得哪個包,但那不應該太重要)並且需要“真正的” ffmpeg,所以我清除了 debian 包ffmpeg並手動安裝了另一個版本。

問題是我現在無法安裝或更新任何軟體包而不aptitude告訴我xyz package需要ffmpeg哪些未安裝。但是,由於安裝了該軟體包,所有依賴它的程序都可以正常工作。我不想用儲存庫版本覆蓋我擁有的版本,我只想告訴aptitudeffmpeg 確實已安裝。

我試過apt-mark了,但因為 aptitude 認為它沒有安裝它不會手動標記它。

根據要求apt-cache policy ffmpeg顯示:

ffmpeg:
 Installed: (none)
 Candidate: 7:3.2.10-1~deb9u1~bpo8+1
 Version table:
    10:2.6.9-dmo1 0
       100 /var/lib/dpkg/status
    7:3.2.10-1~deb9u1~bpo8+1 0
       100 http://http.debian.net/debian/ jessie-backports/main amd64 Packages

我仍然對解決方案非常感興趣,但我決定只安裝儲存庫版本,然後重新安裝我想要的版本。Aptitude 確實“安裝”了 ffmpeg,但它沒有覆蓋我目前的版本(也許它把它放在不同的位置,或者它看到了一個“更新”的版本)。

建議使用 dpkg 安裝隨機包。

在採取任何行動之前閱讀整個答案

Apt有問題,因為它與您的ffmpeg. 就它而言,您沒有ffmpeg安裝並且因此給您上述錯誤。你的輸出apt-cache policy ffmpeg證明了這一點。我不知道將隨機.deb文件與之關聯的方法,apt除非您的包apt在其安裝過程中設置。如果有人可以糾正我這一點,我將不勝感激。如果您需要目前儲存庫中不可用的包,您可以自行決定將 testing/unstable/backports/whatever 儲存庫添加到包含您要查找的包的 source.list 並使用包管理器。

我不建議您使用非官方的 Debian 儲存庫。

ffmpeg 在此處查找可用版本。如果您想要的版本位於穩定版以外的儲存庫中,則應將其添加到您的 sources.list 中。如果您設置“Apt Pinning”,您可以管理多個 Debian 版本,而成本很小。通過刪除目前實例來修復您的ffmpegstart 安裝,以便我們可以從頭開始。

apt-get purge ffmpeg
dpkg --purge ffmpeg
dpkg -l | ffmpeg

這將清除ffmpeg,然後查看是否已安裝。您應該按照此文章rc查找狀態。然後,您可以按照wiki 中關於 apt pinning的指南添加測試和不穩定的儲存庫。不要忘記為您計劃使用的每個儲存庫創建文件以及相應的文件。一旦你創建了正確的文件來設置 apt pinning,你就可以簡單地執行:/etc/apt/sources.list.d/``/etc/apt/preferences.d/

apt-get install ffmpeg/unstable

ffmpeg從不穩定的 repo安裝。如果你設置了 apt pinning,你可以用你想要的包來自的任何 repo 替換不穩定的。

但是,如果您絕對必須使用非官方的 Debian 儲存庫

這是添加包含ffmpeg您可能正在尋找的軟體包的第三方儲存庫的指南。如果您決定使用 apt pinning,則需要創建 repo ( /etc/apt/sources.list.d/deb-multimedia.list) 和首選項 ( /etc/apt/preferences.d/deb-multimedia.preferences)。ffmpeg按照前面描述的方式清除後完成以下步驟。

nano /etc/apt/sources.list

添加這一行:

deb http://www.deb-multimedia.org stretch main non-free

保存並退出。現在按照以下步驟操作:

apt-get update

自 Buster 以來,“-oAcquire::AllowInsecureRepositories=true”選項是強制性的,因此也需要用於不穩定的。

apt-get update -oAcquire::AllowInsecureRepositories=true

apt-get install deb-multimedia-keyring -oAcquire::AllowInsecureRepositories=true

由於 Squeeze,您可以使用 apt-get 安裝此軟體包。當包裹詢問要做什麼時只需按 y (不要按返回)。

如果 apt-get 找不到新密鑰,請執行以下操作:

wget http://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2016.8.1_all.deb
sudo dpkg -i deb-multimedia-keyring_2016.8.1_all.deb

您可以通過以下方式驗證包的完整性:

sha256sum deb-multimedia-keyring_2016.8.1_all.deb
9faa6f6cba80aeb69c9bac139b74a3d61596d4486e2458c2c65efe9e21ff3c7d deb-multimedia-keyring_2016.8.1_all.deb

最後的和強制性的步驟。

apt-get updateapt-get dist-upgrade安裝所有與 ffmpeg 相關的軟體包。

之後你就可以執行了apt-get install ffmpeg,你應該有正確的包。

結論

我知道這涵蓋了很多,但我想全面。我個人管理 Debian 的理念是盡可能不要偏離穩定版,不要偏離根據Debian wiki正確設置 apt pinning 的官方儲存庫,並仔細限制和管理.deb來自原始碼或從原始碼安裝的任何內容。如果您可以通過讓您可以管理的所有內容來幫助防止包/庫的版本控制之間發生衝突,apt那麼您應該是安全的。

抱歉,如果這太冗長或不是您需要的,我只是想確保我涵蓋了所有基礎。祝你好運!

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