Những gì sudo apt-get update Cập nhật làm gì?


Câu trả lời:


551

Tóm lại, apt-get updatekhông thực sự cài đặt các phiên bản phần mềm mới. Thay vào đó, nó cập nhật danh sách gói để nâng cấp cho các gói cần nâng cấp, cũng như các gói mới vừa đến kho.

  • apt-get updatetải xuống danh sách gói từ kho lưu trữ và "cập nhật" chúng để có được thông tin về các phiên bản mới nhất của gói và phụ thuộc của chúng. Nó sẽ làm điều này cho tất cả các kho lưu trữ và PPA. Từ http://linux.die.net/man/8/apt-get :

    Được sử dụng để đồng bộ hóa lại các tệp chỉ mục gói từ các nguồn của chúng. Các chỉ mục của các gói có sẵn được tìm nạp từ (các) vị trí được chỉ định trong /etc/apt/sources.list(5). Một bản cập nhật phải luôn được thực hiện trước khi nâng cấp hoặc nâng cấp.

  • apt-get upgradesẽ tìm nạp các phiên bản mới của các gói hiện có trên máy nếu APT biết về các phiên bản mới này apt-get update.

    Từ http://linux.die.net/man/8/apt-get :

    Được sử dụng để cài đặt các phiên bản mới nhất của tất cả các gói hiện được cài đặt trên hệ thống từ các nguồn được liệt kê trong /etc/apt/sources.list(5). Các gói hiện được cài đặt với các phiên bản mới có sẵn được lấy và nâng cấp; trong mọi trường hợp hiện tại các gói đã được cài đặt được gỡ bỏ, cũng không phải là các gói chưa được cài đặt được lấy và cài đặt. Các phiên bản mới của các gói hiện được cài đặt không thể nâng cấp mà không thay đổi trạng thái cài đặt của gói khác sẽ được để lại ở phiên bản hiện tại của chúng. [Nhấn mạnh mỏ] Một bản cập nhật phải được thực hiện trước tiên để apt-get biết rằng các phiên bản mới của gói có sẵn.

  • apt-get dist-upgradesẽ thực hiện cùng một công việc được thực hiện apt-get upgrade, cộng với nó cũng sẽ xử lý thông minh các phụ thuộc một cách thông minh, do đó, nó có thể loại bỏ các gói lỗi thời hoặc thêm các gói mới. Xem ở đây: "nâng cấp" là gì và tại sao nó nâng cấp nhiều hơn "nâng cấp"?

    Từ http://linux.die.net/man/8/apt-get :

    Ngoài việc thực hiện chức năng nâng cấp, tùy chọn này còn xử lý thông minh việc thay đổi phụ thuộc với các phiên bản mới của gói; apt-get có một hệ thống giải quyết xung đột "thông minh" và nó sẽ cố gắng nâng cấp các gói quan trọng nhất với chi phí của các gói ít quan trọng hơn, nếu cần thiết. Tệp /etc/apt/sources.list(5) chứa danh sách các vị trí để truy xuất tệp gói mong muốn. Xem thêm apt_preferences (5) để biết cơ chế vượt quá các cài đặt chung cho các gói riêng lẻ.

Bạn có thể kết hợp các lệnh với &&như sau:

sudo apt-get update && sudo apt-get install foo bar baz foo-dev foo-dbg

hoặc để có được các phiên bản mới nhất có thể theo yêu cầu phiên bản của các phụ thuộc:

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

Bạn cần sudocả hai lần, nhưng sudotheo mặc định không nhắc bạn trong vòng 5 phút hoặc hơn kể từ lần sudothao tác cuối cùng , bạn sẽ được nhắc nhập mật khẩu chỉ một lần (hoặc hoàn toàn không).


11
Chúng ta có luôn cần chạy sudo apt-get updatelệnh bất cứ khi nào chúng ta cài đặt các gói không? Điều gì bất lợi nếu chúng ta không làm như vậy?
JohnnyQ

14
@JohnnyQ Nếu bạn không chạy lệnh đó thì bạn có thể cài đặt gói lỗi thời.
ζ--

ah nghe có vẻ như đó chỉ là một điều thông thường. Vì vậy, tôi cho rằng nó thực sự không cần thiết, đặc biệt nếu bạn chỉ sử dụng các gói cơ bản với các lệnh cơ bản không được cập nhật thường xuyên. Vấn đề trong tình huống của tôi là apt-get updatephải mất một thời gian, internet ở đây vẫn còn sơ khai.
JohnnyQ

2
@JohnnyQ, nếu bản cập nhật apt-get của bạn chậm, thì bản nâng cấp apt-get dist của bạn cũng sẽ chậm, vì vậy đó không thực sự là một đối số không nên cập nhật apt-get trước. Btw, bạn có thể tăng tốc cập nhật apt-get bằng cách xem thư mục /etc/apt/source.d/ để xem liệu bạn có bất kỳ kho lưu trữ tùy chỉnh nào được thêm vào không và một trong số đó có thể không phản hồi, điều này sẽ làm chậm toàn bộ quá trình cập nhật.
Mladen B.

1
Nhân tiện, "apt" là viết tắt của Công cụ đóng gói nâng cao ( wiki.debian.org/Apt "APT là gì?"). Một cái gì đó tôi đã học được vào ngày khác, nghĩ rằng tôi muốn chia sẻ. ("apt" xuất hiện thường xuyên trong man apt-get, man apt, nhưng tôi chưa bao giờ thấy từ viết tắt được mở rộng trước đó).
jgreve

47

Một tìm kiếm Google có thể cung cấp cho bạn định nghĩa cho hầu hết mọi lệnh thiết bị đầu cuối, như có thể - trợ giúp trong thiết bị đầu cuối. Ví dụ,

apt-get --help

sudo apt-get update về cơ bản có ba phần:

sudo

thực hiện lệnh sau với khả năng siêu người dùng (root). Nhiều hành động yêu cầu sửa đổi tệp hệ thống hoặc cài đặt ứng dụng yêu cầu thêm quyền để thực hiện.

apt-get

là một công cụ dòng lệnh mà Ubuntu sử dụng để cài đặt, gỡ bỏ và quản lý các gói phần mềm

update

là một tùy chọn cho chương trình apt-get để sử dụng để cập nhật danh sách gói từ máy chủ trên internet. Danh sách gói cung cấp tiện ích apt-get với thông tin quan trọng về các gói phần mềm mà bạn có thể cài đặt bằng apt-get. apt-get sử dụng các danh sách này để xác định phần mềm nào sẽ được cài đặt khi được lệnh cài đặt. Ví dụ

sudo apt-get install guake

sẽ cài đặt thiết bị đầu cuối Guake vì nó hiện được liệt kê trong danh sách phần mềm cục bộ của máy tính của tôi. Tuy nhiên, đây có thể không phải là phiên bản phù hợp hoặc nếu chương trình mới, nó có thể không có sẵn. Vì vậy, khi cài đặt phần mềm với apt-get, bạn thường gõ

sudo apt-get update
sudo apt-get install <package>

đảm bảo rằng apt-get biết để cài đặt phiên bản mới nhất của gói.

Một nguồn hữu ích khác cho thông tin là help.ubuntu.comtrang web. Ví dụ: nếu bạn đã tìm kiếm trang web đó, apt-getbạn sẽ tìm thấy AptGet / Howto là một trong những kết quả.


Alex, về cơ bản tôi có thể sử dụng lệnh như bạn đã đặt nó không: "apt-get update apt-get install <pack>" Về cơ bản 2 điều có thể được thực hiện chỉ bằng cách gõ 2 lệnh như thế này?
Elysium

1
@Elysium Có, nếu bạn có &&giữa họ làsudo apt-get update&&sudo apt-get install foo bar baz
ζ--

7
Sử dụng &&có nghĩa là lệnh thứ hai sẽ chỉ chạy nếu lệnh đầu tiên thành công. Nếu bạn không quan tâm đến sự thành công của lệnh đầu tiên, ;thay vào đó hãy sử dụng .
Flimm

4
Một tìm kiếm Google dẫn tôi đến câu hỏi / câu trả lời này. Chỉ cần FYI;)
teewuane

19

Chạy sudo apt-get updateđơn giản là đảm bảo danh sách các gói của bạn từ tất cả các kho lưu trữ và PPA được cập nhật. Nếu bạn không chạy lệnh này, bạn có thể nhận được các phiên bản cũ hơn của các gói khác nhau mà bạn đang cài đặt hoặc tệ hơn là các vấn đề phụ thuộc. Nếu bạn vừa thêm PPA và chưa cập nhật, không có gì từ PPA sẽ hoạt động cả vì bạn không có danh sách gói từ PPA hoặc kho lưu trữ đó.

Tóm lại: Nó được đánh giá cao đề nghị để chạy sudo apt-get updatetrước khi cài đặt, nhưng nó có thể được bỏ qua nếu bạn đang thực sự ép cho thời gian , trừ khi bạn đã thay đổi kho hoặc PPA nhật kể từ lần apt-get update.


13

Nó cập nhật danh sách phần mềm có sẵn trên máy tính của bạn.

Máy tính của bạn có một danh sách (như một danh mục) có chứa tất cả các phần mềm có sẵn mà các máy chủ Ubuntu có sẵn. Nhưng phần mềm và phiên bản có sẵn có thể thay đổi, do đó, "bản cập nhật" sẽ tấn công máy chủ và xem phần mềm nào có sẵn để cập nhật danh sách địa phương (hoặc danh mục).

Lưu ý rằng updatekhác với upgrade. Cập nhật, như đã đề cập ở trên, sẽ tìm nạp phần mềm có sẵn và cập nhật danh sách trong khi upgradesẽ cài đặt các phiên bản phần mềm mới được cài đặt trên máy tính của bạn (cập nhật phần mềm thực tế).

Để thực sự nâng cấp phần mềm của bạn (không phải "cập nhật" danh sách), bạn thực hiện lệnh

sudo apt-get upgrade

thường được thực hiện sau khi "cập nhật".


Để làm gì sudo apt-get installvậy? Cài đặt các gói cụ thể thay vì nâng cấp chung?
Peter Mortensen

12

Bạn cần chạy apt-get updatemột lần trước khi cài đặt các gói mới vì điều này cập nhật thông tin kho lưu trữ cục bộ. Nếu bạn sắp cài đặt nhiều gói ngay sau đó, bạn không cần phải chạy apt-get update. Ngoài ra, bạn có thể cài đặt nhiều gói cùng một lúc nếu bạn nhập sudo apt-get install package1 package2...


Thủ thuật hay cho điều đó!
Emerson Hsieh

6

Khi bạn cài đặt các gói từ dòng lệnh bằng sudo apt-get install ...(hoặc sudo aptitude install ...) hoặc khi bạn nâng cấp chúng từ dòng lệnh (có upgradehoặc dist-upgradethay vì install), thông tin sau được lấy từ cấu hình hệ thống cục bộ của bạn chứ không phải từ Internet:

  1. những gói nào có sẵn

  2. phiên bản nào của chúng có sẵn

  3. nơi các gói có sẵn nên được lấy từ

Chạy sudo apt-get update(hoặc sudo aptitude update) cập nhật điều này trên hệ thống địa phương của bạn. Đây là bước thực sự lấy thông tin về những gói nào có thể được cài đặt, bao gồm những bản cập nhật nào cho các gói gói hiện đang có sẵn , từ các nguồn Internet.

Khi bạn cài đặt các gói với giao diện GUI (Trình quản lý cập nhật, Trung tâm phần mềm hoặc Trình quản lý gói Synaptic), công việc sudo apt-get updatesẽ được thực hiện tự động. Khi bạn cài đặt các gói từ dòng lệnh, thì không, và bạn nên luôn luôn tự làm điều này trừ khi bạn đã thực hiện rất gần đây .

Vì thông tin về các phiên bản cập nhật của gói có sẵn có được bằng cách chạy sudo apt-get update(hoặc sudo aptitude update), nên chạy gói này trước khi cài đặt bất kỳ gói nào và cần chạy nó để cài đặt các bản cập nhật mới nhất, ngay cả khi bạn chưa thêm hoặc xóa bất kỳ Phần mềm nào Nguồn (chẳng hạn như PPA) .

Xin lưu ý rằng nếu bạn sẽ thực hiện nhiều hoạt động quản lý gói cùng một lúc, bạn không cần phải chạy sudo apt-get updatetrước mỗi hoạt động. Chỉ khi thông tin chưa được cập nhật trong một thời gian, bạn nên đảm bảo chạy nó.


4

Như Eliah Kagan đã đề cập ở trên, bạn sẽ mong đợi rằng một ứng dụng GUI sẽ chạy apt-get updatetrước apt-get install/ apt-get upgradenhưng tôi vừa phát hiện ra một lỗi thú vị 404, trên một máy VM bảo mật tương đối mới, khiến tôi phải bối rối trong một phút.

Từ dòng lệnh, tôi đã chạy apt-get updatevà sau đó thử lại lệnh Công cụ hệ thống / Cập nhật phần mềm và lần này nó chạy không có lỗi 404.

Vì vậy, tôi đoán bạn không thể luôn cho rằng nó apt-get updateđược chạy từ các ứng dụng GUI ...


Thú vị ... Có thể có một số tình huống kết nối bất thường giữa bạn và máy chủ được xử lý tốt hơn khi bạn chạy apt-getso với kiểm tra tự động được thực hiện bằng cách chạy Trình cập nhật phần mềm / Trình quản lý cập nhật? Bạn có sử dụng proxy HTTP không? Và bạn có thể làm cho nó xảy ra một lần nữa, hoặc nó đã xảy ra chỉ một lần? Nếu đó là một sự bất thường bị cô lập, tôi tự hỏi liệu có thể vấn đề là do cấu hình sai máy chủ tạm thời. Bạn dùng gương gì? Với nhiều thông tin hơn, có lẽ tôi có thể cải thiện câu trả lời của mình. (Btw, đây có phải là một câu trả lời riêng biệt hay nên được chuyển đổi thành một nhận xét?)
Eliah Kagan

3

Như đã nói bởi nhiều người trước tôi điều này cập nhật kho lưu trữ cục bộ của bạn (danh sách gói).

Bạn có thể gặp rắc rối nếu bạn cố gắng cài đặt

apt-get install foobar

và foobar hoặc một phụ thuộc không có phiên bản mới nhất của họ trong kho lưu trữ. Điều này có thể đặc biệt khó khăn nếu cài đặt tệp .deb bằng tay hoặc ppa từ bên thứ 3.

Về cơ bản nó làm cho chắc chắn danh sách của bạn phù hợp với tổng thể danh sách.


2

Hãy xem xét ví dụ về cài đặt trình phát phương tiện VLC trên Ubuntu:

sudo apt-get update

Nó sẽ kiểm tra các kho lưu trữ để cập nhật.

Trong khi

sudo apt-get install vlc vlc-plugin-pulse mozilla-plugin-vlc

sẽ cài đặt trình phát phương tiện VLC từ kho lưu trữ mà chúng tôi đã tìm kiếm.

Nếu bạn đã đăng nhập với tư cách người dùng root (quản trị viên), bạn không phải sử dụng sudo, vì bạn đã có đặc quyền siêu người dùng.

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.