
在基於 dpkg/apt 的系統上,可能會遇到以下訊息:
The following package disappeared from your system as
all files have been overwritten by other packages:
qfdevelopment_metapkg
Note: This is done automatically and on purpose by dpkg.
這究竟意味著什麼?我們該如何處理呢?
在本例中,qfdevelopment_metapkg 是一個 apt 軟體包,僅包含依賴項,以便在執行 qf 專案開發之前安裝必要的軟體包。我已經使用以下命令安裝了該軟體包(最初):
sudo dpkg -i qfdevelopment_metapkg-0.3.8-Linux.deb
sudo apt install -f
我很想知道其他人如何處理這個問題,因為我不明白我摸索出來的解決方法(如果答案中沒有出現,我將列出它)。
答案1
為什麼我們應該關心:當一個sudo apt-get upgrade
有用的建議自動刪除將刪除所有剛剛新增的套件時,這個問題就會出現 - 因為依賴它們的套件已被刪除。
解決方法
這似乎是由於軟體包沒有安裝任何東西造成的。我透過新增一個安裝到 bin 目錄中的簡單腳本解決了這個問題:
INSTALL(PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/list_qf_dev_info DESTINATION bin)
這個list_qf_dev_info腳本的內容只是:
#! /bin/sh
apt-cache show qfdevelopment_metapkg
現在,安裝後,此腳本的存在會導致 apt/deb 系統保留該套件,而不是自動導致它消失。
替代解決方法 - 不編輯 deb
一種不同的解決方法 - 不需要修改 deb - 是在最後再次安裝以使事情順利進行:
sudo dpkg -i qfdevelopment_metapkg-0.3.8-Linux.deb
sudo apt install -f
sudo dpkg -i qfdevelopment_metapkg-0.3.8-Linux.deb
聚苯乙烯
我忘記了這個問題,因為我處理了不相關的項目。今天,我再次遇到這個問題,看到有人問我,我感到很興奮,然後才意識到這是我的問題,而且沒有答案,所以我必須自己摸索。