Що робить "sudo apt-get update"?


Відповіді:


550

У двох словах, apt-get updateфактично не встановлюються нові версії програмного забезпечення. Натомість він оновлює списки пакетів оновлень для пакетів, які потребують оновлення, а також нових пакетів, які щойно надійшли у сховища.

  • apt-get updateзавантажує списки пакетів із сховищ та "оновлює" їх, щоб отримати інформацію про новітні версії пакетів та їх залежність. Це буде зроблено для всіх сховищ та PPA. З http://linux.die.net/man/8/apt-get :

    Використовується для повторної синхронізації файлів індексу пакунків із своїх джерел. Індекси доступних пакетів витягуються з розташування, вказаного в /etc/apt/sources.list(5). Оновлення завжди повинно проводитися перед оновленням або розширенням.

  • apt-get upgradeотримає нові версії пакетів, існуючих на машині, якщо APT знає про ці нові версії apt-get update.

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

    Використовується для установки найновіших версій усіх пакетів, які зараз встановлені в системі, з джерел, перелічених у /etc/apt/sources.list(5). Пакети, які зараз встановлені з новими версіями, доступні для отримання та оновлення; На даний момент жодним чином не видаляються встановлені пакети, а також пакети, які вже не встановлені, не отримано та не встановлено. Нові версії встановлених на сьогодні пакетів, які неможливо оновити без зміни статусу іншого пакета, залишатимуться у їх поточній версії. [Наголос моє] Оновлення потрібно виконати спочатку, щоб apt-get знав, що доступні нові версії пакетів.

  • apt-get dist-upgradeзробить ту саму роботу, яку виконує і apt-get upgradeплюс, вона також розумно поводиться із залежностями, тож може видалити застарілі пакети або додати нові. Дивіться тут: Що таке "dist-upgrade" і чому оновлення більше, ніж "оновлення"?

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

    Окрім виконання функції оновлення, ця опція також інтелектуально обробляє зміни залежностей новими версіями пакетів; apt-get має "розумну" систему вирішення конфліктів, і вона спробує оновити найважливіші пакети за рахунок менш важливих пакетів, якщо це необхідно. Файл /etc/apt/sources.list(5) містить перелік місць, з яких можна отримати потрібні файли пакунків. Дивіться також apt_preferences (5) щодо механізму перевиконання загальних параметрів для окремих пакетів.

Ви можете комбінувати команди з &&наступним чином:

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

або отримати новіші версії відповідно до вимог залежностей від версії:

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

Вам потрібні sudoобидва рази, але оскільки sudoза замовчуванням вас не підкаже протягом 5 хвилин з часу останньої sudoоперації, вам буде запропоновано ввести пароль лише один раз (або зовсім не).


11
Чи потрібно нам завжди запускати sudo apt-get updateкоманду, коли ми встановлюємо пакети? У чому мінус, якщо ми цього не зробимо?
JohnnyQ

14
@JohnnyQ Якщо ви не виконаєте цю команду, то, можливо, ви встановите застарілий пакет.
ζ--

ах, це здається, що це просто умовна річ. Тому я припускаю, що насправді це не так потрібно, особливо якщо ви просто використовуєте основні пакети з основними командами, які зазвичай не оновлюються. Проблема в моїй ситуації полягає в тому, що apt-get updateпотрібен певний час, Інтернет тут все ще примітивний.
JohnnyQ

2
@JohnnyQ, якщо оновлення apt-get повільне, то оновлення apt-get dist також буде повільним, тому це насправді не аргумент, щоб не робити оновлення apt-get спочатку. Btw, ви можете пришвидшити оновлення apt-get, заглянувши в папку /etc/apt/sources.d/, щоб побачити, чи є додані вами власні сховища, і одне з них може не відповідати, що сповільнить весь процес оновлення.
Младен Б.

1
До речі, "apt" означає розширений інструмент упаковки ( wiki.debian.org/Apt "Що таке APT?"). Щось я дізнався днями, думав, що поділюсь. ("apt" часто з'являється у man apt-get, man apt, але я ніколи не бачив, щоб акронім розширювався раніше).
jgreve

47

Пошук Google може дати вам визначення майже будь-якої команди терміналу, як це може - допомогти в терміналі. Наприклад,

apt-get --help

sudo apt-get update по суті складається з трьох частин:

sudo

виконує наступну команду із суперкористувацькими (root) можливостями. Багато дій, які потребують зміни системних файлів або встановлення програм, потребують додаткових дозволів.

apt-get

це інструмент командного рядка, який Ubuntu використовує для встановлення, видалення та управління програмними пакетами

update

- це можливість програми apt-get, яка використовує оновлення списків пакетів із сервера в Інтернеті. Списки пакунків надають утиліті apt-get важливу інформацію про програмні пакети, які можна встановити за допомогою apt-get. apt-get використовує ці списки, щоб визначити, яке програмне забезпечення встановити, коли йому дана команда встановити. Наприклад

sudo apt-get install guake

встановив би термінал Guake, як він наразі вказаний у локальних списках мого комп'ютера. Однак це може бути не відповідною версією, або якщо програма нова, вона може бути недоступною. Таким чином, встановлюючи програмне забезпечення з apt-get, ти зазвичай вводиш текст

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

переконавшись, що apt-get знає про встановлення останньої версії пакету.

Ще одне корисне джерело інформації - help.ubuntu.comсайт. Наприклад, якщо ви шукали цей сайт, apt-getви знайдете AptGet / Howto як один з результатів.


Алекс, чи можу я в основному використовувати команду так, як ви її виклали: "apt-get update apt-get install <package>" В основному 2 речі можна виконати, просто набравши 2 команди разом, як це?
Elysium

1
@Elysium Так, якщо у вас &&між ними якsudo apt-get update&&sudo apt-get install foo bar baz
ζ--

7
Використання &&означає, що друга команда буде виконуватися лише в тому випадку, коли перша успішна. Якщо вас не хвилює успіх першої команди, скористайтеся ;натомість.
Flimm

4
Пошук Google зумовив мене до цього питання / відповіді. Просто FYI;)
teewuane

19

Запуск sudo apt-get updateпросто гарантує, що список ваших пакетів із усіх сховищ та PPA є актуальним. Якщо ви не запустите цю команду, ви можете отримати старіші версії різних пакунків, які ви встановлюєте, або, що ще гірше, проблеми залежності. Якщо ви тільки що додали PPA і не оновили, нічого з PPA не буде працювати взагалі, оскільки у вас немає списку пакетів з цього PPA або сховища.

Коротше кажучи: настійно рекомендується запустити sudo apt-get updateперед встановленням, але він може бути пропущений, якщо ви дійсно натиснуті на час, якщо ви не змінили сховища або PPA з останнього apt-get update.


13

Він оновлює доступний список програмного забезпечення на вашому комп’ютері.

На вашому комп’ютері є список (наприклад, каталог), який містить усе доступне програмне забезпечення, яке доступні на серверах Ubuntu. Але доступне програмне забезпечення та версії можуть змінитися, тому "оновлення" потрапить на сервер і побачить, яке програмне забезпечення доступне для оновлення його локальних списків (або каталогів).

Зауважте, що updateце відрізняється від upgrade. Оновлення, як було сказано вище, отримає доступне програмне забезпечення та оновить списки, в той час як upgradeбуде встановлено нові версії програмного забезпечення, встановлені на вашому комп'ютері (фактичні оновлення програмного забезпечення).

Щоб фактично оновити програмне забезпечення (не "оновлювати" списки), ви виконуєте команду

sudo apt-get upgrade

яка зазвичай виконується після "оновлення".


Для sudo apt-get installчого тоді? Встановлення окремих пакетів замість загального оновлення?
Пітер Мортенсен

12

Потрібно запустити apt-get updateодин раз перед встановленням нових пакетів, оскільки це оновлює інформацію локального сховища. Якщо ви збираєтесь встановлювати кілька пакетів незабаром один за одним, запускати не потрібно apt-get update. Крім того, ви можете встановити кілька пакетів одночасно, якщо ви введете текст sudo apt-get install package1 package2...


Гарний трюк для цього!
Emerson Hsieh

6

Коли ви встановлюєте пакети з командного рядка за допомогою sudo apt-get install ...(або sudo aptitude install ...) або під час їх оновлення з командного рядка (з upgradeабо dist-upgradeзамість нього install), така інформація отримується з конфігурації вашої локальної системи, а не з Інтернету:

  1. які пакунки доступні

  2. які їх версії доступні

  3. звідки можна отримати доступні пакети

Запуск sudo apt-get update(або sudo aptitude update) оновлює це у вашій локальній системі. Це крок, який фактично отримує інформацію про те, які пакунки можуть бути встановлені, в тому числі про те, які оновлення наявних пакетів пакетів тепер доступні , з Інтернет-джерел.

При встановленні пакетів з інтерфейсом GUI (диспетчер оновлень, Центр програмного забезпечення або Synaptic Package Manager) робота sudo apt-get updateвиконується автоматично. Коли ви встановлюєте пакети з командного рядка, це не так, і ви завжди повинні робити це самостійно, якщо ви цього не робили зовсім недавно .

Оскільки інформація про те, які оновлені версії пакетів доступні, отримується за допомогою запуску sudo apt-get update(або sudo aptitude update), бажано запустити це перед встановленням будь-якого пакету та необхідно запустити його для встановлення останніх оновлень, навіть якщо ви не додали чи не видалили жодне програмне забезпечення Джерела (наприклад, PPA) .

Зауважте, що якщо ви збираєтесь виконувати кілька операцій з управління пакетом приблизно в один і той же час, вам не потрібно запускатись sudo apt-get updateперед кожною з них. Лише якщо інформація деякий час не оновлювалася, ви повинні переконатися в її запуску.


4

Як згадував Елія Каган вище, ви очікували, що програма GUI запуститься apt-get updateраніше apt-get install/ apt-get upgrade, але я щойно виявив цікаву помилку 404 на відносно новій машині VM з наступальною безпекою, яка мене на хвилину затхнула.

З командного рядка я біг apt-get update, а потім знову спробував команду System Tools / Software-Update, і цього разу він запустився без 404 помилок.

Отже, я думаю, ви не завжди можете припустити, що apt-get updateце запускається з програм GUI ...


Цікаво ... Можливо, може виникнути якась незвична ситуація з мережею між вами та сервером, з якою краще керуватись під час запуску, apt-getніж з допомогою автоматичної перевірки, виконаної за допомогою Software Updater / Update Manager? Чи використовуєте ви HTTP-проксі? І чи можете ви зробити так, щоб це повторилося, чи це сталося лише один раз? Якщо це ізольована аномалія, мені цікаво, чи можливо проблема пов’язана з тимчасовою неправильною конфігурацією сервера. Яке дзеркало ви використовуєте? Маючи більше інформації, можливо, я міг би покращити свою відповідь. (Btw, це призначено як окрема відповідь, чи слід перетворити його на коментар?)
Eliah Kagan

3

За словами багатьох людей до мене, це оновлення вашого локального сховища (список пакетів).

У вас можуть виникнути проблеми, якщо ви спробуєте встановити

apt-get install foobar

і foobar або залежність не мають останньої версії в сховищі. Це може бути особливо проблематичним, якщо встановити .deb файл вручну або ppa від сторонньої сторони.

В основному це переконує, що ваш список відповідає головному списку.


2

Розглянемо приклад встановлення медіаплеєра VLC на Ubuntu:

sudo apt-get update

Він перевірить сховища на наявність оновлень.

Тоді як

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

встановить медіаплеєр VLC із сховищ, які ми шукали.

Якщо ви ввійшли як кореневий користувач (адміністратор), вам не доведеться користуватися sudo, оскільки у вас вже є привілеї супер користувача.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.