
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 は、qf プロジェクトの開発を実行する前に必要なパッケージをインストールするための依存関係のみを含む apt パッケージです。私は (元々) 次のようにしてパッケージをインストールしていました。
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
追伸
私は関係のない項目に取り組んでいたため、この問題を忘れていました。今日、再びこの問題に遭遇し、誰かが質問していたことに一瞬興奮しましたが、それが私の質問であることに気づき、答えがなかったので、自分で手探りで解決する必要がありました。