Vamos dividi-lo.
Em primeiro lugar, algumas notas sobre como apt-get install
(e a maioria dos outros argumentos apt-get
) funciona:
-
Você pode inserir vários nomes de pacotes:
sudo apt-get install foobar spamegg
-
Os nomes dos pacotes são, na verdade, Expressão Regular Estendida (ERE) (Verificar man 7 regex
) padrões, portanto, um nome de pacote foo.bar
significa qualquer nome de pacote que tenha uma substring que comece com foo
e termine com bar
caractere único entre foo
e bar
. f.*r
significa qualquer nome de pacote que contenha uma subcadeia que tenha f
e r
com qualquer número de caracteres, ou seja, qualquer coisa entre eles. Para fazer a correspondência do nome do pacote inteiro, use tokens de início e fim, por exemplo %código%. Se você quiser que qualquer token Regex seja tratado literalmente, será necessário escapar do token com ^foo.bar$
, por exemplo. para tratar \
literalmente, você precisa:
sudo apt-get install 'foo\.bar'
Aqui, a cotação única é para evitar a interpretação da casca do padrão como um padrão de globbing, não necessário neste caso, mas seria necessário, e. para o padrão foo.bar
se você tiver um arquivo no diretório atual chamado, por exemplo, foo.*bar
.
-
Existe um problema na consideração do nome do pacote. Se houver algum pacote que corresponda ao padrão, o padrão será tratado literalmente e nenhuma interpretação Regex será feita. Por exemplo, para um padrão de pacote foo.bar
, ele corresponderá ao pacote g++
literalmente, independentemente do token Regex g++
. Se não houver nenhum pacote chamado +
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, como g++
e g++
-
5.0
corresponde ao meta-pacote literal g++
como mencionado acima
-
A parte restante, g++
, tem um token Regex, 5.0
, ou seja, qualquer caractere único. Portanto, isso corresponderá a qualquer nome de pacote que contenha .
. Assim, todos os pacotes que possuem a correspondência foram selecionados para serem instalados e, presumivelmente, 5<any_character>0
também foi selecionado no processo.
Presumivelmente, você quer instalar o virtualbox-5.0
versão g++
, então seria necessário fazer o seguinte ( já mencionado nesta resposta ); O meta-pacote, 5
, irá se referir ao último pacote menor disponível de g++-5
versão 5:
sudo apt-get install g++-5
Para procurar por quaisquer pacotes, dentro dos repositórios configurados, use g++
(usa ERE como apt-cache
):
apt-cache search 'g\+\+-[0-9]+'
Se você não quiser regex-it-it, use apt-get
para rolar a lista um pouco maior:
apt-cache search g++ | less
Também antes de instalar qualquer coisa que você não tenha certeza, não use a opção less
( -y
) e teste-a primeiro com --assume-yes
( -s
/ --simulate
):
sudo apt-get install --dry-run foobar