
Привет:) Как обновления ПО различаются в зависимости от способа загрузки ПО с помощью Ubuntu? Например, когда я загружаю его вручную с помощью менеджера пакетов apt или когда я добавляю какой-либо репозиторий в /etc/apt/sources.list. Также есть возможность загрузить ПО с помощью flatpacks или snaps.
Что на самом деле происходит, когда я вызываю sudo apt update? Какие репозитории проверяются?
решение1
Существует множество способов установки пакетов программного обеспечения в Ubuntu, некоторые из них вы не упомянули. Чтобы дать полный ответ, я хочу описать их все:
Установка через менеджер пакетов, репозитории по умолчанию
Менеджер пакетов (неважно apt
, apt-get
, aptitude
или что-то еще) имеет список мест для загрузки программного обеспечения. Это программное обеспечение, как правило, заслуживает доверия, известно, что оно работает и в основном хорошо поддерживается. Такое место называется «репозиторием». URL-адреса репозиториев хранятся в /etc/apt/sources.list
. При запуске apt update
менеджер пакетов запрашивает репозиторий, чтобы узнать, какие пакеты программного обеспечения доступны. Он сохраняет информацию в локальном кэше.
При установке пакета с помощью apt install
менеджер пакетов проверяет свой локальный кэш, чтобы определить, откуда загрузить пакет. Затем он загружает пакет. Пакет предоставляется в виде архива в формате DEB. Архив распаковывается в вашу локальную файловую систему. Кроме того, пакет может содержать некоторый код, который будет автоматически выполнен один раз для настройки нового установленного программного обеспечения.
При обновлении ПО с помощью apt upgrade
или apt dist-upgrade
загружаются новые версии существующих пакетов. Текущая версия удаляется из системы.Менеджер пакетов знает, какие файлы следует удалить, поскольку он знает, какой файл был предоставлен каким пакетом.Затем новая версия устанавливается, как описано выше.
Установка с помощью менеджера пакетов, пользовательские репозитории
Также можно расширить репозитории по умолчанию, добавив URL-адреса в /etc/apt/sources.list
, хотя в эти дни /etc/apt/sources.list.d/
следует использовать. Менеджер пакетов будет считать их такими же, как репозитории по умолчанию. Установка, удаление и обновление работают точно так же. Пользователь должен быть осторожен при добавлении пользовательских репозиториев — они должны быть созданы для системы.
Заметка на полях: исходя из личного опыта, я советую удалить все пакеты, установленные из нестандартных репозиториев, перед выполнением обновления с одного выпуска Ubuntu на следующий.
Установка с помощью менеджера пакетов, ручная загрузка
Вы также можете загрузить файлы DEB вручную. Вы можете установить пакет через dpkg -i
. Менеджер пакетов никогда не обновит этот пакет, так как он не знает, откуда он взялся.
Установка с помощью защелки
snapcraft — это альтернатива менеджеру пакетов, ориентированная на совместимость не только с Ubuntu, производной от Debian, но и со всеми дистрибутивами Linux. Пакет snap не распаковывается в систему. Более того, он монтируется (его содержимое становится видимым напрямую), а программное обеспечение выполняется в контролируемой среде внутри вашей системы (подумайте о песочнице и виртуальных машинах). При удалении snap пакет размонтируется и удаляется. Обновления происходят аналогично.
Полностью ручная установка
Вы также можете загрузить кучу файлов и разместить их в соответствующих местах на жестком диске. Пользовательское программное обеспечение часто помещается в /opt. Двоичные файлы (или ссылки на них) устанавливаются в каталог в $PATH
. Таким образом, к программному обеспечению можно легко получить доступ. Менеджер пакетов ничего не знает об этом программном обеспечении. Обновления также необходимо устанавливать вручную (иногда программное обеспечение имеет функцию самообновления, жестко). Пользовательское программное обеспечение также можно устанавливать в такие места, как /usr/local
или даже /usr
. Последнее не следует делать, если вы действительно не знаете, что делаете. Пользовательское программное обеспечение может ужасно конфликтовать с программным обеспечением, управляемым менеджером пакетов.
Похожие вопросы:
Обновления программного обеспечения Ubuntu с помощью apt-get
Имеет ли значение, обновляю ли я пакеты через Apper или через Центр программного обеспечения в Debian?
решение2
Я бы рекомендовал устанавливать программное обеспечение только из источников, предоставленных вашим дистрибьютором. Добавляйте репозитории или устанавливайте пакеты или другое программное обеспечение вручную только в том случае, если вы точно знаете, что делаете. Что касается вопроса, что делает sudo apt update
: оно извлекает последние доступные пакеты из всех настроенных вами репозиториев. То же самое касается snaps или flatpacks. После установки из центрального репозитория вы будете получать обновления аналогично apt update
.
решение3
apt update
обновляет список доступных пакетов из репозиториев, которые находятся в /etc/apt/sources.list
и в любых файлах, которые находятся в /etc/apt/sources.list.d/
. Важно запустить это в первую очередь, чтобы apt
знать о новых версиях пакетов.
apt upgrade
фактически обновляет установленные пакеты, для которых доступны более новые версии, при условии, что они были установлены через apt
и что репозитории, из которых они получены, находятся в указанных выше расположениях.
Пакеты из snap
и flatpak
не будут обновлены, apt
так как репозитории отличаются и не будут находиться в apt
кэше/базе данных .
решение4
apt update
проверяет все ваши источники программного обеспечения, так что это репозитории дистрибутива и любой добавленный вами PPA. AFAIK это не включает flatpak (используйте flatpak update
для этого), но может включать snap, если дистрибутив устанавливает его таким образом. То, что вы установили вручную (скачанный .deb или другие средства установки), конечно, не проверяется таким образом.
Но имейте в виду, что у Ubuntu своя политика обновлений: часть дистрибутивов обновляется до конца жизненного цикла дистрибутива (репозиторий «main»), другие получают мало обновлений или не получают их вообще (репозиторий «universe» и другие) (и большинство пакетов, устанавливаемых с помощью snap, не находятся в «main»).