让我们分解一下。
首先,关于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从不可信的来源安装应用程序。