Lassen Sie es uns aufschlüsseln.
Zunächst einige Anmerkungen zur Funktionsweise apt-get install
(und zu den meisten anderen apt-get
Argumenten):
Sie können mehrere Paketnamen eingeben:
sudo apt-get install foobar spamegg
Die Paketnamen sind ERE- man 7 regex
Muster (Extended Regular Expression, erweiterter regulärer Ausdruck). Ein Paketname foo.bar
bedeutet also jeden Paketnamen, der eine Teilzeichenfolge hat, die mit einem einzelnen Zeichen zwischen und beginnt foo
und mit diesem endet . Wahrscheinlich ist jede Paketnamen , die eine Teil enthält, hat und mit einer beliebigen Anzahl von Zeichen etwas dh dazwischen. Um den gesamten Paketnamen abzugleichen, verwenden Sie Start- und End-Token, z . Wenn Sie möchten, dass ein Regex-Token im wahrsten Sinne des Wortes behandelt wird , müssen Sie dem Token entgehen, z. B. um ihn im wahrsten Sinne des Wortes zu behandeln . Sie benötigen:bar
foo
bar
f.*r
f
r
^foo.bar$
\
foo.bar
sudo apt-get install 'foo\.bar'
Hier soll das einfache Anführungszeichen verhindern, dass das Muster in der Shell als Globbing-Muster interpretiert wird. Dies ist in diesem Fall nicht erforderlich, wird aber z. B. für Muster benötigt, foo.*bar
wenn sich im aktuellen Verzeichnis eine Datei mit dem Namen z foo.bar
.
Es gibt einen Haken bei der Überlegung des Paketnamens. Wenn es ein Paket gibt, das dem Muster entspricht, wird das Muster wörtlich behandelt und es wird keine Regex-Interpretation durchgeführt. Beispielsweise stimmt ein Paketmuster buchstäblich g++
mit dem Paket überein, g++
unabhängig vom Regex-Token +
. Wenn g++
in den definierten Repositorys kein Paket benannt wurde, wird es als ERE-Muster behandelt.
Nun haben Sie den Befehl gegeben:
sudo apt-get install g++ 5.0
Das heisst:
Sie möchten zwei mitgelieferte Pakete namens g++
und installieren5.0
g++
stimmt mit dem g++
oben erwähnten wörtlichen Metapaket überein
Der verbleibende Teil 5.0
hat ein Regex-Token, .
dh ein beliebiges einzelnes Zeichen. Dies stimmt also mit jedem Paketnamen überein, der enthält 5<any_character>0
. Daher wurden alle Pakete, für die die Übereinstimmung ausgewählt wurde, zur Installation ausgewählt und vermutlich virtualbox-5.0
auch im Verlauf ausgewählt.
Vermutlich möchten Sie die g++
Version installieren 5
, so dass Folgendes zutrifft ( bereits in dieser Antwort erwähnt ). Das Metapaket g++-5
bezieht sich auf das neueste verfügbare kleinere veröffentlichte Paket der g++
Version 5:
sudo apt-get install g++-5
Um innerhalb der konfigurierten Repositorys nach Paketen zu suchen, verwenden Sie apt-cache
(verwendet ERE wie apt-get
):
apt-cache search 'g\+\+-[0-9]+'
Wenn Sie es nicht erneut prüfen möchten, scrollen Sie mit less
in der größeren Liste nach unten:
apt-cache search g++ | less
Auch bevor Sie etwas installieren, bei dem Sie sich nicht sicher sind, verwenden Sie nicht die Option -y
( --assume-yes
) und testen Sie es zuerst mit -s
( --simulate
/ --dry-run
):
sudo apt-get install --dry-run foobar
apt-get
bittet den Benutzer um Bestätigung, so dass Sien
VirtualBox einfach einfügen und die Installation vermeiden können. ... Auch das Ubuntu-Repository wird überprüft, sodass es kein Malware-Paket geben sollte, das Sie überhaupt installieren können. Wenn Sie zufällige PPAs hinzufügen, kann dies passieren, aber das liegt daran, dass Sie Ubuntu angewiesen haben, Anwendungen von einer nicht vertrauenswürdigen Quelle zu installieren.