Vamos dividir.
Primeiro, poucas notas sobre como apt-get install
(e a maioria dos outros apt-get
argumentos também) funcionam:
Você pode inserir vários nomes de pacotes:
sudo apt-get install foobar spamegg
Na verdade, os nomes dos pacotes são man 7 regex
padrões ERE (Expressão regular estendida) (verificação ); portanto, um nome de pacote foo.bar
significa qualquer nome de pacote que tenha uma subcadeia que comece com foo
e termine bar
com qualquer caractere único entre foo
e bar
. Provável f.*r
significa qualquer nome de pacote que contenha uma subcadeia que possua f
e r
com qualquer número de caracteres, isto é, qualquer coisa no meio. Para fazer a correspondência completa do nome do pacote, use os tokens de início e término, por exemplo ^foo.bar$
. Se você deseja que qualquer token Regex seja tratado literalmente, precisa escapar do token com, \
por exemplo, para tratar foo.bar
literalmente, é necessário:
sudo apt-get install 'foo\.bar'
Aqui, a citação única é para impedir a interpretação do shell como um padrão globbing, não necessário neste caso, mas seria necessário, por exemplo, para o padrão, foo.*bar
se você tiver um arquivo no diretório atual chamado, por exemplo foo.bar
.
Há um problema na consideração do nome do pacote. Se houver algum pacote correspondente ao padrão, o padrão será tratado literalmente e nenhuma interpretação do Regex será feita. Por exemplo, para um padrão de pacote g++
, ele corresponderá ao pacote g++
literalmente, independentemente do token Regex +
. Se não houver um pacote nomeado g++
nos repositórios definidos, ele será tratado como um padrão ERE.
Agora, você deu o comando:
sudo apt-get install g++ 5.0
Isso significa:
Você deseja instalar dois pacotes fornecidos por padrões, a saber g++
e5.0
g++
corresponde ao meta-pacote literal, g++
como mencionado acima
A parte restante,, 5.0
possui um token Regex, .
ou seja , qualquer caractere único. Portanto, isso corresponderá a qualquer nome de pacote que contenha 5<any_character>0
. Portanto, todos os pacotes que possuem a correspondência foram selecionados para instalação e, presumivelmente virtualbox-5.0
, também foram selecionados no processo.
Presumivelmente, você deseja instalar a g++
versão 5
, o que faria o seguinte ( já mencionado nesta resposta ); O meta-pacote g++-5
,, irá se referir ao último pacote menor disponível da g++
versão 5:
sudo apt-get install g++-5
Para procurar pacotes, nos repositórios configurados, use apt-cache
(usa o ERE como apt-get
):
apt-cache search 'g\+\+-[0-9]+'
Se você não deseja regexá-lo, use less
para rolar a lista um pouco maior:
apt-cache search g++ | less
Antes de instalar qualquer coisa que você não tenha certeza, não use a opção -y
( --assume-yes
) e teste-a primeiro com -s
( --simulate
/ --dry-run
):
sudo apt-get install --dry-run foobar
apt-get
solicitará confirmação do usuário, para que você possa inserirn
e evitar a instalação do VirtualBox ... O repositório do Ubuntu também é verificado, para que não haja nenhum pacote de malware que você possa instalar em primeiro lugar. Se você adicionar PPAs aleatórios, isso pode acontecer, mas é porque você disse ao Ubuntu para instalar aplicativos de uma fonte não confiável.