分解しましょう。
まず第一に、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
はユーザーに確認を求めるので、n
VirtualBoxを挿入してインストールしないようにすることができます...また、Ubuntuのリポジトリもチェックされるため、最初にインストールできるマルウェアパッケージはありません。ランダムなPPAを追加するとこれが発生する可能性がありますが、それはUbuntuに信頼できないソースからアプリケーションをインストールするように指示したためです。