
В системах на базе 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
услужливо предлагается, что autoremove удалит все только что добавленные пакеты, поскольку зависящий от них пакет был удален.
Обходной путь
Кажется, это происходит из-за того, что пакет ничего не устанавливает. Я решил проблему, добавив тривиальный скрипт, который я устанавливаю в каталог 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
ПС
Я забыл об этой проблеме, так как работал над не связанными с ней вопросами. Сегодня я снова столкнулся с этой проблемой и немного обрадовался, увидев, что кто-то задал ее, прежде чем понял, что это мой вопрос и что ответов нет, поэтому мне пришлось разбираться с этим самому.