Vamos a desglosarlo.
En primer lugar, algunas notas sobre cómo funciona apt-get install
(y la mayoría de los otros apt-get
argumentos también):
Puede ingresar múltiples nombres de paquetes:
sudo apt-get install foobar spamegg
Los nombres de paquetes son en realidad man 7 regex
patrones de Expresión regular extendida (ERE) (Verificar ), por lo que un nombre de paquete foo.bar
significa cualquier nombre de paquete que tenga una subcadena que comience foo
y termine bar
con cualquier carácter único entre foo
y bar
. Probable f.*r
significa cualquier nombre de paquete que contenga una subcadena que tenga f
y r
con cualquier número de caracteres, es decir, cualquier cosa intermedia. Para hacer coincidir todo el nombre del paquete, use tokens de inicio y fin, por ejemplo ^foo.bar$
. Si desea que cualquier ficha Regex sea tratada literalmente, entonces necesita escapar de la ficha con, \
por ejemplo, para tratar foo.bar
literalmente, necesita:
sudo apt-get install 'foo\.bar'
Aquí, la comilla simple es para evitar la interpretación de shell del patrón como un patrón global, no es necesario en este caso, pero sería necesario, por ejemplo, para el patrón foo.*bar
si tiene un archivo en el directorio actual llamado eg foo.bar
.
Hay una trampa en la consideración del nombre del paquete. Si hay algún paquete que coincida con el patrón, el patrón será tratado literalmente y no se realizará ninguna interpretación Regex. Por ejemplo, para un patrón de paquete g++
, coincidirá con el paquete g++
literalmente, independientemente del token Regex +
. Si no hubiera ningún paquete nombrado g++
en los repositorios definidos, se tratará como un patrón ERE.
Ahora, has dado el comando:
sudo apt-get install g++ 5.0
Esto significa:
Desea instalar dos paquetes de patrones proporcionados, a saber, g++
y5.0
g++
coincide con el metapaquete literal g++
como se mencionó anteriormente
La porción restante 5.0
, tiene una ficha Regex, .
es decir , cualquier carácter individual. Entonces esto coincidirá con cualquier nombre de paquete que contenga 5<any_character>0
. Por lo tanto, todos los paquetes que tienen la coincidencia se seleccionaron para su instalación y presumiblemente virtualbox-5.0
también se seleccionaron en el proceso.
Presumiblemente desea instalar la g++
versión 5
, por lo que hacer lo siguiente haría ( ya mencionado en esta respuesta ); El metapaquete g++-5
, se referirá al último paquete menor lanzado disponible de la g++
versión 5:
sudo apt-get install g++-5
Para buscar cualquier paquete, dentro de los repositorios configurados, use apt-cache
(usa ERE como apt-get
):
apt-cache search 'g\+\+-[0-9]+'
Si no desea regexiarlo, use less
para desplazarse hacia abajo en la lista más grande:
apt-cache search g++ | less
Además, antes de instalar algo de lo que no esté seguro, no use la opción -y
( --assume-yes
) y pruébela primero con -s
( --simulate
/ --dry-run
):
sudo apt-get install --dry-run foobar
apt-get
le pedirá confirmación al usuario, por lo que podría insertarn
y evitar instalar VirtualBox ... También se verifica el repositorio de Ubuntu, por lo que no debería haber ningún paquete de malware que pueda instalar en primer lugar. Si agrega PPA al azar, esto podría suceder, pero es porque le dijo a Ubuntu que instale aplicaciones de una fuente no confiable.