Відповіді:
У двох словах, 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
операції, вам буде запропоновано ввести пароль лише один раз (або зовсім не).
apt-get update
потрібен певний час, Інтернет тут все ще примітивний.
Пошук 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 як один з результатів.
&&
між ними якsudo apt-get update&&sudo apt-get install foo bar baz
&&
означає, що друга команда буде виконуватися лише в тому випадку, коли перша успішна. Якщо вас не хвилює успіх першої команди, скористайтеся ;
натомість.
Запуск sudo apt-get update
просто гарантує, що список ваших пакетів із усіх сховищ та PPA є актуальним. Якщо ви не запустите цю команду, ви можете отримати старіші версії різних пакунків, які ви встановлюєте, або, що ще гірше, проблеми залежності. Якщо ви тільки що додали PPA і не оновили, нічого з PPA не буде працювати взагалі, оскільки у вас немає списку пакетів з цього PPA або сховища.
Коротше кажучи: настійно рекомендується запустити sudo apt-get update
перед встановленням, але він може бути пропущений, якщо ви дійсно натиснуті на час, якщо ви не змінили сховища або PPA з останнього apt-get update
.
Він оновлює доступний список програмного забезпечення на вашому комп’ютері.
На вашому комп’ютері є список (наприклад, каталог), який містить усе доступне програмне забезпечення, яке доступні на серверах Ubuntu. Але доступне програмне забезпечення та версії можуть змінитися, тому "оновлення" потрапить на сервер і побачить, яке програмне забезпечення доступне для оновлення його локальних списків (або каталогів).
Зауважте, що update
це відрізняється від upgrade
. Оновлення, як було сказано вище, отримає доступне програмне забезпечення та оновить списки, в той час як upgrade
буде встановлено нові версії програмного забезпечення, встановлені на вашому комп'ютері (фактичні оновлення програмного забезпечення).
Щоб фактично оновити програмне забезпечення (не "оновлювати" списки), ви виконуєте команду
sudo apt-get upgrade
яка зазвичай виконується після "оновлення".
sudo apt-get install
чого тоді? Встановлення окремих пакетів замість загального оновлення?
Потрібно запустити apt-get update
один раз перед встановленням нових пакетів, оскільки це оновлює інформацію локального сховища. Якщо ви збираєтесь встановлювати кілька пакетів незабаром один за одним, запускати не потрібно apt-get update
. Крім того, ви можете встановити кілька пакетів одночасно, якщо ви введете текст
sudo apt-get install package1 package2...
Коли ви встановлюєте пакети з командного рядка за допомогою sudo apt-get install ...
(або sudo aptitude install ...
) або під час їх оновлення з командного рядка (з upgrade
або dist-upgrade
замість нього install
), така інформація отримується з конфігурації вашої локальної системи, а не з Інтернету:
які пакунки доступні
які їх версії доступні
звідки можна отримати доступні пакети
Запуск 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
перед кожною з них. Лише якщо інформація деякий час не оновлювалася, ви повинні переконатися в її запуску.
Як згадував Елія Каган вище, ви очікували, що програма 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, це призначено як окрема відповідь, чи слід перетворити його на коментар?)
За словами багатьох людей до мене, це оновлення вашого локального сховища (список пакетів).
У вас можуть виникнути проблеми, якщо ви спробуєте встановити
apt-get install foobar
і foobar або залежність не мають останньої версії в сховищі. Це може бути особливо проблематичним, якщо встановити .deb файл вручну або ppa від сторонньої сторони.
В основному це переконує, що ваш список відповідає головному списку.
Розглянемо приклад встановлення медіаплеєра VLC на Ubuntu:
sudo apt-get update
Він перевірить сховища на наявність оновлень.
Тоді як
sudo apt-get install vlc vlc-plugin-pulse mozilla-plugin-vlc
встановить медіаплеєр VLC із сховищ, які ми шукали.
Якщо ви ввійшли як кореневий користувач (адміністратор), вам не доведеться користуватися sudo
, оскільки у вас вже є привілеї супер користувача.
sudo apt-get update
команду, коли ми встановлюємо пакети? У чому мінус, якщо ми цього не зробимо?