Вопрос Что делает «sudo apt-get update»?


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

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


450
2017-11-27 00:07


происхождения




ответы:


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

  • apt-get update загружает списки пакетов из репозиториев и «обновляет» их, чтобы получить информацию о новейших версиях пакетов и их зависимостях. Он будет делать это для всех репозиториев и PPA. Из http://linux.die.net/man/8/apt-get:

    Используется для повторной синхронизации файлов индекса пакетов из их источников. Индексы доступных пакетов выбираются из местоположений (ов), указанных в /etc/apt/sources.list(5). Обновление должно всегда выполняться перед обновлением или dist-upgrade.

  • 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 вам будет предложено ввести пароль только один раз (или вообще нет).


484
2017-11-27 00:17



Всегда ли нужно запускать sudo apt-get update когда мы устанавливаем пакеты? Какой недостаток, если мы этого не сделаем? - JohnnyQ
@JohnnyQ Если вы не запустите эту команду, вы можете установить устаревший пакет. - hexafraction
ах звучит, как будто это просто конвенция. Поэтому я предполагаю, что это действительно не так необходимо, особенно если вы просто используете базовые пакеты с базовыми командами, которые обычно не обновляются. Проблема в моей ситуации заключается в том, что apt-get updateзанимает некоторое время, интернет здесь все еще примитивен. - JohnnyQ
@JohnnyQ Для некоторых пакетов очень важно, чтобы списки ваших пакетов были актуальными. Примеры таких пакетов включают критически важное для безопасности программное обеспечение. - hexafraction
@JohnnyQ, если ваше обновление apt-get медленное, то ваш apt-get dist-upgrade также будет медленным, поэтому на самом деле это не аргумент, чтобы не сначала обновлять apt-get. Кстати, вы можете ускорить обновление apt-get, заглянув в папку /etc/apt/sources.d/, чтобы узнать, добавлены ли какие-либо пользовательские репозитории, и один из них может быть неактивным, что замедлит весь процесс обновления. - Mladen B.


Поиск 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 update
sudo apt-get install <package>

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

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


42
2017-11-27 00:16



Алекс, могу ли я в основном использовать команду, как вы ее выразили: «apt-get update apt-get install <package>» В принципе, 2 вещи можно выполнить, просто набрав две команды вместе так? - Elysium
@Elysium Да, если у вас есть && между ними как sudo apt-get update&&sudo apt-get install foo bar baz - hexafraction
С помощью && означает, что вторая команда будет выполняться только в том случае, если первая успешно выполнена. Если вас не волнует успех первой команды, используйте ; вместо. - Flimm
Поиск Google привел меня к этому вопросу / ответу. Просто FYI;) - teewuane


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

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


18
2018-06-05 23:21





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


12
2018-06-05 23:23



Хороший трюк для этого! - Emerson Hsieh


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

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

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

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

sudo apt-get upgrade

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


10
2017-11-27 00:21



Что sudo apt-get install тогда? Установка определенных пакетов вместо общего обновления? - Peter Mortensen


Когда вы устанавливаете пакеты из командной строки с помощью 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 перед каждым. Только если информация не была обновлена ​​какое-то время, вы должны ее запустить.


4
2018-06-05 23:59





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

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

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


4
2018-04-02 02:58



Интересно ... Может возникнуть какая-то необычная ситуация в сети между вами и сервером, которая лучше обрабатывается при запуске apt-get чем путем автоматической проверки, выполняемой при запуске Software Updater / Update Manager? Используете ли вы HTTP-прокси? И сможешь ли ты снова повторить это, или это случилось только один раз? Если это изолированная аномалия, мне интересно, может быть, проблема связана с неправильной конфигурацией временного сервера. Какое зеркало вы используете? С дополнительной информацией, возможно, я мог бы улучшить свой ответ. (Btw, это предназначено в качестве отдельного ответа или оно должно быть преобразовано в комментарий?) - Eliah Kagan


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

Если вы попытаетесь установить

apt-get install foobar

и foobar или зависимость не имеют своей последней версии в репозитории. Это может быть особенно проблематично при установке файла .deb вручную или ppa от стороннего участника.

В основном это гарантирует ваш список соответствует мастер список.


2
2018-06-05 23:38





Рассмотрим пример установки Медиаплеер VLC на Ubuntu:

sudo apt-get update

Он проверит репозитории доступных обновлений.

В то время как

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

будет устанавливать медиаплеер VLC из репозиториев, которые мы искали.

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


2
2017-11-27 07:24