Запрос и обновление пакетов с помощью YUM в Linux

Red Hat Enterprise LinuxBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы освоите основные навыки управления пакетами программного обеспечения в системах Linux на базе RHEL с помощью менеджера пакетов YUM. Вы начнете с изучения сведений и зависимостей установленных пакетов с помощью команд yum list и yum deplist. Вы также изучите настроенные в системе репозитории программного обеспечения с помощью yum repolist, чтобы понять, откуда поступает ПО и что доступно для установки.

Освоив эти базовые навыки, вы перейдете к вопросам обслуживания и обновления системы. Вы узнаете, как использовать yum check-update для выявления пакетов, для которых доступны новые версии. В завершение вы попрактикуетесь в применении обновлений, изучив разницу между обновлением конкретного пакета и выполнением комплексного обновления всей системы для поддержания безопасности и актуальности вашего окружения.

Проверка установленного пакета с помощью 'yum list' и 'yum deplist'

На этом этапе вы научитесь проверять установленные пакеты с помощью yum, стандартного менеджера пакетов для CentOS и других дистрибутивов Linux на базе RHEL. Мы начнем с изучения пакета bash, который предоставляет среду оболочки, которую вы, скорее всего, используете. Эти команды помогут вам понять, что установлено в вашей системе и от каких других компонентов зависит работа пакета.

Сначала воспользуемся командой yum list для проверки статуса конкретного пакета. Эта команда позволяет узнать, установлен ли пакет и какая версия находится в вашей системе.

Чтобы проверка лабораторной работы была надежной, сохраните вывод команды в /home/labex/project во время его анализа. Чтобы проверить сведения о пакете bash, выполните следующую команду в терминале:

sudo yum list bash | tee /home/labex/project/bash-package.txt

Вы увидите вывод, похожий на приведенный ниже, подтверждающий, что bash установлен. Символ @ в столбце репозитория (например, @anaconda или @System) указывает на установленный пакет.

Installed Packages
bash.x86_64    <version>    @anaconda

Далее давайте разберемся с понятием зависимостей. Большинство пакетов программного обеспечения не являются автономными; для корректной работы они полагаются на другие пакеты, такие как библиотеки или инструменты. Эти необходимые пакеты называются зависимостями. Команда yum deplist позволяет увидеть полный список зависимостей для заданного пакета.

Чтобы увидеть все пакеты, от которых зависит bash, выполните эту команду:

sudo yum deplist bash | tee /home/labex/project/bash-deplist.txt

В выводе будет перечислен каждый пакет зависимости и пакет, который его предоставляет. Это критически важно для понимания того, как yum разрешает и управляет установкой программного обеспечения.

package: bash.x86_64 <version>
  dependency: /bin/sh
   provider: bash.x86_64 <version>
  dependency: chkconfig
   provider: chkconfig.x86_64 <version>
  dependency: coreutils
   provider: coreutils.x86_64 <version>
  dependency: libc.so.6(GLIBC_2.15)(64bit)
   provider: glibc.x86_64 <version>
... (output truncated) ...

Используя yum list и yum deplist, вы сможете получить четкое представление о пакетах, установленных в вашей системе, и их взаимосвязях.

Изучение репозиториев и доступных пакетов с помощью 'yum repolist'

На этом этапе вы научитесь изучать источники программного обеспечения, называемые репозиториями, которые yum использует для поиска и установки пакетов. Вы также узнаете, как искать новые пакеты, доступные для установки в вашей системе.

Репозиторий пакетов — это централизованное хранилище, где содержатся пакеты программного обеспечения. Когда вы просите yum установить пакет, он обращается к настроенным репозиториям, загружает необходимые файлы и устанавливает их в вашу систему.

Чтобы увидеть список репозиториев, которые в данный момент включены в вашей системе, можно использовать команду yum repolist. Это полезно для проверки того, какие источники ПО активны.

Выполните следующую команду в терминале и сохраните вывод для последующего просмотра:

sudo yum repolist | tee /home/labex/project/yum-repolist.txt

В выводе отобразится список идентификаторов репозиториев, их названия и количество содержащихся в них пакетов. Это будет выглядеть примерно так:

repo id                                                                                                                          repo name
rhui-rhel-9-for-x86_64-appstream-rhui-rpms                                                                                       Red Hat Enterprise Linux 9 for x86_64 - AppStream from RHUI (RPMs)
rhui-rhel-9-for-x86_64-baseos-rhui-rpms                                                                                          Red Hat Enterprise Linux 9 for x86_64 - BaseOS from RHUI (RPMs)

Теперь, когда вы знаете, где yum ищет пакеты, давайте выясним, какие пакеты доступны для установки. Команда yum list available показывает все пакеты из ваших включенных репозиториев, которые еще не установлены в системе.

Запуск yum list available сам по себе выдаст очень длинный список. Практичнее искать что-то конкретное. Давайте поищем доступные пакеты, связанные с ядром Linux. Вы можете использовать подстановочный знак (*) для сопоставления нескольких имен пакетов.

Выполните эту команду, чтобы вывести список всех доступных пакетов, начинающихся с kernel:

sudo yum list available 'kernel*' | tee /home/labex/project/yum-kernel-available.txt

Одинарные кавычки вокруг kernel* важны, чтобы оболочка не пыталась раскрыть подстановочный знак самостоятельно. В выводе будет показан список доступных пакетов, связанных с ядром, их версии и репозиторий, из которого они поступают.

Available Packages
kernel-devel.x86_64      <version>      updates
kernel-doc.noarch        <version>      updates
kernel-headers.x86_64    <version>      updates
... (output truncated) ...

Эти команды необходимы для управления программным обеспечением вашей системы, позволяя видеть источники ПО и находить новые инструменты для установки.

Проверка доступных обновлений с помощью 'yum check-update'

На этом этапе вы научитесь проверять наличие доступных обновлений для пакетов, установленных в вашей системе. Поддержание системы в актуальном состоянии — критически важная задача для безопасности и стабильности, так как обновления часто содержат исправления уязвимостей, багов и новые функции.

Команда yum check-update предоставляет безопасный способ увидеть, для каких из ваших установленных пакетов в репозиториях доступны более новые версии. Важно отметить, что эта команда только перечисляет доступные обновления; она не загружает и не устанавливает их. Это позволяет вам просмотреть потенциальные изменения перед их применением.

Чтобы проверить наличие всех доступных обновлений в вашей системе, выполните следующую команду в терминале. Часть || true предотвращает остановку оболочки, когда yum check-update возвращает статус 100, который yum использует для сообщения о наличии обновлений.

sudo yum check-update | tee /home/labex/project/yum-check-update.txt || true

Теперь yum подключится ко всем включенным репозиториям, обновит локальный кэш информации о пакетах и сравнит версии установленных пакетов с последними доступными версиями.

Если обновления доступны, вы увидите их список, похожий на следующий пример. Каждая строка показывает имя пакета, новую версию и репозиторий, из которого он будет обновлен.

bind-libs.x86_64                 <version>      updates
bind-license.noarch              <version>      updates
curl.x86_64                      <version>      updates
glibc.x86_64                     <version>      updates
glibc-common.x86_64              <version>      updates
... (output truncated) ...

Если ваша система уже полностью обновлена, команда завершится, не выведя список пакетов. Эта команда является важной частью регулярного обслуживания системы, давая вам четкое представление о состоянии системы перед тем, как вы перейдете к процессу обновления на следующих этапах.

Применение обновления отдельного пакета с помощью 'yum update '

На этом этапе вы примените обновление конкретного пакета. На предыдущем этапе вы использовали yum check-update, чтобы увидеть список всех пакетов с доступными обновлениями. Хотя часто обновляют всю систему целиком, бывают ситуации, когда нужно обновить только один пакет. Это дает вам больше контроля над изменениями в системе.

Давайте выберем пакет из списка, который вы видели ранее, для обновления. В качестве примера мы возьмем curl, распространенный инструмент для передачи данных. Если curl не было в вашем списке доступных обновлений, вы можете выбрать другой пакет из этого списка.

Перед обновлением пакета нам нужно понизить версию пакета curl до той, для которой доступно обновление.

sudo yum downgrade -y curl

Чтобы обновить только пакет curl, выполните следующую команду:

sudo yum update curl | tee /home/labex/project/curl-update.txt

Теперь yum разрешит зависимости для curl, определит, что нужно обновить, и представит вам сводку транзакции. Эта сводка показывает, какие пакеты будут обновлены, и общий размер загрузки.

Resolving Dependencies
--> Running transaction check
---> Package curl.x86_64 0:<old_version> will be updated
---> Package curl.x86_64 0:<new_version> will be an update
--> Processing Dependency: libcurl = <new_version> for package: curl-<new_version>.x86_64
--> Running transaction check
---> Package libcurl.x86_64 0:<old_version> will be updated
---> Package libcurl.x86_64 0:<new_version> will be an update
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package      Arch         Version              Repository                 Size
================================================================================
Updating:
 curl         x86_64       <new_version>        updates                    <size>
Updating for dependencies:
 libcurl      x86_64       <new_version>        updates                    <size>

Transaction Summary
================================================================================
Upgrade  1 Package (+1 Dependent package)

Total download size: <total_size>
Is this ok [y/d/N]:

Просмотрите изменения. Если вы готовы продолжить, введите y и нажмите Enter. yum загрузит и установит обновления.

После завершения процесса вы увидите сообщение "Complete!", подтверждающее успешное обновление.

...
Running transaction
  Updating   : libcurl-<new_version>.x86_64                                 1/4
  Updating   : curl-<new_version>.x86_64                                    2/4
  Cleanup    : curl-<old_version>.x86_64                                    3/4
  Cleanup    : libcurl-<old_version>.x86_64                                 4/4
  Verifying  : curl-<new_version>.x86_64                                    1/4
  ...

Updated:
  curl.x86_64 <new_version>

Dependency Updated:
  libcurl.x86_64 <new_version>

Complete!

Теперь вы успешно обновили отдельный пакет и его зависимости. Такой точечный подход полезен для применения конкретных исправлений безопасности или обновлений функций без выполнения полного обновления системы.

Выполнение полного обновления системы с помощью 'yum update'

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

Команда yum update, запущенная без указания имени пакета, проверит все установленные пакеты на соответствие версиям, доступным в ваших включенных репозиториях, и обновит каждый пакет, для которого найдена более новая версия.

Внимание: Этот процесс может потребовать загрузки большого объема данных и занять значительное время, в зависимости от количества доступных обновлений и скорости вашего интернет-соединения.

Чтобы начать полное обновление системы, выполните следующую команду в терминале:

sudo yum update | tee /home/labex/project/full-system-update.txt

Как и при обновлении отдельного пакета, yum сначала разрешит все зависимости, а затем представит вам сводку транзакции. Этот список, скорее всего, будет намного длиннее, чем раньше, так как он включает каждый пакет, который необходимо обновить.

Resolving Dependencies
--> Running transaction check
... (many packages listed) ...

Dependencies Resolved

================================================================================
 Package               Arch         Version              Repository        Size
================================================================================
Updating:
 bind-libs             x86_64       <version>            updates           <size>
 bind-license          noarch       <version>            updates           <size>
 glibc                 x86_64       <version>            updates           <size>
 glibc-common          x86_64       <version>            updates           <size>
 ... (many more packages) ...

Transaction Summary
================================================================================
Upgrade  <X> Packages

Total download size: <total_size>
Is this ok [y/d/N]:

Внимательно просмотрите список пакетов, подлежащих обновлению. Когда будете готовы продолжить, введите n, чтобы пропустить обновление, так как полное обновление всех пакетов в этой учебной среде займет слишком много времени.

Теперь вы просмотрели транзакцию полного обновления системы, не применяя её. В реальном окне обслуживания вы бы повторно запустили sudo yum update и ввели y, когда будете готовы установить все доступные обновления.

Резюме

В этой лабораторной работе вы изучили основы управления пакетами программного обеспечения в системе Linux на базе RHEL с помощью менеджера пакетов YUM. Вы начали с проверки установленного пакета с помощью yum list, чтобы узнать его статус и версию, а затем использовали yum deplist для изучения его зависимостей. Вы также изучили настроенные источники программного обеспечения, перечислив все активные репозитории с помощью команды yum repolist.

Затем лабораторная работа провела вас через процесс обновления пакетов. Вы узнали, как проверять наличие доступных обновлений во всей системе без их установки с помощью yum check-update. Вы попрактиковались в применении конкретного обновления к отдельному пакету с помощью yum update <package> и завершили работу, просмотрев транзакцию полного обновления системы с помощью команды yum update, чтобы вы могли понимать, что произойдет при полном обновлении системы, прежде чем подтверждать его.