Не удается установить gcc и g++

Я имею rm-r все файлы, начинающиеся с gcc а также g++ от моего /usr/bin..

Теперь, когда я пытаюсь переустановить его с помощью sudo apt-get install gcc Я получаю следующую ошибку

Reading package lists... Done
Building dependency tree       
Reading state information... Done
gcc is already the newest version (4:5.3.1-1ubuntu1).
The following packages were automatically installed and are no longer required:
  libgcrypt20:i386 libsystemd0:i386 linux-headers-4.4.0-38 linux-headers-4.4.0-38-generic
  linux-image-4.4.0-38-generic linux-image-extra-4.4.0-38-generic
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
Setting up gcc (4:5.3.1-1ubuntu1) ...
update-alternatives: error: alternative path /usr/bin/gcc doesn't exist
dpkg: error processing package gcc (--configure):
 subprocess installed post-installation script returned error exit status 2
Errors were encountered while processing:
 gcc
E: Sub-process /usr/bin/dpkg returned an error code (1)  

Я попробовал следующие команды:

sudo dpkg --purge --force-depends gcc 
sudo apt-get autoremove -y
sudo apt-get autoclean -y
sudo apt-get clean gcc  

Это были результаты:

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

2 ответа

Попробуйте переустановить:

sudo dpkg --purge --force-depends gcc 
sudo apt-get autoremove -y
sudo apt-get autoclean -y
sudo apt-get clean gcc
sudo apt-get install gcc

Возможно, вы добьетесь прогресса быстрее, если вы установите synaptic. Вы получите более хорошее представление о вашей ситуации.

Я полагаю, у вас установлены несовместимые библиотеки, и они "заклинены". g++ или gcc зависят от них, но что-то смешное в вашей версии не позволяет apt-get обновить эти части. Возможно, они были установлены из стороннего хранилища?

Предложение в ответе @Benny о принудительном удалении gcc и g ++ может быть шагом в правильном направлении, но поскольку g ++ заблокирован от установки какой-то неизвестной третьей библиотекой, это не поможет вам вернуться домой. В зависимости от того, как вы попали в эту ситуацию, вы можете удалить несколько слоев.

После использования synaptic чтобы выяснить, что происходит, я бы перешел на терминал и использовал dpkg чтобы удалить пакеты, а не apt-getпотому что я бы избегал путаницы с серверами интернет-пакетов, одновременно убирая вещи. Обычно вам не нужно беспокоиться об удалении, потому что apt-get вернет зависимости. Однако, если вы не будете осторожны, удаление одного пакета может привести к ненужному удалению сотен. Читать man dpkgЯ ожидаю, что "--no-force-зависит" может помочь. Избегайте --force, если можете, но может помочь "--ignore-disabled =? Pkg_name". Я бы попробовал это в режиме пробного запуска, чтобы диагностировать проблему.

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