Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Installing g++ 7.0.1 on Debian 8.7

I have been trying for quite some time to install g++ 7 on my Debian machine. I was able to install it quite easily on my mac (as homebrew had a formula for it). However I cannot seem to find a way to install it on Linux.

This individual had a thread on installing g++ 4.9, and changing the url he gave led me to this page, which seems to be in the right direction... But I imagine installing it this way might lead to a few potential problems down the road when I wish to update these packages.

Is there a source I'm missing? Or is there maybe a place where I can download and compile everything I need to get it running?

Thank you for your help.

Helpful Data:
My kernel is x86_64 Linux 3.16.0-4-amd64.

Edit: After following Dietrich's advice, I am now met with a new error:

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-7 : Depends: cpp-7 (= 7-20170316-1) but it is not going to be installed
         Depends: libcc1-0 (>= 7-20170316-1) but it is not going to be installed
         Depends: binutils (>= 2.28) but 2.25-5+deb8u1 is to be installed
         Depends: libgcc-7-dev (= 7-20170316-1) but it is not going to be installed
         Depends: libisl15 (>= 0.15) but it is not installable
         Depends: libmpfr4 (>= 3.1.3) but 3.1.2-2 is to be installed
         Depends: libstdc++6 (>= 5) but 4.9.2-10 is to be installed
E: Unable to correct problems, you have held broken packages.

This is how my sources.list is set up:

#------------------------------------------------------------------------------#
#                   OFFICIAL DEBIAN REPOS                    
#------------------------------------------------------------------------------#

###### Debian Main Repos
deb http://ftp.us.debian.org/debian/ jessie main contrib non-free 
deb-src http://ftp.us.debian.org/debian/ jessie main contrib non-free 

###### Debian Update Repos
deb http://security.debian.org/ jessie/updates main contrib non-free 
deb http://ftp.us.debian.org/debian/ jessie-proposed-updates main contrib non-free 
deb-src http://security.debian.org/ jessie/updates main contrib non-free 
deb-src http://ftp.us.debian.org/debian/ jessie-proposed-updates main contrib non-free 

###### For ffmpeg
deb http://www.deb-multimedia.org jessie main non-free

###### For gcc-7 (Experimental)
deb http://httpredir.debian.org/debian experimental main

I'm guessing this is, as you said, a problem with me being on Debian stable? What would I need to do in order to fix this error, while remaining on stable?

Edit 2: Okay, so I figured out that last error. I just had to add go through for every individual dependency that gave my trouble and install it using apt-get install -t testing . Thank you to everyone who replied. You were all very helpful.

like image 434
Robert D Avatar asked Apr 01 '17 00:04

Robert D


2 Answers

You can find similar in the Stack Overflow Unix pages To install the newest g++ from testing on debian, do the following: Add debian testing repo to your apt sources by creating a file (with .list extension) on /etc/apt/sources.list.d folder containing the line

deb http://ftp.us.debian.org/debian testing main contrib non-free

Instruct debian to use testing sources on certain packages by creating a file on /etc/apt/preferences.d containing the following:

Package: *
Pin: release a=testing
Pin-Priority: 100

You should name the file something like preferences or testingpref,etc. If you have a preferences file, you can add it there. Remove the .unused or any . in the filename.

Update database:

sudo apt-get update

Install g++:

sudo apt-get install -t testing g++

This will give you the most recent version of g++ in the repo. Thus it will receive updates and more-easily reversable. You need to use -t testing to get most recent versions. You may have dependency issues. It may be in experimental instead of testing for your architecture. See https://packages.debian.org/search?keywords=g%2B%2B

For experimental packages (7 is in there) add:

deb http://httpredir.debian.org/debian experimental main

to /etc/apt/sources.list . Similar to above.. pinning should say a=experimental instead of a=testing and lastly,

sudo apt-get install -t experimental g++

Good luck.

like image 60
Ryan Avatar answered Nov 08 '22 23:11

Ryan


The kernel is irrelevant.

GCC 7 has not been released yet, as you can see in the GCC 7 release notes:

Disclaimer: GCC 7 has not been released yet, so this document is a work-in-progress.

You may want to learn about what makes different Linux distros different. In particular, what a rolling distribution is, and how Debian releases work. In a rolling distribution, all of the packages continually get updated to newer versions. Debian 8.7 (Jessie / stable) is not a rolling distribution. The packages versions are frozen and only updated when necessary, for extra stability. The latest version of GCC on Debian 8.7 is GCC 4.9.

Debian 9.0 (Stretch / testing) is a rolling release, at least until it gets frozen. If you switch your computer to Stretch you will get GCC 6.3.

If you need something newer, you can either switch to Sid (unstable), or pin packages from Sid.

However, GCC 7 is only available in experimental because it hasn't been released yet. You can install a single package from experimental if you like, see Debian Experimental for instructions.

Howto

Add to your /etc/apt/sources.list

https://wiki.debian.org/DebianExperimental

Then

apt-get update
apt-get -t experimental install gcc-7
like image 29
Dietrich Epp Avatar answered Nov 08 '22 23:11

Dietrich Epp