
Я не могу обновить свою систему из-за сломанных пакетов. Я не могу решить эту проблему уже несколько месяцев, и, честно говоря, я на грани полной переустановки Ubuntu. Этот пост представляет мою последнюю надежду найти решение. Вот что я пробовал:
Информация о версии
$ uname -a && gcc --version
Linux prometheus 3.13.0-87-generic #132-Ubuntu SMP Mon May 16 20:51:42 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
...
Список источников
$ grep -v "^#" /etc/apt/sources.list /ect/apt/sources.list.d/*
deb http://za.archive.ubuntu.com/ubuntu/ trusty main universe multiverse
deb-src http://za.archive.ubuntu.com/ubuntu/ trusty main universe multiverse #Added by software-properties
deb http://za.archive.ubuntu.com/ubuntu/ trusty-updates main universe multiverse
deb-src http://za.archive.ubuntu.com/ubuntu/ trusty-updates main universe multiverse #Added by software-properties
deb http://za.archive.ubuntu.com/ubuntu/ trusty-security main universe multiverse
deb-src http://za.archive.ubuntu.com/ubuntu/ trusty-security main universe multiverse #Added by software-properties
deb http://za.archive.ubuntu.com/ubuntu/ trusty-backports main universe multiverse
deb-src http://za.archive.ubuntu.com/ubuntu/ trusty-backports main universe multiverse #Added by software-properties
deb http://archive.canonical.com/ trusty partner
deb-src http://archive.canonical.com/ trusty partner
deb-src http://archive.canonical.com/ubuntu trusty partner
apt-get вещи
$ sudo apt-get update
...
Никаких проблем...
$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
gcc-4.9-base libgcc1
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
Похоже, у меня каким-то образом оказалось несколько версий gcc! Та, которая поддерживается менеджером пакетов, является более новой версией.
проверка таблицы версий показывает
$ apt-cache policy gcc-4.9-base libgcc1
gcc-4.9-base:
Installed: 4.9.2-0ubuntu1~12.04
Candidate: 4.9.3-0ubuntu4
Version table:
4.9.3-0ubuntu4 0
500 http://za.archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages
*** 4.9.2-0ubuntu1~12.04 0
100 /var/lib/dpkg/status
4.9-20140406-0ubuntu1 0
500 http://za.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
libgcc1:
Installed: 1:4.9.2-0ubuntu1~12.04
Candidate: 1:4.9.3-0ubuntu4
Version table:
1:4.9.3-0ubuntu4 0
500 http://za.archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages
*** 1:4.9.2-0ubuntu1~12.04 0
100 /var/lib/dpkg/status
1:4.9-20140406-0ubuntu1 0
500 http://za.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
Похоже, я был слишком нетерпелив, устанавливая gcc 4.9, пока был на exact, и теперь оказался в этом странном запутанном состоянии. Оглядываясь назад, это, возможно, была плохая идея. Я пробовал обновить gcc через synaptic, но он неизбежно хочет удалить безумно длинный список пакетов (включая apt), что кажется очень нежелательным.
Итак, мой вопрос: есть ли надежда восстановить систему и решить проблемы с зависимостями?
Обновлять
$ sudo apt-get install --reinstall gcc-4.9-base libgcc1
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
gvfs : Depends: gvfs-daemons (>= 1.20.3-0ubuntu1.2)
Depends: gvfs-daemons (< 1.20.3-0ubuntu1.2.1~)
indicator-network : Depends: unity8 (>= 7.82) but it is not going to be installed
libegl1-mesa : Depends: libgbm1 (>= 7.11~1) but it is not going to be installed
Recommends: libegl1-mesa-drivers
libgl1-mesa-glx : Depends: libglapi-mesa (= 10.1.3-0ubuntu0.6)
Recommends: libgl1-mesa-dri (>= 7.2)
libqt5gui5 : Depends: libgbm1 (>= 8.1~0) but it is not going to be installed
libstdc++6 : Depends: gcc-4.9-base (= 4.9.2-0ubuntu1~12.04) but 4.9.3-0ubuntu4 is to be installed
libubuntu-application-api-mirserver1 : Depends: libmirserver18 (>= 0.1.8+14.04.20140408.1) but it is not going to be installed
libunity-mir1 : Depends: libmirserver18 (>= 0.1.8+14.04.20140411) but it is not going to be installed
unity-scope-mediascanner2 : Depends: mediascanner2.0 but it is not going to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
Я также попробовал это исправление, но безрезультатно:
sudo apt-get -o Debug::pkgProblemResolver=yes dist-upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Starting pkgProblemResolver with broken count: 7
Starting 2 pkgProblemResolver with broken count: 7
Investigating (0) libstdc++6 [ amd64 ] < 4.9.2-0ubuntu1~12.04 > ( libs )
Broken libstdc++6:amd64 Depends on gcc-4.9-base [ amd64 ] < 4.9.2-0ubuntu1~12.04 -> 4.9.3-0ubuntu4 > ( libs ) (= 4.9.2-0ubuntu1~12.04)
Considering gcc-4.9-base:amd64 17 as a solution to libstdc++6:amd64 525
Added gcc-4.9-base:amd64 to the remove list
Fixing libstdc++6:amd64 via keep of gcc-4.9-base:amd64
Investigating (0) libgcc1 [ amd64 ] < 1:4.9.2-0ubuntu1~12.04 -> 1:4.9.3-0ubuntu4 > ( libs )
Broken libgcc1:amd64 Depends on gcc-4.9-base [ amd64 ] < 4.9.2-0ubuntu1~12.04 -> 4.9.3-0ubuntu4 > ( libs ) (= 4.9.3-0ubuntu4)
Considering gcc-4.9-base:amd64 17 as a solution to libgcc1:amd64 463
Holding Back libgcc1:amd64 rather than change gcc-4.9-base:amd64
Try to Re-Instate (0) gcc-4.9-base:amd64
Try to Re-Instate (1) libgcc1:amd64
Done
Done
Starting pkgProblemResolver with broken count: 0
Starting 2 pkgProblemResolver with broken count: 0
Done
The following packages have been kept back:
gcc-4.9-base libgcc1
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
Прежде чем пытаться принудительно переустановить систему, я могу попробовать откатиться до gcc-4.8, а затем снова попробовать выполнить обновление...
решение1
Хорошо, список команд, скорее всего, решит эту проблему, напоминаем, что опубликованные варианты становятся все более агрессивными, поэтому лучше всего начать с попытки решения №1.
1. выполнение мягкой переустановки пакетов:
sudo apt-get install --reinstall gcc-4.9-base libgcc1
2. принудительная установка неисправных пакетов:
sudo apt-get -f install
3. удаление dpkg
и повторная установка apt-get
:
sudo dpkg -r --force gcc-4.9-base
sudo dpkg -r --force libgcc1
sudo apt-get install gcc-4.9-base libgcc1
Примечание: Это может и, возможно, сломает вашу систему (например apt
), так что сделайте этонетперезагрузите компьютер, пока вы не переустановите оба пакета, загрузив их и, если необходимо, их зависимости сpackages.ubuntu.comи установка их с помощью dpkg -i <packacge-name>
. Используйте этот вариант только в крайнем случае.