%20%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%20%D1%83%D0%B4%D0%B0%D0%BB%D1%8F%D0%B5%D1%82%20%D0%BD%D0%B5%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5%20%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D1%8B%20%D0%BF%D1%80%D0%B8%20%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B5%20%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D1%85%3F.png)
НапримерТекстовый редактор Atom. Когда я бегу:
sudo apt-get install imagemagick # http://www.imagemagick.org/script/index.php
дает:
you might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies: virtualbox-5.0:i386 : Depends: psmisc:i386 but it is not going to be installed
Итак, когда я пытаюсь:
sudo apt-get -f install
я получил
The following packages were automatically installed and are no longer required:
libgtkspell0 pidgin-data
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
psmisc:i386
The following packages will be REMOVED:
atom gconf2 psmisc
The following NEW packages will be installed:
psmisc:i386
Мой вопрос: почемуАтомудаляться, когда я пытаюсь установить что-то совершенно другое?
РЕДАКТИРОВАТЬ: повторение процедуры, но с
apt-get autoremove
вместо
sudo apt-get -f install
решил проблему.
Но я все еще не понимаю, почему ненужный пакет должен вызывать удаление пакета, который мне на самом деле нужен (атом)
решение1
это происходит потому, что каждый пакет в apt имеет список зависимостей, который можно просмотреть с помощью:
apt-cache depends libgtkspell0 pidgin-data atom
Чтобы сохранить пакеты, apt предлагает вам удалить atom, у которого есть зависимость, конфликтующая с одной из зависимостей atom. Обратите внимание, в частности, на:
Conflicts: libgtkspell0:i386
часть вывода.
Так что apt просто пытается разрешить конфликт. Можно было бы отметить, что, возможно, стоит отправить сообщение об ошибке упаковщику двух пакетов, которые нужно удалить, потому что в теории apt должен предложить удалить пакет, который больше не нужен, а не пакет, который активен в системе, но это всегда баланс, создающий и поддерживающий списки зависимостей/конфликтов в пуле пакетов.
Если бы мне пришлось делать предположения, я бы предположил, что apt на самом деле не имеет внутреннего способа различать удаляемые и активные пакеты при создании списков зависимостей, поэтому он просто выбирает результат с наименьшим количеством отрицательных результатов (т. е. принудительного удаления пакета).