Не может установить build-essential/gcc/g ++ после обновления 17,04

Начиная с обновления от Ubuntu 16.04 до 17,04, я больше не могу устанавливать gcc-7 или g++-7 из репозитория http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu. На самом деле я не могу даже установить build-essential.

В соответствии с программным обеспечением и Обновлениями> Другое программное обеспечение, репозиторий перечислен как это:

http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu zesty main

Попытка установить build-essential:

$ sudo apt install build-essential
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:
 build-essential : Depends: gcc (>= 4:5.2) but it is not going to be installed
                   Depends: g++ (>= 4:5.2) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Однако:

$ gcc --version
gcc (Ubuntu 5.4.1-8ubuntu1) 5.4.1 20170304
...
$ g++ --version
g++ (Ubuntu 5.4.1-8ubuntu1) 5.4.1 20170304
...

Таким образом, как я могу установить build-essential снова?

7
задан 18 July 2017 в 01:53

3 ответа

Таким образом, я смог установить build-essential снова путем выполнения этих шагов:

$ sudo apt install build-essential
...
The following packages have unmet dependencies:
 build-essential : Depends: gcc (>= 4:5.2) but it is not going to be installed
                   Depends: g++ (>= 4:5.2) but it is not going to be installed

A gcc версия большие 5.2 требуются, поэтому позволяет попытке установить gcc.

$ sudo apt install gcc
...
The following packages have unmet dependencies:
gcc : Depends: cpp (>= 4:6.3.0-2ubuntu1) but it is not going to be installed
      Depends: gcc-6 (>= 6.3.0-9~) but it is not going to be installed

Хорошо. Что-то еще отсутствует. Давайте попытаемся установить это.

$ sudo apt install cpp
...
The following packages have unmet dependencies:
 cpp : Depends: cpp-6 (>= 6.3.0-9~) but it is not going to be installed

Тем не менее ничто. Попробовать еще раз.

$ sudo apt install cpp-6
...
The following packages have unmet dependencies:
 cpp-6 : Depends: gcc-6-base (= 6.3.0-12ubuntu2) but 6.3.0-18ubuntu2~16.04 is to be installed

Еще раз.

$ sudo apt install gcc-6-base
...
gcc-6-base is already the newest version (6.3.0-18ubuntu2~16.04).

Таким образом, здесь я не знаю то, что точно пошло не так, как надо. Нужно отметить, что существует a 16.04 строка в конце того номера версии. Это казалось нечетным. Я удалил тот пакет.

$ sudo apt remove gcc-6-base

Теперь я смог установить build-essential снова. Это также переустановит gcc-6-base.

$ sudo apt install build-essential

Оставление проблемой:

$ sudo apt upgrade
...
The following packages have been kept back:
  cpp g++ gcc

Корень проблемы подобен как выше, gcc-7-base является дефектным, но я не могу просто удалить его, так как я получаю это:

The following packages have unmet dependencies:
 libgcc1 : Depends: gcc-7-base (= 7.1.0-5ubuntu2~16.04) but it is not going to be installed
 va-driver-all : Depends: mesa-va-drivers but it is not going to be installed or
                          vdpau-va-driver but it is not going to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

Опасная зона:

Мне удалось решить этот вопрос со следующими шагами:

$ sudo apt install aptitude
$ sudo dpkg --force-all -P gcc-7-base
$ sudo dpkg --force-all -P gcc-7-base:i386
$ sudo aptitude install gcc-7-base

Это супер опасно и могло бы повредить Вашу установку. Выполнение dpkg --force-all -P удалит пакет сильно, игнорируя любые зависимости от этого пакета. После этого постоянным клиентом apt upgrade мог бы удалить почти все соответствующее программное обеспечение из Вашей установки.

Я только смог восстановиться оттуда usind aptitude который решил каждый вопрос зависимости, я имел.

5
ответ дан 23 November 2019 в 06:43

У меня такая же проблема, но решение на самом деле довольно простое поэтому он говорит: следующие пакеты имеют неудовлетворенные зависимости:

 build-essential : Depends: gcc (>= 4:5.2) but it is not going to be installed
                   Depends: g++ (>= 4:5.2) but it is not going to be installed

просто установите пакет на «зависит» сделать :

apt-get install gcc

а затем будет сказано :

The following packages have unmet dependencies:
 gcc : Depends: cpp (= 4:9.2.1-3.1) but 4:8.3.0-1 is to be installed
       Depends: gcc-9 (>= 9.2.1-1~) but it is not going to be installed

затем сделать :

apt-get install cpp 

поскольку вы можете увидеть зависимости: измените с depend:gcc на depend:cpp затем делайте это снова и снова, пока та же ошибка не перестанет появляться, а затем:

sudo apt install build-essential 
-1
ответ дан 5 August 2020 в 17:25

Я столкнулся с той же проблемой при обновлении с 14.04 LTS до 16.04 LTS. Я написал подробное решение здесь. Но для удобства воспроизведу здесь ключевые моменты.

Удалите все зависимые библиотеки (autoremove) и установите все отсутствующие библиотеки с помощью sudo apt-get -f install (-f означает -- fix-missing)

sudo apt-get autoremove
sudo apt-get -f install
sudo apt-get update
sudo apt-get upgrade 

Установите тулчейн Ubuntu из PPA

sudo add-apt-repository ppa:ubuntu-toolchain-r/test

Установите aptitude.

sudo apt install aptitude

Рекурсивно пытайтесь установить поврежденные библиотеки, пока не разрешите конфликт, обновив или исправив определенную библиотеку. В моем случае мне пришлось исправить libstdc++6

$ sudo aptitude -f install build-essential
The following NEW packages will be installed:
  build-essential cpp{a} cpp-5{a} g++{a} g++-5{a} gcc{a} gcc-5{a} libasan2{a} libcc1-0{ab} 
  libcilkrts5{a} libgcc-5-dev{a} liblsan0{ab} libmpx0{a} libstdc++-5-dev{a} 
The following packages will be upgraded:
  gcc-5-base libstdc++6{b} 
2 packages upgraded, 14 newly installed, 0 to remove and 5 not upgraded.
Need to get 29.6 MB of archives. After unpacking 100 MB will be used.
The following packages have unmet dependencies:
 liblsan0 : Depends: gcc-9-base (= 9.3.0-10ubuntu2~16.04) but 9.3.0-11ubuntu0~14.04 is installed.
 libcc1-0 : Depends: gcc-9-base (= 9.3.0-10ubuntu2~16.04) but 9.3.0-11ubuntu0~14.04 is installed.
 libstdc++6 : Depends: gcc-9-base (= 9.3.0-10ubuntu2~16.04) but 9.3.0-11ubuntu0~14.04 is installed.

, поскольку build-essential требует gcc-5.

$ sudo apt-get -f install gcc-5

The following packages have unmet dependencies:
 gcc-5 : Depends: cpp-5 (= 5.5.0-12ubuntu1~16.04) but it is not going to be installed
         Depends: gcc-5-base (= 5.5.0-12ubuntu1~16.04) but 5.4.0-6ubuntu1~16.04.12 is to be installed
         Depends: libcc1-0 (>= 5.5.0-12ubuntu1~16.04) but it is not going to be installed
         Depends: libgcc-5-dev (= 5.5.0-12ubuntu1~16.04) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Но gcc-5, в свою очередь, зависит от cpp-5

$ sudo apt-get -f install cpp-5

The following packages have unmet dependencies:
 cpp-5 : Depends: gcc-5-base (= 5.5.0-12ubuntu1~16.04) but 5.4.0-6ubuntu1~16.04.12 is to be installed

cpp-5 зависит от gcc-5-base. Здесь вы можете видеть, что есть определенный конфликт. Aptitide предлагает несколько вариантов решения конфликта. В моем случае обновление libstdc++6 решило проблему.

$ sudo aptitude -f install gcc-5-base
The following packages will be REMOVED:  
  gcc-5-base{u} 
0 packages upgraded, 0 newly installed, 1 to remove and 6 not upgraded.
Need to get 0 B of archives. After unpacking 67.6 kB will be freed.
The following packages have unmet dependencies:
 libstdc++6 : Depends: gcc-5-base (= 5.4.0-6ubuntu1~16.04.12) but it is not going to be installed.
open: 115; closed: 488; defer: 35; conflict: 58                                                          .The following actions will resolve these dependencies:

     Keep the following packages at their current version:                        
1)     gcc-5-base [5.4.0-6ubuntu1~16.04.12 (now, xenial-security, xenial-updates)]

Accept this solution? [Y/n/q/?] n
The following actions will resolve these dependencies:

      Upgrade the following packages:                                                                     
1)      libstdc++6 [5.4.0-6ubuntu1~16.04.12 (now, xenial-security, xenial-updates) -> 9.3.0-10ubuntu2~16.0

Наконец-то, теперь конфликт разрешен, попробуйте снова установить build-essential.

$ sudo aptitude -f install build-essential

Удачи!

2
ответ дан 13 September 2020 в 09:56

Другие вопросы по тегам:

Похожие вопросы: