После Обновления до существенной для сборки Ubuntu 18.04, g ++, gcc и cpp, сохраненный поврежденными пакетами

После Обновления до Ubuntu 18.04 от 16,04 существенных для сборки, g ++, gcc и cpp E: Unable to correct problems, you have held broken packages.

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


$ sudo apt-get install gcc
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:
 gcc : Depends: gcc-7 (>= 7.3.0-12~) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Тот же тип вывода для g ++ и cpp

Как зафиксировать это?

5
задан 27 April 2018 в 07:46

3 ответа

Я встретился с тем же - на Ubuntu 16.04, включая которую у меня были Тестовые Сборки Набора инструментальных средств PPA для gcc и сборок лязга, gcc-7. Во время обновления 18,04, репозитории сторонних производителей были отключены процессом установки с этим включенным PPA.

Для фиксации этого попробуйте (ре?) добавление набора инструментальных средств PPA к Вашему способному исходному списку:

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

Затем при установке build-essential, это должно успешно выбрать gcc-7 от набора инструментальных средств PPA.

2
ответ дан 23 November 2019 в 09:30

У меня была та же проблема, но по-видимому я использовал другой PPA, когда я установил те инструменты.

Для меня я зафиксировал его с:

sudo add-apt-repository ppa:jonathonf/gcc
2
ответ дан 23 November 2019 в 09:30

Я столкнулся с той же проблемой при обновлении с 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-essentials.

$ sudo aptitude -f install build-essential
0
ответ дан 13 September 2020 в 09:54

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

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