分解しましょう。
まず第一に、apt-get install(そして他のほとんどのapt-get引数も)どのように機能するかについてのいくつかのメモ:
複数のパッケージ名を入力できます:
sudo apt-get install foobar spamegg
パッケージ名は、実際には正規表現(ERE)(チェック拡張されているman 7 regexパッケージ名はので)パターンをfoo.barそれと始まる部分文字列を持っている任意のパッケージ名意味fooを持つと両端barの間に任意の単一文字とfooしてをbar。そうf.*r手段は、サブストリング含むすべてのパッケージ名fとrの間で何かすなわち、任意の数の文字とは。パッケージ名全体を照合するには、開始トークンと終了トークンを使用します(例:)^foo.bar$。正規表現トークンを文字通り\に処理foo.barする場合は、たとえば文字通り処理するためにトークンをエスケープする必要があります。
sudo apt-get install 'foo\.bar'
ここで、単一引用符は、パターンがグロビングパターンとしてシェルで解釈されるのを防ぐためのものです。この場合は必要ありませfoo.*barんが、たとえば、現在のディレクトリにegという名前のファイルがある場合はpatternに必要になりfoo.barます
パッケージ名の考慮事項には注意点があります。パターンに一致するパッケージがある場合、パターンは文字どおりに扱われ、正規表現の解釈は行われません。たとえば、パッケージパターンのg++場合g++、正規表現トークンに関係なく、文字通りパッケージに一致します+。g++定義されたリポジトリに名前の付いたパッケージがなかった場合、EREパターンとして扱われます。
これで、コマンドが与えられました:
sudo apt-get install g++ 5.0
これの意味は:
つまりg++、パッケージを提供する2つのパターンをインストールします。5.0
g++上記のリテラルメタパッケージg++と一致します
残りの部分に5.0は、正規.表現トークン、つまり任意の1文字があります。したがって、これはを含むすべてのパッケージ名と一致します5<any_character>0。そのため、一致するすべてのパッケージがインストール対象として選択されており、おそらくvirtualbox-5.0プロセスでも選択されています。
おそらく、あなたはg++version をインストールしたい5ので、次のことを行うと、(この回答ですでに述べたように); メタパッケージ、はg++-5、g++バージョン5の最新のマイナーリリースパッケージを参照します。
sudo apt-get install g++-5
構成されたリポジトリ内でパッケージを検索するには、次のように使用しますapt-cache(EREなどを使用apt-get)。
apt-cache search 'g\+\+-[0-9]+'
正規表現にしたくない場合は、を使用lessして、かなり大きなリストを下にスクロールします。
apt-cache search g++ | less
また、不明なものをインストールする前に、-y(--assume-yes)オプションを使用せずに、最初に-s(--simulate/ --dry-run)でテストしてください。
sudo apt-get install --dry-run foobar
apt-getはユーザーに確認を求めるので、nVirtualBoxを挿入してインストールしないようにすることができます...また、Ubuntuのリポジトリもチェックされるため、最初にインストールできるマルウェアパッケージはありません。ランダムなPPAを追加するとこれが発生する可能性がありますが、それはUbuntuに信頼できないソースからアプリケーションをインストールするように指示したためです。