resolve kept back packages on Ubuntu20.04

Hi I recently upgraded the OS from Ubuntu18.04 to Ubuntu20.04. Now I notice that when I do sudo apt-get upgrade, I have packages kept back:

The following packages have been kept back:
  build-essential cpp g++ gcc gfortran liblapack-dev liblapack3
0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.

I tried the methods mentioned here. To resolve this I tried

sudo apt-get dist-upgrade

but the output is the same as before.

I also tried sudo aptitude full-upgrade and the solution is also to keep the packages at their current version. The output is the following:

The following NEW packages will be installed:
  cpp-9{ab} g++-9{ab} gcc-9{ab} gfortran-9{ab} libasan5{ab} libgcc-9-dev{ab} libgfortran-9-dev{ab} libgfortran5{ab} libstdc++-9-dev{ab} 
  libubsan1{ab} 
The following packages will be upgraded:
  build-essential cpp g++ gcc gfortran liblapack-dev liblapack3 
7 packages upgraded, 10 newly installed, 0 to remove and 0 not upgraded.
Need to get 44.5 MB of archives. After unpacking 170 MB will be used.
The following packages have unmet dependencies:
 cpp-9 : Depends: gcc-9-base (= 9.3.0-17ubuntu1~20.04) but 9.4.0-1ubuntu1~18.04 is installed
 libgfortran-9-dev : Depends: gcc-9-base (= 9.3.0-17ubuntu1~20.04) but 9.4.0-1ubuntu1~18.04 is installed
 libasan5 : Depends: gcc-9-base (= 9.3.0-17ubuntu1~20.04) but 9.4.0-1ubuntu1~18.04 is installed
 libstdc++-9-dev : Depends: gcc-9-base (= 9.3.0-17ubuntu1~20.04) but 9.4.0-1ubuntu1~18.04 is installed
 libubsan1 : Depends: gcc-10-base (= 10.2.0-5ubuntu1~20.04) but 10.3.0-1ubuntu1~18.04~1 is installed
 g++-9 : Depends: gcc-9-base (= 9.3.0-17ubuntu1~20.04) but 9.4.0-1ubuntu1~18.04 is installed
 libgfortran5 : Depends: gcc-10-base (= 10.2.0-5ubuntu1~20.04) but 10.3.0-1ubuntu1~18.04~1 is installed
 gcc-9 : Depends: gcc-9-base (= 9.3.0-17ubuntu1~20.04) but 9.4.0-1ubuntu1~18.04 is installed
 gfortran-9 : Depends: gcc-9-base (= 9.3.0-17ubuntu1~20.04) but 9.4.0-1ubuntu1~18.04 is installed
 libgcc-9-dev : Depends: gcc-9-base (= 9.3.0-17ubuntu1~20.04) but 9.4.0-1ubuntu1~18.04 is installed
The following actions will resolve these dependencies:

      Keep the following packages at their current version:
1)      build-essential [12.4ubuntu1 (now)]                
2)      cpp [4:7.4.0-1ubuntu2.3 (now)]                     
3)      cpp-9 [Not Installed]                              
4)      g++ [4:7.4.0-1ubuntu2.3 (now)]                     
5)      g++-9 [Not Installed]                              
6)      gcc [4:7.4.0-1ubuntu2.3 (now)]                     
7)      gcc-9 [Not Installed]                              
8)      gfortran [4:7.4.0-1ubuntu2.3 (now)]                
9)      gfortran-9 [Not Installed]                         
10)     libasan5 [Not Installed]                           
11)     libgcc-9-dev [Not Installed]                       
12)     libgfortran-9-dev [Not Installed]                  
13)     libgfortran5 [Not Installed]                       
14)     liblapack-dev [3.7.1-4ubuntu1 (now)]               
15)     liblapack3 [3.7.1-4ubuntu1 (now)]                  
16)     libstdc++-9-dev [Not Installed]                    
17)     libubsan1 [Not Installed]      

           

Can someone give me some suggestions? Thanks!


Solution 1:

It turns out I need to sudo apt-get remove gcc-9-base and then sudo apt-get install gcc-9-base. Same thing needs to done for gcc-10-base as well.

Solution 2:

I also had a similar error, with the gcc-9-base package. What worked for me was:

  • Check for available versions. Like this:

    $ apt-cache madison gcc-9-base
    

The result may look something like this:

gcc-9-base | 9.3.0-17ubuntu1~20.04 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages
gcc-9-base | 9.3.0-17ubuntu1~20.04 | http://archive.ubuntu.com/ubuntu focal-security/main amd64 Packages
gcc-9-base | 9.3.0-10ubuntu2 | http://archive.ubuntu.com/ubuntu focal/main amd64 Packages
  • Choose the needed version, in this case 9.3.0-17ubuntu1~20.04, and install like this:

    $ sudo apt-get install gcc-9-base=9.3.0-17ubuntu1~20.04
    

apt-get should manage to fix your broken packages now.

P.S.: I know this question is a bit old now, but here's the solution for anyone that has had a similar problem.