g++ ubuntu 14.04 をインストールします。依存関係: g++-4.8 (>= 4.8.2-5~) がインストールされません。

g++ ubuntu 14.04 をインストールします。依存関係: g++-4.8 (>= 4.8.2-5~) がインストールされません。

私は今次のように入力しました:

sudo apt-get install g++

そして次のようになりました:

The following packages have unmet dependencies:
 g++ : Depends: g++-4.8 (>= 4.8.2-5~) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

他のフォーラムの提案に従って試してみました:

sudo apt-get update

そして

sudo apt-get -f install

どれも私の問題を解決しませんでした。答えをご存知でしたら助けてください。

編集:

コメントに書かれた提案に従って、次のことを試しました:

sudo apt-cache policy g++-4.8

次のような出力が得られました。

g++-4.8:
  Installed: (none)
  Candidate: 4.8.2-19ubuntu1
  Version table:
     4.8.2-19ubuntu1 0
        500 http://ca.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages

試してみると:

sudo apt-get install g++-4.8

私が得たもの:

The following packages have unmet dependencies:
 g++-4.8 : Depends: gcc-4.8-base (= 4.8.2-19ubuntu1) but 4.8.4-2ubuntu1~14.04 is to be installed
           Depends: gcc-4.8 (= 4.8.2-19ubuntu1) but 4.8.4-2ubuntu1~14.04 is to be installed
           Depends: libstdc++-4.8-dev (= 4.8.2-19ubuntu1) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

答え1

問題は:

libstdc++-4.8-dev : Depends: gcc-4.8-base (= 4.8.2-19ubuntu1) but 4.8.4-2ubuntu1~14.04 is to be installed

なぜでしょうか? その理由は次のとおりです。

  • libstdc++-4.8-devメインリポジトリでは、libstdc++-4.8-dev=4.8.2-19ubuntu1

  • libstdc++-4.8-devアップデートリポジトリはlibstdc++-4.8-dev=4.8.4-2ubuntu1~14.04、システムにインストールされているに依存します


ソリューション?

私の最初の選択肢は、更新リポジトリを再度有効にすることです。

  • Software & Updatesタブを開いてUpdates

  • 選択trusty-updatesしてtrusty-securityクリックClose

    端末用のバージョンをお持ちの方がいらっしゃいましたら、お知らせください。

    ここに画像の説明を入力してください

  • Reload

    ここに画像の説明を入力してください

  • インストール

    sudo apt-get install g++
    

2番目の選択肢はダウングレード

うーん、それは良くない考えだと思う=)

答え2

ソースのUbuntu 14.04は古すぎるかアクセスできないため、ソースを更新する必要があります。これで解決します。まず、ソースファイルをバックアップする必要があります。sources.list

sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup

Ubuntu のバージョンに応じて新しいソースを追加します。

  1. バージョンコマンドを照会します。

    lsb_release -a
    

    すると、次のような情報が出力されます。

    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu 14.04.4 LTS
    Release:    14.04
    Codename:   trusty
    
  2. バージョンに応じて適切なソースを選択し、「/etc/apt/sources.list」ファイルの末尾に追加します。

    http://wiki.ubuntu.org.cn/Template:14.04source,
    

    Ubuntu 14.04 ソース:

    deb http://archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse
    deb http://archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse
    deb http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse
    deb http://archive.ubuntu.com/ubuntu/ trusty-proposed main restricted universe multiverse
    deb http://archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse
    deb-src http://archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse
    deb-src http://archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse
    deb-src http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse
    deb-src http://archive.ubuntu.com/ubuntu/ trusty-proposed main restricted universe multiverse
    deb-src http://archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse
    
  3. ソースを更新

    sudo apt-get update
    
  4. わかりました

    sudo apt-get install g++
    

関連情報