Câu hỏi “Sudo apt-get update” làm gì?


Tôi tự hỏi điều gì sudo apt-get update làm?

Nó cập nhật cái gì?


450
2017-11-27 00:07


gốc




Các câu trả lời:


Tóm lại, apt-get update khô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 các danh sách gói để nâng cấp các gói cần nâng cấp, cũng như các gói mới vừa đến kho lưu trữ.

  • apt-get update tải xuống danh sách các gói từ kho và "cập nhật" chúng để nhận thông tin về các phiên bản mới nhất của các gói và các gói phụ thuộc của chúng. Nó sẽ làm điều này cho tất cả các kho 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 lấy từ (các) vị trí được chỉ định trong /etc/apt/sources.list(5). 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 upgrade sẽ 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 bằng cách 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 truy xuất và nâng cấp; trong mọi trường hợp hiện không được cài đặt gói gỡ bỏ, cũng không phải là gói chưa được cài đặt lấy ra và cài đặt. Các phiên bản mới của các gói hiện đang đượ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. [Mỏ nhấn mạnh] Bản cập nhật phải được thực hiện trước để apt-get biết rằng các phiên bản gói mới có sẵn.

  • apt-get dist-upgrade sẽ làm cùng một công việc được thực hiện bởi apt-get upgrade, cộng với nó cũng sẽ xử lý thông minh các phụ thuộc, vì vậy 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: "Dist-upgrade" 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ý các phụ thuộc thay đổi một cách thông minh với các phiên bản gói mới; apt-get có hệ thống giải quyết xung đột "thông minh" và sẽ cố gắng nâng cấp các gói quan trọng nhất với chi phí ít quan trọng hơn nếu cần.   Các /etc/apt/sources.list(5) tệp chứa danh sách các vị trí từ   để truy xuất các tệp gói mong muốn. Xem thêm apt_preferences (5) cho một cơ chế để vượt qua các cài đặt chung cho từng gói.

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 phiên bản mới nhất có thể theo yêu cầu phiên bản của phụ thuộc:

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

Bạn cần sudo cả hai lần, nhưng kể từ đó sudo theo mặc định không nhắc bạn trong vòng 5 hoặc hơn vài phút kể từ lần cuối cùng sudo hoạt động, bạn sẽ được nhắc nhở cho mật khẩu của bạn chỉ một lần (hoặc không phải ở tất cả).


484
2017-11-27 00:17



Chúng ta luôn cần chạy sudo apt-get update lệnh bất cứ khi nào chúng tôi cài đặt gói? Những bất lợi nếu chúng ta không làm như vậy? - JohnnyQ
@ JohnnyQ Nếu bạn không chạy lệnh đó thì bạn có thể nhận được gói cài đặt lỗi thời. - hexafraction
ah âm thanh như nó chỉ là một điều ước. Vì vậy, tôi giả định nó thực sự không cần thiết đặc biệt là nếu bạn chỉ sử dụng các gói cơ bản với các lệnh cơ bản mà không được cập nhật thường. Vấn đề trong tình huống của tôi là apt-get updatemất một thời gian, internet ở đây vẫn còn nguyên thủy. - JohnnyQ
@JohnnyQ Đối với một số gói, điều quan trọng là danh sách gói của bạn phải được cập nhật. Ví dụ về các gói như vậy bao gồm phần mềm bảo mật quan trọng. - hexafraction
@ JohnnyQ, nếu cập nhật apt-get của bạn chậm, khi đó apt-get dist-upgrade của bạn cũng sẽ bị chậm, vì vậy đó không thực sự là một đối số không làm 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/sources.d/ để xem liệu bạn có bất kỳ kho lưu trữ tùy chỉnh nào được thêm hay 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.


Một tìm kiếm của Google có thể cung cấp cho bạn định nghĩa cho hầu như bất kỳ lệnh đầu cuối nào, 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 để đi qua.

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 các 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 cách sử dụ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 đưa ra một 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, điều này có thể không phải là phiên bản thích hợp hoặc nếu chương trình là 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 thông tin hữu ích khác là help.ubuntu.com trang web. Ví dụ: nếu bạn đã tìm kiếm trang web đó cho apt-get bạn sẽ tìm thấy AptGet / Howto là một trong những kết quả.


42
2017-11-27 00:16



Alex, về cơ bản tôi có thể sử dụng lệnh như bạn đặt nó: "apt-get update apt-get install <package>" Về cơ bản 2 điều có thể được thực hiện chỉ cần gõ 2 lệnh với nhau như thế này? - Elysium
@Elysium Có, nếu bạn có && giữa chúng như sudo apt-get update&&sudo apt-get install foo bar baz - hexafraction
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, hãy sử dụng ; thay thế. - Flimm
Tìm kiếm của Google đã đưa tôi đến câu hỏi / câu trả lời này. Chỉ cần FYI;) - teewuane


Đang chạy sudo apt-get update chỉ đơ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 các vấn đề phụ thuộc tồi tệ hơn. Nếu bạn vừa thêm một PPA và chưa được cập nhật, thì không có gì từ PPA sẽ làm việc chút nào vì bạn không có danh sách gói từ PPA hoặc kho lưu trữ đó.

Tóm lại: Đó là cao nên chạy sudo apt-get update trước khi cài đặt, nhưng nó có thể bị bỏ qua nếu bạn thực sự bị ép theo thời gian trừ khi bạn đã thay đổi vị trí lưu trữ hoặc PPA kể từ lần cuối cùng apt-get update.


18
2018-06-05 23:21





Bạn cần phải chạy apt-get update một lần trước khi cài đặt các gói mới vì điều này sẽ cập nhật thông tin kho lưu trữ cục bộ. Nếu bạn định cài đặt nhiều gói ngay sau mỗi gói khác, 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...


12
2018-06-05 23:23



Nice trick cho điều đó! - Emerson Hsieh


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 đó, "cập nhật" sẽ nhấn vào 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 update khá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 upgrade sẽ 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 thi lệnh

sudo apt-get upgrade

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


10
2017-11-27 00:21



Những gì là sudo apt-get install thì sao? Cài đặt các gói cụ thể thay vì nâng cấp chung? - Peter Mortensen


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

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

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

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

Đang chạy sudo apt-get update (hoặc là sudo aptitude update) cập nhật điều này trên hệ thống cục bộ của bạn. Đây là bước thực sự truy xuất thông tin về những gói nào có thể được cài đặt, bao gồm những cập nhật cho các gói gói hiện được cài đặt 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 của sudo apt-get update được thực hiện tự động. Khi bạn cài đặt các gói từ dòng lệnh, nó không phải là, và bạn nên luôn tự làm điều này trừ khi bạn đã làm rất gần đây.

Bởi vì thông tin về những phiên bản cập nhật của các gói có sẵn có được bằng cách chạy sudo apt-get update (hoặc là sudo aptitude update), bạn nên chạy nó trước khi cài đặt bất kỳ gói nào và cần thiết để 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ỳ Nguồn Phần mềm nào (chẳng hạn như PPA).

Xin lưu ý rằng nếu bạn định thực hiện nhiều thao tác quản lý gói trong cùng một thời gian, bạn không cần phải chạy sudo apt-get update trước mỗi người. Chỉ khi thông tin không được cập nhật trong một thời gian, bạn nên chắc chắn rằng nó đã chạy.


4
2018-06-05 23:59





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

Từ dòng lệnh, tôi đã chạy apt-get update, và sau đó thử lại lệnh System Tools / Software-Update 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 luôn giả định rằng apt-get update được chạy từ các ứng dụng GUI ...


4
2018-04-02 02:58



Thú vị ... Có thể có một số tình huống mạng 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-get bằng 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à liệu bạn có thể làm cho nó xảy ra lần nữa, hay nó đã xảy ra chỉ một lần? Nếu đó là một dị thường bị cô lập, tôi tự hỏi nếu có thể vấn đề là do cấu hình sai máy chủ tạm thời. Bạn sử 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à câu trả lời riêng biệt, hay nó nên được chuyển thành một bình luận?) - Eliah Kagan


Như đã nói bởi nhiều người trước tôi, điều này sẽ 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ố cài đặt

apt-get install foobar

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

Về cơ bản nó chắc chắn Danh sách của bạn phù hợp với bậc thầy danh sách.


2
2018-06-05 23:38





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

sudo apt-get update

Nó sẽ kiểm tra các kho lưu trữ cho các bản cập nhật có sẵn.

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ừ các 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, bởi vì bạn đã có đặc quyền của người dùng siêu.


2
2017-11-27 07:24