Tại sao nên sử dụng nâng cấp apt-get thay vì apt-get dist-nâng cấp?


302

Tôi thường sử dụng apt-get update && apt-get upgradeđể chạy các bản cập nhật và nâng cấp của mình thay vì GUI vì nó dường như chạy nhanh hơn.

Tuy nhiên, gần đây tôi nhận thấy rằng tôi thường nhận được một thông báo rằng một trong những nâng cấp của tôi đã bị giữ lại. Sau đó tôi thường chạy dist-upgradeđể chạy qua và nó hoạt động tốt. Theo như tôi có thể nói sau khi đọc câu hỏi này và câu trả lời của nó, dist-upgradethực hiện tất cả những điều tương tự và sau đó một số.

Vì vậy, câu hỏi của tôi là: Tại sao sử dụng apt-get upgradetất cả? Tại sao không sử dụng apt-get dist-upgradetất cả thời gian? Tại sao apt-get upgradethậm chí tồn tại?


1
Trong các phiên bản Ubuntu mới hơn, sudo apt full-upgradethực hiện những điều tương tự.
Aaron Franke

Câu trả lời:


410

Tôi thường nâng cấp máy của mình với:

sudo apt-get update && time sudo apt-get dist-upgrade

Dưới đây là một đoạn trích từ man apt-get. Việc sử dụng nâng cấp tuân theo quy tắc: trong mọi trường hợp, các gói đã được cài đặt hiện tại bị xóa hoặc các gói chưa được cài đặt được truy xuất và cài đặt. Nếu điều đó quan trọng với bạn, hãy sử dụng apt-get upgrade. Nếu bạn muốn mọi thứ "chỉ hoạt động", có lẽ bạn muốn apt-get dist-upgradeđảm bảo sự phụ thuộc được giải quyết.

Để mở rộng lý do tại sao bạn muốn nâng cấp thay vì nâng cấp xa , nếu bạn là quản trị viên hệ thống, bạn cần có khả năng dự đoán. Bạn có thể đang sử dụng các tính năng nâng cao như ghim apt hoặc lấy từ bộ sưu tập PPA (có lẽ bạn có PPA nội bộ), với nhiều thiết bị tự động khác để kiểm tra hệ thống của bạn và nâng cấp có sẵn thay vì luôn háo hức nâng cấp tất cả các gói có sẵn. Bạn sẽ rất nản lòng khi apt thực hiện hành vi không được ghi lại, đặc biệt nếu điều này dẫn đến thời gian ngừng hoạt động của một dịch vụ sản xuất.

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.

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. So, dist-upgrade
    command may 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.

44
Cảm ơn bạn không chỉ tóm tắt sự khác biệt giữa hai người, mà còn giải thích các tình huống mà một người có thể tốt hơn người kia. Đây chính xác là những gì tôi đang tìm kiếm.
jimchristie

10
dist-upgradecó nhiều khả năng phá vỡ những thứ tồi tệ hơn upgrade. upgradeđảm bảo rằng hệ thống của bạn vẫn hoàn chỉnh
Braiam

5
nâng cấp có nhiều khả năng khắc phục các sự cố với các phiên bản gói xung đột, nếu bạn cảm thấy thoải mái khi thực hiện phương pháp lăn trên đường (tức là bạn không có phần mềm sản xuất quan trọng đang chạy trên hộp)
Henno

1
Một câu hỏi nhỏ về 'nâng cấp apt-get' đề cập đến thực tế là "không có gói nào được cài đặt hiện tại bị xóa hoặc gói mới được thêm vào": các gói hiện có cũng được nâng cấp tương ứng. Ví dụ oldA phụ thuộc vào oldB. OldA và oldB đều sẽ được nâng cấp? Sẽ thế nào nếu newA phụ thuộc vào oldB chứ không phải newB, điều gì xảy ra với hai thứ này trong quá trình nâng cấp? cả hai đều không được nâng cấp hoặc cả hai được nâng cấp, điều này có thể khiến newA không hoạt động vì oldB bị mất?
Kenny

2
Lý do cho việc sử dụng timeở đây là gì?
ItalyPaleAle

128

Tôi biết câu hỏi này đã được trả lời và đã được một năm tuổi, nhưng tôi cảm thấy điều này cần phải được nói. Ubuntu 14.04 trở lên (và Debian Jessie trở lên, đối với những người tìm thấy điều này từ Google) sử dụng APT 1.0, cho phép lệnh aptthay vì apt-getapt-cachecho một số thao tác.

  • apt-get upgrade sẽ không thay đổi những gì được cài đặt (chỉ phiên bản),
  • apt-get dist-upgrade sẽ cài đặt hoặc gỡ bỏ các gói khi cần thiết để hoàn thành nâng cấp,
  • apt upgrade sẽ tự động cài đặt nhưng không gỡ bỏ gói.
  • apt full-upgradethực hiện chức năng tương tự như apt-get dist-upgrade.

@muru Cảm ơn bạn đã chỉnh sửa và lưu ý về nâng cấp đầy đủ. Tôi chủ yếu sử dụng Debian 7 (trước APT 1.0) và tôi chỉ chơi với Debian Jessie và Ubuntu 14.04.
Stephen Angelico

không có gì. Là một người jessiethường xuyên sử dụng và 14.04, lần đầu tiên tôi biết đến tiện ích mới này từ câu trả lời của bạn!
muru

Bạn có một nguồn cho mô tả của bạn apt upgrade? Tất cả mọi thứ tôi có thể đưa ra cho thấy đó apt upgradelà giống như apt-get upgrade. Ví dụ: apt help upgradetrên hệ thống đầu ra của tôi:"apt upgrade" is equivalent to "sudo apt-get upgrade"
Jon Bentley

1
Các trang tương ứng cho aptapt-getchỉ định những gì tôi nói ban đầu.
Stephen Angelico

1
apt safe-upgradekhông phải là một hoạt động hợp lệ trên hệ thống của tôi. Nếu bạn có ý nghĩa aptitude safe-upgrade, không hoàn toàn. apt-get upgradesẽ không bao giờ cài đặt các gói, trong khi apt upgradeaptitude safe-upgradesẽ cài đặt các gói mới vì phụ thuộc vào nó. Như vậy aptitude safe-upgradelà tương đương apt upgrade, không apt-get upgrade.
Stephen Angelico

7

Các upgradetùy chọn chỉ cài đặt phiên bản mới của gói đã được cài đặt trên hệ thống (và có, cập nhật kernel thuộc về họ).

Tuy nhiên, đôi khi các bản cập nhật thay đổi phụ thuộc: ví dụ: phiên bản mới của gói sẽ không còn phụ thuộc vào thư viện mà bạn đã cài đặt hoặc sẽ yêu cầu cài đặt thêm thư viện. Các upgradetùy chọn sẽ không bao giờ loại bỏ các gói cài đặt mà bạn không còn thực sự cần.

Tuy nhiên, dist-upgradetùy chọn có thể "thông minh" xử lý các thay đổi trong hệ thống phụ thuộc. Điều này bao gồm loại bỏ các gói không còn cần thiết hoặc giải quyết xung đột giữa các gói phát sinh do những thay đổi trong các phụ thuộc.


5
Trong khi điều này là chính xác, tôi không nghĩ rằng nó trả lời câu hỏi. Nếu chúng ta có một tùy chọn "thông minh" có thể xử lý các thay đổi phụ thuộc và loại bỏ sự lộn xộn, tại sao không luôn luôn sử dụng nó?
ændrük

1
upgradecũng sẽ không bao giờ thêm các gói mới trở nên cần thiết như phụ thuộc. Từ man apt-get: "trong mọi trường hợp hiện tại các gói đã được cài đặt đã bị xóa hoặc các gói chưa được cài đặt đã được truy xuất và cài đặt" @ ndrük Chỉ vì một cái gì đó "thông minh" không có nghĩa là nó sẽ luôn làm những gì người dùng muốn (hoặc thậm chí là một cái gì đó hợp lý) . Bất cứ khi nào bản cập nhật hệ thống xóa gói, thật tốt để xem xét những gì nó đang làm trước khi nhấn Y.
Eliah Kagan

2

Người dùng có thể đã tin tưởng vào các gói được cài đặt hoàn toàn do sự phụ thuộc của các gói khác (được cài đặt rõ ràng) vào chúng. Do đó, hệ thống đóng gói không thể nhận thức được mong muốn của người dùng / quản trị viên để giữ lại một số chức năng nhất định có thể bị xóa thông qua nâng cấp.


-4

Không phải là vấn đề để Người dùng Win-Home luôn "nâng cấp", nhưng nếu bạn đang chạy các hệ thống phức tạp, tốt hơn hết là "không bao giờ (thực sự) thay đổi hệ thống đang chạy" ... Ngay cả khi "không nên" không có vấn đề gì , có "có thể" là probs - những gì sẽ cắt bạn! BẠN phải là người có 2 quyết định đúng ;-)


3
Should not be a problem for Win-Home Users to always "dist-upgrade"..tại sao vậy ?
heemayl

1
Chà, giả sử bạn thiết lập máy chủ ubfox, máy trạm cho môi trường sản xuất: khi bạn luôn luôn và tự động nâng cấp, bạn có thể không kiểm soát được, khi bạn gặp sự cố - ngay cả khi bạn không có thời gian để giải quyết ngay thời điểm đó một nâng cấp dist tự động được thực hiện. Một số cấu hình có thể cần chạm "người" vào cổng. Đó là những gì tôi đã trải nghiệm nhiều lần. Khi bạn chỉ đơn giản làm việc trên các nền tảng "Trang chủ" như Win-Home, theo mặc định, người dùng không được bật để kiểm soát các bản cập nhật. Vì vậy, bạn có thể không làm phiền bạn.
Thorben Kaufmann
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.