Что делает "sudo apt-get update"?

Мне интересно, что sudo apt-get update делает?

Что он обновляет?

В двух словах, 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" и почему он обновляется чаще, чем "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 операция, вам будет предложено ввести пароль только один раз (или вообще не вводить).

Поиск в Google может дать вам определение практически для любой команды терминала, как и --help в терминале. Например,

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 updatesudo apt-get install <package>

убедитесь, что apt-get знает, как установить самую последнюю версию пакета.

Еще одним полезным источником информации является help.ubuntu.com сайт. Например, если вы искали на этом сайте apt-get вы бы нашли AptGet/Как это сделать как один из результатов.

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

В двух словах: Это высоко рекомендуется запускать sudo apt-get update перед установкой, но это может быть пропущено, если у вас действительно мало времени если вы не изменили репозитории или PPA с момента последнего apt-get update.

Он обновляет список доступного программного обеспечения на вашем компьютере.

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

Обратите внимание, что update отличается от upgrade. Update, как упоминалось выше, будет извлекать доступное программное обеспечение и обновлять списки, пока upgrade установит новые версии программного обеспечения, установленного на вашем компьютере (актуальные обновления программного обеспечения).

Чтобы фактически обновить ваше программное обеспечение (не "обновлять" списки), вы выполняете команду

sudo apt-get upgrade

который обычно выполняется после "обновления".

Тебе нужно бежать apt-get update один раз перед установкой новых пакетов, так как при этом обновляется информация о локальном репозитории.

Если вы собираетесь установить несколько пакетов вскоре друг за другом, вам не нужно запускать apt-get update перед каждой установкой; только один раз перед первой установкой.

Кроме того, вы можете установить несколько пакетов одновременно, если введетеsudo apt-get install package1 package2..., но тебе все равно нужно бежать apt-get update перед установкой нескольких пакетов.

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

  1. какие пакеты доступны

  2. какие из них доступны

  3. где доступные пакеты должны быть извлечены из

Бегущий sudo apt-get update (или sudo aptitude update) обновляет это в вашей локальной системе. Это шаг, который фактически извлекает информацию о том, какие пакеты могут быть установлены, включая доступные обновления для установленных в данный момент пакетов пакетов, из интернет-источников.

При установке пакетов с графическим интерфейсом (диспетчер обновлений, Центр программного обеспечения или диспетчер пакетов Synaptic) работа sudo apt-get update выполняется автоматически. Когда вы устанавливаете пакеты из командной строки, это не так, и вы всегда должны делать это самостоятельно если только вы не сделали этого совсем недавно.

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

Пожалуйста, обратите внимание, что если вы собираетесь выполнять несколько операций управления пакетами примерно в одно и то же время, вам не нужно запускать sudo apt-get update перед каждым из них. Только в том случае, если информация не обновлялась в течение некоторого времени, вы должны обязательно запустить ее.

Как упоминал выше Элайя Каган, вы бы ожидать что приложение с графическим интерфейсом будет работать apt-get update до apt-get install / apt-get upgrade, но я только что обнаружил интересную ошибку 404 на относительно новой виртуальной машине с защитой от атак, которая на минуту поставила меня в тупик.

Из командной строки я запустил apt-get update, а затем снова попробовал команду System Tools/Software-Update, и на этот раз она сработала без ошибок 404.

Так что, я думаю, вы не всегда можете предполагать, что apt-get update запускается из приложений с графическим интерфейсом...

Как говорили многие люди до меня, это обновляет ваш локальный репозиторий (список пакетов).

Вы можете столкнуться с проблемами, если попытаетесь установить

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 из репозиториев, которые мы искали.

Если вы вошли в систему как пользователь root (администратор), вам не нужно использовать sudo, потому что у вас уже есть привилегии суперпользователя.