Что делать, если «Следующий пакет исчез из вашей системы...»?

Что делать, если «Следующий пакет исчез из вашей системы...»?

В системах на базе 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

ПС

Я забыл об этой проблеме, так как работал над не связанными с ней вопросами. Сегодня я снова столкнулся с этой проблемой и немного обрадовался, увидев, что кто-то задал ее, прежде чем понял, что это мой вопрос и что ответов нет, поэтому мне пришлось разбираться с этим самому.

Связанный контент