让我们分解一下。
首先,关于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$。如果您想对任何Regex令牌进行字面处理,则需要使用\例如对foo.bar字面处理进行转义,您需要:
sudo apt-get install 'foo\.bar'
这里的单引号是为了防止shell将模式解释为globing模式,在这种情况下不是必须的,但是foo.*bar如果当前目录中有一个名为eg的文件,则例如对于pattern来说是必需的foo.bar。
包名称注意事项。如果有任何与该模式匹配的包,则该模式将按字面意义处理,并且不会进行任何正则表达式解释。例如,对于包模式g++,g++无论Regex token是什么,它将在字面上匹配包+。如果g++在定义的存储库中没有命名包,它将被视为ERE模式。
现在,您已经给出了命令:
sudo apt-get install g++ 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从不可信的来源安装应用程序。