Проблемы с зависимостями libgtk-3-0


12

Я пытался обновить стандартные пакеты на моем Ubuntu box. В этом окне буквально нет ничего лишнего, кроме VirtualBox для некоторых компонентов Windows, которые я запускаю. Вот один из выводов:

$ sudo apt-get update
[...]
$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
 libgail-3-0 : Depends: libgtk-3-0 (= 3.6.0-0ubuntu3.2) but 3.6.0-0ubuntu3.1 is installed
 libgtk-3-0 : Depends: libgtk-3-common (= 3.6.0-0ubuntu3.1) but 3.6.0-0ubuntu3.2 is installed
 libgtk-3-bin : Depends: libgtk-3-0 (>= 3.6.0-0ubuntu3.2) but 3.6.0-0ubuntu3.1 is installed

И еще один с опцией -f:

$ sudo apt-get -f upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following packages will be upgraded:
  libgtk-3-0 overlay-scrollbar-gtk3
2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
26 not fully installed or removed.
Need to get 0 B/2,397 kB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue [Y/n]? y
(Reading database ... 203437 files and directories currently installed.)
Preparing to replace libgtk-3-0:amd64 3.6.0-0ubuntu3.1 (using .../libgtk-3-0_3.6.0-0ubuntu3.2_amd64.deb) ...
Unpacking replacement libgtk-3-0:amd64 ...
dpkg: error processing /var/cache/apt/archives/libgtk-3-0_3.6.0-0ubuntu3.2_amd64.deb (--unpack):
 trying to overwrite '/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules', which is also in package ibus-gtk3:amd64 1.4.1-7ubuntu1
Preparing to replace overlay-scrollbar-gtk3:amd64 0.2.16+r357-0ubuntu1 (using .../overlay-scrollbar-gtk3_0.2.16+r357-0ubuntu1.1_amd64.deb) ...
Unpacking replacement overlay-scrollbar-gtk3:amd64 ...
dpkg: error processing /var/cache/apt/archives/overlay-scrollbar-gtk3_0.2.16+r357-0ubuntu1.1_amd64.deb (--unpack):
 trying to overwrite '/usr/lib/x86_64-linux-gnu/gtk-3.0/modules', which is also in package libcanberra-gtk3-module:amd64 0.29-0ubuntu2
Errors were encountered while processing:
 /var/cache/apt/archives/libgtk-3-0_3.6.0-0ubuntu3.2_amd64.deb
 /var/cache/apt/archives/overlay-scrollbar-gtk3_0.2.16+r357-0ubuntu1.1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Вот вывод для apt-cache policyвсех соответствующих пакетов: pastebin d3YcjPmJ . Все вроде бы с официального quantalи quantal-updatesрелизного канала и с официального зеркала.

Я также попробовал sudo apt-get -f install, sudo apt-get dist-upgradeи sudo apt-get clean && sudo rm -r /var/cache/apt/archives/, но все ведет к одной и той же ошибке.


Да, я сделал обновление с новыми пакетами, и да, я запустил обновление перед обновлением
Logan Best

Обе эти команды получили тот же вывод, что и -f в исходном запросе.
Логан Бест

1
Вы пытались удалить /var/cache/apt/archives/каталог и обновить снова? sudo apt-get clean && sudo rm -r /var/cache/apt/archives/
Лусио

Пробовал и ту же ошибку. Обновленный вопрос.
Логан Бест

@LoganBest Пожалуйста, попробуйте с этим: sudo dpkg -r libgtk-3-0_3.6.0-0ubuntu3.2_amd64.deb && sudo dpkg -r overlay-scrollbar-gtk3_0.2.16+r357-0ubuntu1.1_amd64.debа затемsudo apt-get -f install && sudo apt-get update && sudo apt-get upgrade
Lucio

Ответы:


3

Хорошо, если вы все еще испытываете эту проблему, это происходит потому, что какой-то пакет не будет работать, если версии их пиров не совпадают.

libgail-3-0 : Depends: libgtk-3-0 (= 3.6.0-0ubuntu3.2) but 3.6.0-0ubuntu3.1 is installed
libgtk-3-0 : Depends: libgtk-3-common (= 3.6.0-0ubuntu3.1) but 3.6.0-0ubuntu3.2 is installed
libgtk-3-bin : Depends: libgtk-3-0 (>= 3.6.0-0ubuntu3.2) but 3.6.0-0ubuntu3.1 is installed

Как вы видите, libgail-3-0 требует, чтобы libgtk-3-0 был 3.6.0-0ubuntu3. 2, но libgtk-3-0 требует, чтобы libgtk-3-common был 3.6.0-0ubuntu3. 1 различие .1 версии. Итак, поскольку libgtk-family не может быть разных версий, apt-get получает ошибку ожидаемой зависимости. Так как это решить? Мы используем holdстатус пакета:

echo "libgtk-3-bin hold" | sudo dpkg --set-selections
echo "libgtk-3-0 hold" | sudo dpkg --set-selections

При этом вы можете нормально обновляться, пока конфликты зависимостей не будут разрешены в репозиториях Ubuntu.

Как только вы почувствуете, что можете разрешить обновления, просто запустите:

echo "libgtk-3-bin install" | sudo dpkg --set-selections
echo "libgtk-3-0 install" | sudo dpkg --set-selections

Другой вариант - принудительно установить версии:

sudo apt-get update
sudo apt-get install libgtk-3-0=3.6.0-0ubuntu3.1 libgtk-3-common=3.6.0-0ubuntu3.1 libgtk-3-0=3.6.0-0ubuntu3.1

Это скажет apt-get установить все, используя тот же номер версии.


0

Для тех, у кого все еще есть эти проблемы.

Я считаю, что они появляются, когда вы вручную удаляете некоторые пакеты, но не убираете весь мусор, который они оставляют. В моем случае я libgtkвсе еще установил, и это была более новая версия, чем я хотел установить. Так что он действительно не знал, что делать с разными версиями библиотеки.

После удаления libgtk-3-0пакетов и других схожих проблем все прошло нормально.

PS. Обратите внимание, что если вы это сделали, то echo "libgtk-3-0 hold" | sudo dpkg --set-selections вам нужно сделать echo "libgtk-3-0 install" | sudo dpkg --set-selections, чтобы иметь возможность удалить этот пакет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.