Décomposons-le.
Tout d'abord, quelques notes sur le fonctionnement apt-get install
(et la plupart des autres apt-get
arguments également):
Vous pouvez saisir plusieurs noms de packages:
sudo apt-get install foobar spamegg
Les noms de package sont en fait des man 7 regex
modèles d' expression régulière étendue (ERE) (vérification ), de sorte qu'un nom de package foo.bar
signifie tout nom de package dont la sous-chaîne commence foo
et se termine bar
par un caractère unique entre foo
et bar
. Probablement f.*r
signifie tout nom de package qui contient une sous-chaîne contenant f
et r
avec un nombre quelconque de caractères, c'est-à-dire quelque chose entre les deux. Pour faire correspondre le nom du paquet entier, utilisez les jetons de début et de fin, par exemple ^foo.bar$
. Si vous voulez qu'un jeton Regex soit traité littéralement, vous devez échapper au jeton avec, \
par exemple, pour le traitement foo.bar
littéral, vous avez besoin de:
sudo apt-get install 'foo\.bar'
Ici, le guillemet simple est d'empêcher l'interprétation shell du modèle comme un modèle globbing, pas nécessaire dans ce cas mais serait nécessaire par exemple pour le modèle foo.*bar
si vous avez un fichier dans le répertoire courant nommé eg foo.bar
.
Il y a un hic sur la considération du nom du package. S'il existe un package correspondant au modèle, le modèle sera traité littéralement et aucune interprétation Regex ne sera effectuée. Par exemple, pour un modèle de package g++
, il correspondra g++
littéralement au package indépendamment du jeton Regex +
. S'il n'y avait aucun package nommé g++
dans les référentiels définis, il sera traité comme un modèle ERE.
Maintenant, vous avez donné la commande:
sudo apt-get install g++ 5.0
Ça signifie:
Vous souhaitez installer deux packages fournis de modèles à savoir g++
et5.0
g++
correspond au méta-package littéral g++
comme mentionné ci-dessus
La partie restante 5.0
,, a un jeton Regex, .
c'est-à - dire n'importe quel caractère unique. Donc, cela correspondra à tout nom de package qui contient 5<any_character>0
. Ainsi, tous les packages qui ont la correspondance ont été sélectionnés pour être installés et vraisemblablement virtualbox-5.0
également sélectionnés dans le processus.
Vraisemblablement, vous voulez installer la g++
version 5
, donc faire ce qui suit ferait ( déjà mentionné dans cette réponse ); Le méta-package g++-5
fera référence au dernier package mineur disponible de la g++
version 5:
sudo apt-get install g++-5
Pour rechercher des packages, dans les référentiels configurés, utilisez apt-cache
(utilise ERE comme apt-get
):
apt-cache search 'g\+\+-[0-9]+'
Si vous ne voulez pas le regex-ify, utilisez less
pour faire défiler la liste un peu plus grande:
apt-cache search g++ | less
Avant d'installer quoi que ce soit dont vous n'êtes pas sûr, n'utilisez pas l' option -y
( --assume-yes
) et testez-la d'abord avec -s
( --simulate
/ --dry-run
):
sudo apt-get install --dry-run foobar
apt-get
demandera une confirmation à l'utilisateur, vous pouvez donc simplement insérern
et éviter d'installer VirtualBox ... De plus, le référentiel d'Ubuntu est vérifié, donc il ne devrait pas y avoir de package de malware que vous pouvez installer en premier lieu. Si vous ajoutez des PPA aléatoires, cela peut se produire, mais c'est parce que vous avez dit à Ubuntu d'installer les applications à partir d'une source non fiable.