Hãy phá vỡ nó.
Trước hết, một số lưu ý về cách apt-get install(và hầu hết các apt-getđối số khác cũng vậy) hoạt động:
Bạn có thể nhập nhiều tên gói:
sudo apt-get install foobar spamegg
Tên gói thực sự là man 7 regexcác mẫu Biểu thức chính quy mở rộng (ERE) (Kiểm tra ) để tên gói foo.barcó nghĩa là bất kỳ tên gói nào có chuỗi con bắt đầu foovà kết thúc barbằng bất kỳ ký tự đơn nào giữa foovà bar. Có khả năng f.*rcó nghĩa là bất kỳ tên gói nào có chứa một chuỗi con có fvà rvới bất kỳ số lượng ký tự nào, tức là bất cứ thứ gì ở giữa. Để thực hiện khớp toàn bộ tên gói, hãy sử dụng mã thông báo bắt đầu và kết thúc, vd ^foo.bar$. Nếu bạn muốn bất kỳ mã thông báo Regex nào được xử lý theo nghĩa đen thì bạn cần phải thoát mã thông báo với \ví dụ: để xử lý theo foo.barnghĩa đen, bạn cần:
sudo apt-get install 'foo\.bar'
Ở đây, trích dẫn duy nhất là để ngăn việc diễn giải shell của mẫu dưới dạng mẫu hình cầu, không cần thiết trong trường hợp này nhưng sẽ là cần thiết, ví dụ cho mẫu foo.*barnếu bạn có một tệp trong thư mục hiện tại có tên, vd foo.bar.
Có một lưu ý về việc xem xét tên gói. Nếu có bất kỳ gói nào khớp với mẫu, mẫu sẽ được xử lý theo nghĩa đen và không có giải thích Regex nào được thực hiện. Ví dụ: đối với mẫu gói g++, nó sẽ khớp với gói theo g++nghĩa đen không phân biệt mã thông báo Regex +. Nếu không có gói có tên g++trong kho được xác định, nó sẽ được coi là mẫu ERE.
Bây giờ, bạn đã đưa ra lệnh:
sudo apt-get install g++ 5.0
Điều này có nghĩa là:
Bạn muốn cài đặt hai mẫu được cung cấp gói g++và5.0
g++khớp với gói meta theo nghĩa đen g++như đã đề cập ở trên
Phần còn lại 5.0, có mã thông báo Regex, .tức là bất kỳ ký tự đơn nào. Vì vậy, điều này sẽ phù hợp với bất kỳ tên gói có chứa 5<any_character>0. Vì vậy, tất cả các gói có khớp đã được chọn để cài đặt và có lẽ virtualbox-5.0cũng đã được chọn trong quy trình.
Có lẽ bạn muốn cài đặt g++phiên bản 5, do đó, làm như sau sẽ làm ( đã được đề cập trong câu trả lời này ); Gói meta g++-5, sẽ đề cập đến gói phát hành nhỏ mới nhất có sẵn của g++phiên bản 5:
sudo apt-get install g++-5
Để tìm kiếm bất kỳ gói nào, trong kho được cấu hình, hãy sử dụng apt-cache(sử dụng ERE như apt-get):
apt-cache search 'g\+\+-[0-9]+'
Nếu bạn không muốn Regex-ify, hãy sử dụng lessđể cuộn xuống danh sách khá lớn hơn:
apt-cache search g++ | less
Ngoài ra trước khi cài đặt bất cứ thứ gì bạn không chắc chắn, đừng sử dụng tùy chọn -y( --assume-yes) và kiểm tra trước với -s( --simulate/ --dry-run):
sudo apt-get install --dry-run foobar
apt-getsẽ yêu cầu xác nhận từ người dùng, vì vậy bạn chỉ cần chènnvà tránh cài đặt VirtualBox ... Ngoài ra, kho lưu trữ của Ubuntu cũng được kiểm tra, do đó không nên có bất kỳ gói phần mềm độc hại nào bạn có thể cài đặt ngay từ đầu. Nếu bạn thêm PPA ngẫu nhiên thì điều này có thể xảy ra nhưng đó là vì bạn đã bảo Ubuntu cài đặt các ứng dụng từ một nguồn không đáng tin cậy.