Câu trả lời:
Không, họ không giống nhau. apt-get upgrade
không xử lý thay đổi phụ thuộc giữa các phiên bản, vì vậy nếu gói đã thay đổi phụ thuộc, nó sẽ không được nâng cấp (nó sẽ bị "giữ lại"). Xem câu trả lời dài để biết thêm chi tiết.
Sử dụng Trình cập nhật phần mềm và sử dụng sudo apt-get update ; sudo apt-get dist-upgrade
(lưu ý dist-
) sẽ gần như tương đương, ngoại trừ đó rõ ràng là GUI và ứng dụng giao diện điều khiển khác và một vài khác biệt thông tin rất nhỏ.
Từ man apt-get
,
apt-get upgrade
:
upgrade
upgrade is used to install the newest versions of all packages
currently installed on the system from the sources enumerated in
/etc/apt/sources.list. Packages currently installed with new
versions available are retrieved and upgraded; under no
circumstances are currently installed packages removed, or packages
not already installed retrieved and installed. New versions of
currently installed packages that cannot be upgraded without
changing the install status of another package will be left at
their current version. An update must be performed first so that
apt-get knows that new versions of packages are available.
(nhấn mạnh bởi tôi)
Điều này có nghĩa là phiên bản mới hơn của gói có phụ thuộc mới không bắt buộc trong phiên bản cũ sẽ không được nâng cấp bằng phương pháp này (trừ khi phụ thuộc mới đã được cài đặt). Chúng sẽ được hiển thị là "Được giữ lại".
apt-get dist-upgrade
:
dist-upgrade
dist-upgrade in addition to performing the function of upgrade,
also intelligently handles changing dependencies with new versions
of packages; apt-get has a "smart" conflict resolution system, and
it will attempt to upgrade the most important packages at the
expense of less important ones if necessary. The dist-upgrade
command may therefore remove some packages. The
/etc/apt/sources.list file contains a list of locations from which
to retrieve desired package files. See also apt_preferences(5) for
a mechanism for overriding the general settings for individual
packages.
(nhấn mạnh bởi tôi)
Điều này có nghĩa là với lệnh này thay vì upgrade
, các gói có phụ thuộc mới (hoặc bị loại bỏ) có thể được nâng cấp.
Một ví dụ điển hình về sự khác biệt giữa hai loại này là khi một nhân Linux mới được phát hành. Điều này được đóng gói vào linux-image-generic
gói luôn phụ thuộc vào gói Linux mới nhất. Bởi vì sự phụ thuộc của linux-image-generic
thay đổi với mỗi lần nâng cấp kernel, upgrade
sẽ không nâng cấp nó.
apt-get upgrade
bắt buộc), apt-get
không thể làm như vậy? Có vẻ như có một cái gì đó khác về cơ bản giữa hai.
Nó gần giống nhau nhưng không chính xác. Ví dụ, khi các bản cập nhật kernel được cung cấp, sudo apt-get update && sudo apt-get dist-upgrade
là cần thiết để có được các bản cập nhật đó.
sudo apt-get update && sudo apt-get upgrade
sẽ cho bạn biết rằng một số gói đã được giữ lại.
Sử dụng Trình cập nhật phần mềm làm cho mọi thứ liền mạch và bạn sẽ không thấy bất cứ điều gì bị giữ lại.
apt
có sẵn ( được đề cập bởi pabouk ) là sự khác biệt nổi bật nhất giữa việc cập nhật với Trình cập nhật phần mềm và dòng lệnh.Ngày nay, apt
tiện ích - không tồn tại khi câu hỏi này được đăng nhưng có thể sẽ được đưa vào câu hỏi nếu có - đây là một giải pháp thay thế ngày càng phổ biến để apt-get
nâng cấp các gói. Chúng tương tự nhau: cùng một gói (còn được gọi apt
) cung cấp cả hai và mọi thứ đều apt
có thể làm được, các apt-
tiện ích truyền thống cũng có thể, mặc dù trong một số trường hợp bạn sẽ phải vượt qua các tùy chọn cấu hình đặc biệt. Nhưng apt
gần hơn với Trình apt-get
cập nhật phần mềm. Giống như Updater Software, là có khả năng cài đặt các gói mới khi phiên bản mới của một gói hiện tuyên bố họ là phụ thuộc.sudo apt upgrade
Vì vậy, những ngày này, người dùng quan tâm đến sự khác biệt này chỉ có thể chạy sudo apt upgrade
thay vì sudo apt-get upgrade
nếu họ muốn các phụ thuộc mới được cài đặt tự động. Do đó, tính năng của Trình cập nhật phần mềm trong việc trì hoãn một số cập nhật một chút, để xác định xem chúng có ổn định hay không và hạn chế thiệt hại nếu không, giờ đây có lẽ là sự khác biệt chính giữa sử dụng Trình cập nhật phần mềm và cập nhật trên dòng lệnh.
Hành vi này của Trình cập nhật phần mềm là do chính sách cập nhật theo từng giai đoạn . Chính sách đó - được triển khai trong Trình cập nhật phần mềm nhưng không phảiapt-get
(hoặc apt
) - là một điểm khác biệt lớn giữa hai phương pháp kể từ khi chính sách được đưa ra và pabouk đã nhận xét về nó vài năm trước :
Có một sự khác biệt khác:
apt-get
không sử dụng PhasingUpdates nên đôi khi Software Updater hiển thị ít cập nhật hơnapt-get
. Xem tại sao Trình cập nhật phần mềm cho biết Không có bản cập nhật khả dụng, nhưng nâng cấp apt-get Hiển thị các bản cập nhật khả dụng? .
- pabouk ngày 25 tháng 2 năm 15 lúc 7:34
Đây có thể luôn là sự khác biệt đáng kể nhất, trong đó người ta luôn có thể chạy sudo apt-get dist-upgrade
khi phải đối mặt với upgrade
hành động không sẵn sàng cài đặt các gói mới hoặc gỡ cài đặt các gói hiện có. Tuy nhiên, khi cập nhật từ dòng lệnh, tầm quan trọng tương đối của các cập nhật theo giai đoạn tăng theo apt
:
apt-get
, apt
lệnh sẽ tải xuống và cài đặt các bản cập nhật ngay cả khi chúng bị trì hoãn do chính sách cập nhật theo giai đoạn nếu Trình cập nhật phần mềm đã được sử dụng thay thế.apt-get
, hành động apt
của lệnh sẽ cài đặt các gói mới chưa được cài đặt trước đó nhưng được yêu cầu làm phụ thuộc cho các phiên bản gói mới.upgrade
Ngoài (a) thích giao diện đồ họa và (b) tích hợp máy tính để bàn của nó cung cấp thông báo khi có bản cập nhật, lý do chính hiện tại người ta có thể sử dụng Trình cập nhật phần mềm là cách dễ nhất để tham gia vào các bản cập nhật theo giai đoạn.
apt-get
không sử dụng PhasingUpdates nên đôi khi Software Updater hiển thị ít cập nhật hơnapt-get
. Xem tại sao Trình cập nhật phần mềm cho biết Không có bản cập nhật khả dụng, nhưng nâng cấp apt-get Hiển thị các bản cập nhật khả dụng? .