Меню Рубрики

Установка yum для debian

Предложение от 8host.com

Основы управления пакетами: apt, yum, dnf, pkg

Самые современные Unix-подобные операционные системы предлагают централизованные механизмы для поиска и установки пакетов. Программное обеспечение, как правило, распространяется в виде пакетов, которые хранятся в репозиториях. Пакеты содержат основные компоненты операционной системы, а также общие библиотеки, приложения, услуги и документацию.

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

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

Управление пакетами является жизненно важным навыком для системных администраторов и разработчиков.

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

Системы управления пакетами: краткий обзор

Большинство систем управления пакетами строятся на наборах файлов пакетов. Файл пакета – это, как правило, архив, который содержит скомпилированные бинарные файлы, скрипты установки и другие ресурсы, составляющие программу. Также пакеты содержат ценные метаданные, в том числе их зависимости (список пакетов, необходимых для запуска программы).

Операционная система Формат
Debian .deb
Ubuntu .deb
CentOS .rpm
Fedora .rpm
FreeBSD порты, .txz

CentOS, Fedora и другие системы Red Hat используют файлы RPM. В CentOS для взаимодействия с пакетами и репозиториями используется менеджер yum. В последних версиях Fedora yum был заменён модернизированным менеджером dnf.В системе Debian и основанных на ней системах (Ubuntu, Linux Mint, Raspbian) используется формат .deb. Пакетный менеджер APT (Advanced Packaging Tool) предоставляет команды, используемые для наиболее распространенных операций: поиска репозиториев, управления обновлениями, установки набора пакетов и их зависимостей. Команды APT работают как фронтэнд утилиты нижнего уровня dpkg, которая обрабатывает установку индивидуальных пакетов .deb на локальную систему; при необходимости эту утилиту можно вызывать явно.

Системой бинарных файлов FreeBSD управляет команда pkg. Кроме того, FreeBSD предоставляет коллекцию портов, локальную структуру каталогов и инструментов, которые позволяют извлекать, компилировать и устанавливать пакеты из исходного кода с помощью make-файлов. Обычно удобнее пользоваться менеджером pkg, но иногда предварительно скомпилированные пакеты недоступны.

Обновление списка пакетов

Большинство систем содержит локальную базу данных пакетов, доступных в удаленных репозиториях. Перед установкой или обновлением пакета рекомендуется обновить эту базу данных. Частичным исключением из этого шаблона являются yum и DNF, которые проверяют наличие обновлений пакетов перед выполнением некоторых операций.

Операционная система Команда
Debian / Ubuntu sudo apt-get update
CentOS yum check-update
Fedora dnf check-update
FreeBSD Packages sudo pkg update
FreeBSD Ports sudo portsnap fetch update

Обновление установленных пакетов

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

В системе FreeBSD обновление установленных портов может потребовать ручной настройки. Прежде чем обновлять portmaster, рекомендуется ознакомиться с /usr/ports/UPDATING.

Система Команда
Debian / Ubuntu sudo apt-get upgrade
sudo apt-get dist-upgrade
CentOS sudo yum update
Fedora sudo dnf upgrade
FreeBSD Packages sudo pkg upgrade
FreeBSD Ports less /usr/ports/UPDATING
cd /usr/ports/ports-mgmt/portmaster && sudo make install && sudo portmaster -a

Поиск пакетов

Большинство дистрибутивов предоставляет графический или управляемый в режиме меню интерфейс для наборов пакетов. Он позволяет просматривать категории и искать новое программное обеспечение. Однако чаще всего самым быстрым и самым эффективным способом поиска пакетов является поиск с помощью инструментов командной строки.

Система Команда
Debian / Ubuntu apt-cache search search_string
CentOS yum search search_string
yum search all search_string
Fedora dnf search search_string
dnf search all search_string
FreeBSD (пакеты) pkg search search_string
pkg search -f search_string
pkg search -D search_string
FreeBSD (порты) cd /usr/ports && make search name=package
cd /usr/ports && make search key=search_string

Информация о пакетах

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

Система Команда
Debian / Ubuntu apt-cache show package
dpkg -s package
CentOS yum info package
yum deplist package
Fedora dnf info package
dnf repoquery —requires package
FreeBSD (пакеты) pkg info package
FreeBSD (порты) cd /usr/ports/category/port && cat pkg-descr

Установка пакетов из репозиториев

Зная имя необходимого пакета, его можно очень быстро установить при помощи одной команды. Также в одной команде можно перечислить все пакеты, которые нужно установить.

Система Команда
Debian / Ubuntu sudo apt-get install package
sudo apt-get install package1 package2 …
sudo apt-get install -y package
CentOS sudo yum install package
sudo yum install package1 package2 …
sudo yum install -y package
Fedora sudo dnf install package
sudo dnf install package1 package2 …
sudo dnf install -y package
FreeBSD (пакеты) sudo pkg install package
sudo pkg install package1 package2 …
FreeBSD (порты) cd /usr/ports/category/port && sudo make install

Установка пакета из локальной файловой системы

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

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

В Debian-подобных системах индивидуальными файлами пакетов управляет dpkg. Если пакет имеет зависимости, которых не установлены в системе, gdebi может загрузить их из официального репозитория.

В системах CentOS и Fedora для установки отдельных файлов и обработки необходимых зависимостей используется yum и dnf.

Система Команда
Debian / Ubuntu sudo dpkg -i package.deb
sudo apt-get install -y gdebi&& sudo gdebi package.deb
CentOS sudo yum install package.rpm
Fedora sudo dnf install package.rpm
FreeBSD (пакеты) sudo pkg add package.txz
sudo pkg add -f package.txz

Удаление пакетов

Менеджер пакетов знает, какие именно файлы предоставляет каждый конкретный пакет, потому с его помощью можно легко удалить все ненужные программы.

Система Команда
Debian / Ubuntu sudo apt-get remove package
sudo apt-get autoremove
CentOS sudo yum remove package
Fedora sudo dnf erase package
FreeBSD (пакеты) sudo pkg delete package
sudo pkg autoremove
FreeBSD (порты) sudo pkg delete package
cd /usr/ports/path_to_port && make deinstall

Получение справки

Кроме веб-документации системы Unix предоставляют удобный справочник, в котором можно найти информацию о большинстве команд оболочки. Чтобы открыть мануал, введите:

В справочнике можно перемещаться при помощи кнопок со стрелками. Нажмите /, чтобы искать по тексту страницы, и q, чтобы выйти.

Система Команда Примечания
Debian / Ubuntu man apt-get Обновление локальной базы данных пакетов и работа с пакетами.
man apt-cache Запрос локальной базы данных пакетов.
man dpkg Управление индивидуальными файлами пакетов и запрос установленных пакетов.
CentOS man yum
Fedora man dnf
FreeBSD пакеты man pkg Управление предварительно скомпилированными файлами пакетов.
FreeBSD порты man ports Управление коллекцией портов.

Дополнительные ссылки

Данное руководство знакомит с основами управления пакетами в Unix-подобных системах. Более подробную информацию по этой довольно сложной теме можно найти по следующим ссылкам:

источник

Yum, шпаргалка

Шпаргалка по работе с пакетным менеджером Yum (Yellowdog Updater, Modified), который используется в популярных Linux дистрибутивах: RedHat, CentOS, Scientific Linux (и других). В целях экономии места вывод команд не представлен.

Оглавление

список названий пакетов из репозиторий

список всех доступных пакетов

список всех установленных пакетов

установлен ли указанный пакет

список установленных и доступных пакетов

список пакетов, относящихся к ядру

отображение информации о пакете

список зависимостей и необходимых пакетов

найти пакет, который содержит файл

поиск пакета по имени и описанию

получить информацию о доступных обновлениях безопасности

вывести описание и содержимое группы

установка группы пакетов «Basic Web Server»

Проверка на доступные обновления

список подключенных репозиториев

информация об определенном репозитории

информация о пакетах в указанном репозитории

установить все пакеты из репозитория

удалить пакеты установленные из репозитория

проверить локальную базу rpm (поддерживаются параметры dependencies, duplicates, obsoletes, provides)

просмотр yum истории (вывод списка транзакций)

просмотр информации определенной транзакции (установленные пакеты, установленные зависимости)

дополнительно можно просмотреть лог

удалить пакеты сохраненные в кэше

удалить все пакеты и метаданные

обновить до определенной версии

установить из локальной директории (поиск/установка зависимостей будут произведены из подключенных репозиториев)

откатиться к предыдущей версии пакета

переустановка пакета (восстановление удаленных файлов)

удаление ненужных более пакетов

создание локальных репозиториев (createrepo ставится отдельно)

установка обновлений по расписанию (yum-cron устанавливается отдельно)

Опции Yum

использовать Yum без плагинов

или отключить определенный плагин

включить плагины, которые установлены, но отключены

включить отключенный репозиторий

скачать пакеты, но не устанавливать
(на Centos 7 x86_64 будут скачаны в ‘/var/cache/yum/x86_64/7/base/packages/’)

Cледующие команды доступны после установки пакета yum-utils

найти из какого репозитория установлен пакет

найти процессы, пакеты которых обновлены и требуют рестарта

запрос к репозиторию, узнать зависимости пакета, не устанавливая его

синхронизировать yum репозиторий updates в локальную директорию repo1

проверить локальный репозиторий на целостность

установить необходимые зависимости для сборки RPM пакета

управление конфигурационными опциями и репозиториями yum

запрос к локальной базе yum, отображение информации о пакете
(использованная команда, контрольная сумма, URL с которого был установлен и другое)

скачать rpm пакеты из репозитория

скачать src.rpm пакет из репозитория
(должен быть подключен соответствующий репозиторий, например в ‘/etc/yum.repos.d/CentOS-Sources.repo’ в CentOS)

Конфигурационные файлы Yum и их расположение

Основной конфигурационный файл

директория, с конфигурациями (например, yum плагины)

директория, содержащая информацию о репозиториях

Некоторые опции yum.conf:

Директория, где yum хранит кэш и файлы базы (по умолчанию ‘/var/cache/yum’)

Определяет должен или нет Yum хранить кэш заголовков и пакетов после успешной установки. Значения: 0 или 1. (по умолчанию 1)

уровень вывода отладочных сообщений. Значения: 1-10 (по умолчанию 2)

лог файл (по умолчанию ‘/var/log/yum.log’)

обновлять устаревшие пакеты

проверка подписи пакетов. Значения: 0 или 1 (по умолчанию 1)

включение плагинов. Значения: 0 или 1 (по умолчанию 1)

Некоторые полезные плагины

Добавляет опцию командной строки для просмотра ченжлога перед/после обновлениями

выбирает более быстрые репозитории из списка зеркал

добавляет команды keys, keys-info, keys-data, keys-remove, которые позволяют работать с ключами.

блокировать указанные пакеты от обновления, команда yum versionlock

добавление команд yum verify-all, verify-multilib, verify-rpm для проверки контрольных сумм пакетов

Работа Yum через прокси сервер

Для всех пользователей:
добавить в секцию [main] в /etc/yum.conf

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

указать прокси для отдельного пользователя

Буду рад любым дополнениям и замечаниям.
Дополнительно читайте:

источник

Управление пакетами с помощью RPM и YUM

Установка новых приложений и поддержание системы в актуальном состоянии

Серия контента:

Этот контент является частью # из серии # статей: Изучаем Linux, 101

Этот контент является частью серии: Изучаем Linux, 101

Следите за выходом новых статей этой серии.

Об этой серии

Эта серия статей поможет вам освоить задачи администрирования операционной системы Linux. Вы также можете использовать материал этих статей для подготовки к экзаменам первого уровня сертификации профессионального института Linux (LPIC-1).

Чтобы посмотреть описания статей этой серии и получить ссылки на них, обратитесь к нашему перечню материалов для подготовки к экзаменам LPIC-1. Этот перечень постоянно дополняется новыми статьями по мере их готовности и содержит самые последние (по состоянию на апрель 2009 года) цели экзаменов сертификации LPIC-1. Если какая-либо статья отсутствует в перечне, можно найти ее более раннюю версию, соответствующую предыдущим целям LPIC-1 (до апреля 2009 года), обратившись к нашим руководствам для подготовки к экзаменам института Linux Professional Institute.

Краткий обзор

Из этой статьи вы узнаете, как управлять пакетами приложений в вашей Linux-системе с помощью инструментов управления пакетами RPM и YUM. Вы научитесь:

  • Инсталлировать, переустанавливать, обновлять и удалять пакеты с помощью RPM и YUM.
  • Получать информацию о RPM-пакетах (версия, статус, зависимости, целостность, цифровые подписи).
  • Определять, какие файлы содержатся в пакете, а также находить пакеты, содержащие определенные файлы.

Эта статья поможет вам подготовиться к сдаче экзамена LPI 101 на администратора начального уровня (LPIC-1) и содержит материалы цели 102.5 темы 102. Цель имеет вес 3.

Необходимые условия

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

Введение в управление пакетами

Как связаться с Яном

Ян – один из наших наиболее популярных и плодовитых авторов. Ознакомьтесь со всеми статьями Яна (EN), опубликованными на сайте developerWorks. Вы можете найти контактные данные в профиле Яна и связаться с ним, а также с другими авторами и участниками ресурса My developerWorks.

Раньше многие Linux-приложения поставлялись в виде исходного кода, который пользователи могли компилировать и получать необходимые программы вместе с man-руководствами, конфигурационными файлами и так далее. Сегодня в большинстве дистрибутивов Linux используются так называемые пакеты – предварительно собранные приложения или наборы приложений, которые сразу можно установить на том компьютере Linux, для которого они предназначены. В этой статье вы узнаете об инструментах управления пакетами, которые помогают устанавливать, обновлять и удалять пакеты. Вы познакомитесь с программами Red Hat Package Manager (RPM), разработанной Red Hat, и Yellowdog Updater Modified (YUM), изначально разработанной для управления операционными системами Red Hat Linux физического факультета Университета Дьюка. В статье Изучаем Linux, 101: управление пакетами в Debian, которая является частью этой серии, рассматриваются инструменты управления пакетами операционной системы Debian.

С точки зрения пользователя, основная функциональность управления пакетами обеспечивается на уровне команд. Поскольку разработчики Linux стараются сделать эту систему максимально доступной для пользователей, основные инструменты управления пакетами дополняются различными надстройками, включая графический интерфейс, которые скрывают от конечных пользователей всю изначальную сложность. В этой статье, а также в статье Изучаем Linux, 101: управление пакетами в Debian мы сосредоточимся на рассмотрении основных инструментов, хотя будут затронуты и некоторые другие средства, которые впоследствии вы сможете изучить самостоятельно.

Инструменты RPM, YUM и APT (последняя программа предназначены для управления пакетами в ОС Debian Linux) имеют много общего. Все они умеют инсталлировать и удалять пакеты приложений. Информация об инсталлированных пакетах хранится в базе данных. Все эти инструменты обладают базовой функциональностью командной строки, а дополнительные надстройки позволяют использовать более дружественный интерфейс. Все три программы могут получать пакеты из сети Интернет.

Во время инсталляции операционной системы Linux пользователь обычно выбирает для установки большой набор пакетов. Выбор устанавливаемых пакетов может зависеть от того, как планируется использовать компьютер (например, он может функционировать как сервер, настольный компьютер или рабочая станция разработчика приложений). В какой-то момент вам может потребоваться инсталлировать дополнительные пакеты приложений для расширения функционала системы, обновить имеющиеся или удалить ненужные и устаревшие пакеты в связи с выходом их более новых версий. Давайте посмотрим, как можно выполнить все эти действия, а также рассмотрим некоторые сопутствующие задачи, такие как поиск пакета, который может содержать определенную команду.

Red Hat представила RPM в 1995 году. В настоящее время система управления пакетами RPM используется для создания пакетов, соответствующих спецификации Linux Standard Base (LSB). Опции команды rpm сгруппированы в три подгруппы и решают следующие задачи:

  • Опрос и проверка пакетов.
  • Инсталляция, обновление и удаление пакетов.
  • Выполнение дополнительных функций.

В этой статье мы сосредоточимся на рассмотрении первых двух подгрупп. Информацию о дополнительных функциях вы можете найти на man-страницах RPM.

Также следует отметить, что rpm – это имя основной команды, использующейся системой RPM, тогда как .rpm – это расширение, используемое для файлов RPM. Таким образом, «RPM-пакет» или «RPM-пакет xxx» будет обычно означать файл RPM, а rpm будет означать команду.

YUM расширяет возможности систем RPM, дополняя их функциями автоматического обновления и управления пакетами, включая управление зависимостями. YUM позволяет не только получать информацию об установленных в системе пакетах, но, как и система Debian Advanced Packaging Tool (APT), работает с репозиториями, которые представляют собой коллекции пакетов, обычно доступных по сети.

Инсталляция RPM-пакетов

Предположим, вы решили изучить язык Lisp, и ваш коллега посоветовал поработать с компилятором gcl . Для начала можно попробовать освоить команды gcl —help , which gcl или type gcl , однако если gcl отсутствует в вашей системе, то вы увидите сообщения, подобные сообщениям в листинге 1.

Листинг 1. Отсутствие компилятора gcl

В этой ситуации можно вновь обратиться к коллеге и уточнить, какой именно пакет необходимо установить, или просто догадаться, что компилятор gcl содержится в пакете gcl. Часто этот способ срабатывает, но он не всегда правильный. Позже я покажу, как можно найти требуемый пакет. В нашем случае нам нужен пакет gcl. Предположим, что вы загрузили этот пакет (или получили его каким-то другим способом) и попытались установить его с помощью команды rpm с опцией -i (install – установка), как показано в листинге 2.

Листинг 2. Установка gcl с помощью rpm, первая попытка

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

Если вы уже работали с системой APT в ОС Debian, то, вероятно, вы хотели бы использовать команду, подобную команде apt-get , которая определяет, что требуется для инсталляции того или иного пакета (включая все его зависимости), и просто устанавливала бы его. Для систем на базе RPM эту функциональность предоставляет YUM (или Yellowdog Updater Modified). В листинге 3 показано, как установить пакет gcl и требуемый пакет зависимости, gcl-selinux, выполнив команду yum с опцией install .

Листинг 3. Установка gcl с помощью yum

Из листинга 3 видно, что программа YUM обнаружила в репозитории «updates» (подробнее о нем далее) файлы gcl.x86_64 0:2.6.8-0.7.20100201cvs.fc12 и gcl-selinux.x86_64 0:2.6.8-0.7.20100201cvs.fc12, и определила общий размер загружаемых файлов. После того, как мы ввели «y» и подтвердили продолжение установки, были загружены оба пакета, после чего были установлены пакет зависимостей и непосредственно сам пакет gcl. Более подробно о зависимостях вы узнаете из продолжения этой статьи.

Расположение пакетов

В предыдущем разделе вы научились устанавливать RPM-пакеты. Но откуда они берутся? Каким образом yum узнаёт, откуда их загружать? Поиск начинается с просмотра директории /etc/yum.repos.d/, в которой находятся несколько файлов repo. В этой директории repo-файлы хранятся по умолчанию, а дополнительные местоположения можно указать в конфигурационном файле YUM (обычно это файл /etc/yum.conf). В листинге 4 показано содержимое файла fedora-updates.repo, в котором перечислены источники, из которых в ОС Fedora 12 был загружен пакет gcl.

Типовой repo-файл содержит три раздела: в первом разделе перечислены источники обычных пакетов, во втором разделе – источники отладочных пакетов, и в третьем – источники пакетов исходного кода. Обычно пакеты дистрибутива доступны для загрузки из нескольких местоположений, которые называются зеркалами. Файл repo говорит программе yum о том, где она должна искать самые последние списки зеркал для каждого раздела. Обратите внимание на то, что конфигурация учитывает версию дистрибутива и архитектуру компьютера, поэтому для нашей операционной системы Fedora 12, работающей на компьютере с архитектурой x86_64, программа yum загрузит список зеркал, расположенный по ссылке https://mirrors.fedoraproject.org/metalink?repo=updates-released-f12&arch=x86_64.

Помимо указания местоположения репозиториев, repo-файл содержит информацию о том, разрешено ли использование того или иного репозитория, и следует ли проверять загруженные пакеты с помощью подписей GPG.

Листинг 4. Содержимое /etc/yum.repos.d/*.repo

Чтобы определить, какие пакеты установлены в системе, YUM и RPM используют локальную базу данных. Метаданные о пакетах, хранящиеся в локальной базе данных, извлекаются из доступных для использования репозиториев. Хотя необходимость работы с локальной базой данных возникает редко, следует пояснить, что вы можете очищать различные блоки хранящейся в БД информации с помощью команды yum clean и добавлять в БД определенную информацию для разрешенных репозиториев с помощью команды yum makecache . Это может потребоваться, например, в том случае, когда вы меняете конфигурацию репозиториев.

Удаление RPM-пакетов

Если вы хотите удалить пакет из системы, запустите команду yum с опцией remove или команду rpm с опцией -e . В листинге 5 продемонстрировано тестовое удаление пакета gcl с использованием команды rpm -e . Если пакет может быть удален, никакая информация не отображается.

Листинг 5. Тестовое удаление gcl

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

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

Листинг 6. Удаление пакета зависимости с помощью rpm

В случае удаления пакета с помощью команды yum remove будет выполнено пробное удаление, после чего вам надо будет подтвердить удаление. Если вы пытаетесь удалить пакет, от которого зависят какие-либо другие установленные в системе пакеты, то YUM предложит удалить их вместе с пакетом зависимостей, как показано в листинге 7.

Листинг 7. Удаление пакета зависимостей с помощью yum

Обновление RPM-пакетов

Теперь, когда вы знаете, как устанавливать и удалять RPM-пакеты, давайте рассмотрим процедуру обновления пакетов до новой версии. Для обновления всей системы или отдельных пакетов (а также нескольких пакетов с использованием групповых символов) используется команда yum update . В листинге 8 показано, как обновить все пакеты, имена которых начинаются с «gr». Обратите внимание на использование апострофов, которые предотвращают интерпретацию знака звездочки («*») командной оболочкой.

Листинг 8. Обновление с помощью команды yum update

Если вы знаете, откуда можно получить RPM-файлы, или уже загрузили их, то можно выполнить обновление и с помощью команды rpm . Эта процедура похожа на процедуру инсталляции за исключением того, что вместо опции -i используется опция -U или -F . Разница между этими двумя опциями заключается в том, что опция -U обновит существующий пакет или инсталлирует его, если он еще не инсталлирован, тогда как опция -F (freshen – освежить) обновит только те пакеты, которые уже инсталлированы. По этой причине чаще используется опция -U , особенно если в командной строке перечислено несколько RPM-пакетов. В результате все неинсталлированные пакеты будут установлены, а ранее инсталлированные пакеты – обновлены. Две другие опции, -v (verbose – подробно) и -h (hash marks – знаки решетки) часто используются для того, чтобы отобразить индикатор выполнения. В листинге 9 продемонстрировано обновление пакетов vim-common, vim-enhanced и vim-minimal с помощью команды rpm . Пакеты vim-common и vim-enhanced уже были загружены в домашнюю директорию пользователя root, а пакет vim-minimal загружается из одного из источников обновлений.

Листинг 9. Обновление пакетов с помощью rpm

Получение информации о RPM-пакетах

Из наших примеров видно, что для инсталляции RPM-пакета с помощью команды rpm необходимо указать его полное имя (или URL-адрес), например, gcl-2.6.8-0.6.20090701cvs.fc12.x86_64.rpm. С другой стороны, для инсталляции пакета с помощью yum или для его удаления (как с помощью rpm , так и с помощью yum ) достаточно указать только имя пакета, например, gcl. Так же, как и система APT, система RPM заносит информацию обо всех инсталлируемых пакетах во внутреннюю базу данных, позволяя выполнять различные действия с инсталлированными пакетами на основе их имен. В этом разделе я расскажу, какую информацию можно извлечь из этой базы данных с помощью команды rpm с опцией -q (query – запрос) или с помощью соответствующих запросов команды yum .

Следующий простой запрос проверяет, инсталлирован ли пакет, и если это так, показывает его версию. Добавив к запросу опцию -i , вы получите информацию о пакете. Заметьте, что для установки, обновления или удаления пакетов нужны привилегии пользователя root; для выполнения запросов к базе данных RPM эти привилегии не требуются.

Листинг 10. Вывод информации о пакете gcl

Из более подробных листингов можно получить информацию о некоторых тегах, которые могут быть связаны с RPM-пакетом. Нетрудно заметить, что выводимые программами rpm и yum результаты несколько отличаются (так же, как и форматы вывода). В этой статье мы остановимся на базовом формате вывода, предусмотренном стандартными опциями. Если вы хотите использовать опцию rpm —queryformat для создания пользовательского формата вывода, то обратитесь к соответствующей man-странице. Если вы хотите узнать обо всех тегах, поддерживаемых вашей версией rpm , то запустите команду rpm —querytags .

Как видно из листинга 10, для получения списка инсталлированных пакетов можно использовать команду yum . Эту команду также можно использовать для получения списков пакетов, для которых доступны обновления, пакетов, готовых для инсталляции, а также пакетов с другими заданными характеристиками (например, устаревшие или недавно добавленные в репозиторий). Команда yum позволяет даже искать пакеты. Из листинга 11 видно, что пакет texmacs не инсталлирован в системе, но его можно инсталлировать из репозитория «fedora». Поиск по имени «texmacs» выдаст вам список, содержащий четыре пакета. Легко понять, почему были найдены три пакета TeXmacs*. Если выполнить команду yum info pydot , то станет понятно, почему пакет pydot тоже попал в этот список.

Листинг 11. Вывод информации о пакете texmacs

В дальнейших примерах запросов преимущественно будет использоваться команда rpm , поскольку он имеет более богатый набор опций. Во многих из этих примеров можно также использовать команду yum и ее некоторые возможности, отсутствующие в стандартном наборе опций rpm . Для получения дополнительной информации обратитесь к man-страницам..

RPM-пакеты и содержащиеся в них файлы

Часто необходимо узнать, что содержится в пакете, или из какого пакета был получен тот или иной файл. Чтобы получить список файлов, содержащихся в пакете gcl, используйте опцию -ql , как показано в листинге 12 (поскольку в пакете содержится много файлов, показана лишь часть вывода).

Листинг 12. Список файлов, содержащихся в пакете gcl

Вы можете ограничить список только конфигурационными файлами, добавив к запросу опцию -c . Аналогично, опция -d позволяет ограничить список только файлами документации.

Получение информации о файле пакета

Рассмотренные выше команды выполняли запросы к базе данных RPM для получения информации об уже инсталлированных пакетах. Если вы хотите получить эту же информацию о только что загруженном пакете, то используйте в запросе опцию -p (package file – файл пакета) и имя файла пакета (так же, как при установке пакета). В листинге 13 продемонстрировано использование этой команды для двух пакетов vim, которые были загружены нами ранее. Мы запустили эту команду от имени пользователя root лишь по той причине, что указанные файлы находятся в домашней директории данного пользователя. Можно добавить к запросу другие опции, например -l для получения списка файлов или -i – для вывода информации о пакете.

Листинг 13. Вывод информации о двух файлах пакетов vim

Получение информации обо всех инсталлированных пакетах

Опция -a применяет ваш запрос ко всем инсталлированным пакетам. Команда с этой опцией может вывести много информации, поэтому обычно опция -a используется совместно с одним или несколькими фильтрами, такими как sort (для сортировки списка), more или less (для разбивки на страницы), wc (для получения количества пакетов) или grep (для поиска пакетов, имена которых точно не известны). В листинге 14 показаны следующие запросы:

  1. Отсортированный список всех пакетов в системе.
  2. Количество всех пакетов в системе.
  3. Количество всех файлов во всех пакетах системы.
  4. Количество всех файлов с документацией, установленных с помощью RPM.
  5. Поиск всех пакетов, содержащих в своем имени «gcl» (без учета регистра).
Листинг 14. Запросы ко всем пакетам

Использование команды rpm -qa может облегчить администрирование нескольких систем. Если на одном компьютере вы перенаправите отсортированный вывод в файл, а затем сделаете то же самое на другом компьютере, то вы сможете найти отличия, сравнив эти файлы с помощью команды diff .

Из какого пакета был получен файл?

Теперь, когда вы можете вывести список всех пакетов и всех содержащихся в пакете файлов, у вас есть вся необходимая информация чтобы выяснить, из какого пакета был получен тот или иной файл. У вас всегда есть в распоряжении опция -f (или —file ) команды rpm , которая помогает вам найти пакет, содержащий тот или иной файл. Предположим, вы хотите узнать, в каком из рассмотренных ранее пакетов vim на самом деле содержится команда vim . Для этого будет необходимо указать полный путь к файлу. В листинге 15 продемонстрировано использование команды which для определения полного пути к команде vim , а также приведен полезный пример использования вывода команды which в качестве входных данных команды rpm -qf . Обратите внимание на то, что команда ` which guile-config ` заключена в обратные апострофы. Этот же прием можно применить в командной оболочке Bash, используя конструкцию $(which vim) .

Листинг 15. Из какого пакета был получен исполняемый файл vim?

Зависимости RPM

Ранее мы видели, что наша попытка удалить пакет gcl-selinux окончилась неудачей из-за зависимостей. Помимо файлов RPM-пакеты могут содержать различные функции, от которых могут зависеть другие пакеты.

Как вы могли убедиться, обычно эта схема хорошо работает. Если вам необходимо установить сразу несколько пакетов, некоторые из которых могут зависеть от других, просто используйте команду yum или передайте полный список пакетов команде rpm -Uvh , которая проанализирует все зависимости и установит пакеты в нужном порядке.

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

Команда rpm позволяет исследовать установленные пакеты или файлы пакетов и определять, от каких функций они зависят (какие функции им требуются). Для этого используется опция —requires , или сокращенно -R . В листинге 16 перечислены функции, которые требуются пакету gcl. Если вы хотите выполнить запрос к файлу пакета, а не к базе данных RPM, то добавьте опцию -p и укажите полный путь к файлу RPM-пакета.

Листинг 16. От каких пакетов зависит gcl?

Может оказаться не так просто выяснить, в каком из пакетов содержится нужная функция. Решить эту задачу поможет команда yum с опцией deplist . Если вы просто укажете имя пакета без уточнения его версии, вы можете получить список зависимостей для всех известных версий этого пакета. В листинге 17 показано, как получить список зависимостей только для той версии gcl, которая уже установлена.

Листинг 17. Использование команды yum deplist для определения зависимостей gcl

В этом списке также содержится информация о возможных пакетах-источниках каждой функции. Как видно из листинга, в большинстве случаев требуемые функции содержатся в нескольких пакетах, имеющих различные версии. Например, команда /bin/sh могла появиться в результате установки любого из двух пакетов bash. Проявив немного фантазии, можно сократить вывод этой команды до перечня имен пакетов, как показано в листинге 18.

Листинг 18. Сокращение вывода команды yum deplist до списка имен пакетов

Если вы просто хотите узнать, какие пакеты необходимо установить, то всегда можно выполнить команду yum install и увидеть список пакетов прежде, чем вам будет предложено подтвердить продолжение инсталляции.

В дополнение к поиску зависимостей для определенного пакета может возникнуть необходимость выяснить, в каком пакете содержится та или иная функция. Вы уже знаете, как можно определить, в каком пакете содержится тот или иной файл. В листинге 19 показано, как с помощью rpm или yum выяснить, в каком пакете содержится функция gcl-selinux(x86-64). Помимо информации об инсталлированных пакетах, содержащих ту или иную функцию, YUM также выводит информацию о пакетах или их версиях, доступных для загрузки из репозиториев. В нашем примере мы получили информацию о двух пакетах: об исходной версии 2.6.8-0.6 из репозитория «fedora» и обновленной версии 2.6.8-0.7 из репозитория «updates».

Листинг 19. В каких пакетах содержится функция gcl-selinux(x86-64)?

Проверка целостности файла RPM-пакета

Каждый RPM-пакет содержит дайджест, такой как MD5 или SHA1, и, как правило, имеет цифровую подпись, по которой можно проверить его целостность. Для проверки пакетов, имеющих цифровую подпись, требуется использовать открытый ключ. Для проверки целостности файла RPM-пакета используется опция —checksig (или сокращенно -K ) команды rpm . Для вывода подробной информации полезно использовать опцию -v . В листинге 20 показан пример проверки целостности файла пакета vim-enhanced.

Листинг 20. Проверка целостности файла пакета vim-enhanced

Вы можете получить следующий результат:

V3 DSA signature: NOKEY, key ID 16a61572

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

Если пакет подписан цифровой подписью, и вы хотите использовать ее для проверки пакета, то необходимо получить файл ключа этой подписи и импортировать его в вашу базу данных RPM. Прежде чем импортировать ключ с помощью команды rpm —import , следует загрузить его и проверить его контрольную сумму. Дополнительную информацию вы можете найти на man-страницах RPM. Дополнительную информацию о подписанных исполняемых файлах можно найти на домашней странице RPM (см. раздел Ресурсы).

Проверка целостности установленного пакета

Аналогично проверке целостности файла RPM-пакета, вы можете проверять целостность инсталлированных файлов пакета с помощью команды rpm -V . Это позволяет убедиться в том, что файлы, установленные из RPM-пакета, не были изменены после инсталляции. Из листинга 21 видно, что если все файлы в порядке, команда не выводит никакой информации. Для вывода подробной информации можно использовать опцию -v .

Листинг 21. Проверка целостности установленного пакета vim-common

Давайте войдем в систему под учетной записью пользователя root и испортим установленный пакет vim-common, удалив директорию /usr/bin/xxd и заменив файл /usr/share/vim/vim72/syntax/bindzone.vim файлом /bin/bash. Попытаемся снова выполнить проверку. Результат показан в листинге 22.

Листинг 22. Фальсификация пакета vim-common

Из листинга 22 видно, что файл /usr/share/vim/vim72/syntax/bindzone.vim имеет неправильную контрольную сумму MD5, неправильный размер и неверную метку времени mtime. Решением этой проблемы могли бы стать удаление и повторная инсталляция пакета, но в системе имеются другие зависящие от vim-common пакеты, с которыми все в порядке. Поэтому в данном случае нам поможет принудительная инсталляция пакета с использованием опции —force команды rpm или опции reinstall команды yum . В листинге 23 показано, как можно выполнить повторную инсталляцию пакета с помощью yum и убедиться в том, что удаленные файлы и целостность пакета были восстановлены.

Листинг 23. Повторная инсталляция пакета vim-common

Если необходимо дополнительное вмешательство

Обычно система управления пакетами поддерживает порядок в установленных пакетах. Однако, если вы случайно удалили какой-то важный файл, являющийся частью пакета, и повторная инсталляция пакета без его удаления не исправила ситуацию, то потребуется удалить пакет. В этом случае можно попробовать удалить инсталлированный экземпляр и установить его повторно, не затрагивая все зависящие от него пакеты. Для этого можно использовать опцию —nodeps команды rpm , позволяющую пропустить проверку зависимостей при удалении пакета. В листинге 24 показано, как это сделать, если вы случайно удалили файл /usr/bin/xxd file, являющийся частью пакета vim-common.

Листинг 24. Обновление пакетов с помощью rpm

Итак, теперь вы знаете, как можно обновить или восстановить пакет, если штатные средства обновления не помогли решить возникшую проблему. Также вы можете пропустить проверку зависимостей при установке RPM-пакета, однако, это не очень хорошая идея.

Загрузка RPM-пакетов из репозиториев

Хотя команда yum автоматически загружает пакеты из репозиториев, вам может потребоваться загрузить пакеты и сохранить их, например, для использования на другом компьютере, не подключенном к сети или для проверки их содержимого. Для этого можно использовать команду yumdownloader , как показано в листинге 25. В нашем примере пакет уже установлен, поэтому загружать дополнительные пакеты не требуется. Если бы такие пакеты имелись, они также были бы загружены, благодаря использованию опции —resolve .

Листинг 25. Загрузка пакета gcl

Команда rpm2cpio

Если вы загрузили RPM-пакет и хотите проверить его содержимое, не инсталлируя этот пакет, то можно воспользоваться командой rpm2cpio для преобразования содержимого пакета в архив cpio , а затем извлечь из него с помощью команды cpio определенные (или все) файлы. В листинге 26 приведен пример для пакета gcl-selinux и показаны все файлы (и директории), которые были распакованы. Для получения подробной информации о командах rpm2cpio и cpio обратитесь к соответствующим man-страницам.

Листинг 26. Распаковка пакета gcl-selinux с помощью rpm2cpio

Поиск RPM-пакетов

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

  • Можно попробовать угадать, какой пакет может содержать нужную программу, и загрузить его без инсталляции. Когда вы получите этот пакет, можно просмотреть его содержимое.
  • Можно поискать информацию в Интернете.
  • Можно воспользоваться функцией command-not-found, о которой будет рассказано в следующем разделе.

Если вы не можете найти определенный RPM-пакет с помощью системных инструментов, можно поискать его в Интернете на сервере Rpmfind.Net (см. раздел Ресурсы).

Команда не найдена

Когда командная оболочка Bash выполняет поиск команды и не находит ее, она пытается обратиться к функции с именем command_not_found_handle . Если функция command_not_found_handle существует, то происходит ее вызов (в качестве аргументов используются исходная команда и ее исходные аргументы), и ее код завершения становится кодом завершения командной оболочки. Если же эта функция не определена, командная оболочка выводит сообщение об ошибке и возвращает код завершения 127. Обычно эта функция определена в системном файле /etc/bash.bashrc. В листинге 27 показано, как мы нашли функцию command-not-found и установили ее.

Листинг 27. Поиск и установка функции command-not-found

В листинге 28 показано, как определен обработчик этой функции после установки пакета PackageKit-command-not-found. Если функция не может найти указанную команду, имитируется стандартное поведение системы, т. е. возвращается код завершения 127.

Листинг 28. Функция command_not_found_handle

Если бы эта функция была установлена в тот момент, когда мы пытались запустить отсутствующую в системе команду gcl (вспомните листинг 1), то мы бы увидели следующее сообщение (листинг 29).

Листинг 29. Попытка запуска компилятора gcl при использовании функции command_not_found_handle

Другие инструменты управления пакетами

Помимо программ yum и rpm в вашем дистрибутиве Linux могут содержаться и другие инструменты для установки пакетов из репозитория или для обновления всей системы. Эти инструменты могут выполняться из командной строки и/или иметь графический интерфейс. Приведем несколько примеров:

  • YaST (SUSE)
  • up2date (Red Hat)
  • Mandrake Software Management (Mandriva)

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

Комплект PackageKit

Рассмотрение инструментов управления пакетами было бы неполным без упоминания о PackageKit – комплекте инструментов, призванном упростить инсталляцию и обновление программного обеспечения. Основной целью его создания является объединение всех графических инструментов, используемых в различных дистрибутивах Linux. Для работы PackageKit используется системно активируемый демон (это означает, что демон активируется только тогда, когда он необходим). Существуют версии PackageKit для Gnome (gnome-packagekit) и KDE (KPackageKit). Рассмотренная ранее функция command-not-found также является частью пакета PackageKit. В этот пакет также входят утилиты pkcon (для управления пакетами через консоль) и pkmon (для мониторинга работы PackageKit), а также графические инструменты для добавления пакетов приложений и обновления системы. На рисунке 1 изображен пример графического интерфейса менеджера обновлений Software Update.

Рисунок 1. Графический интерфейс Software Update в Fedora 12 (Gnome)

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

Ресурсы для скачивания

Похожие темы

  • Оригинал статьи: Learn Linux, 101: RPM and YUM package management (EN).
  • На Web-сайте программы сертификации LPIC (EN) вы найдете подробные цели, списки задач и примерные вопросы всех трех уровней сертификации на администратора Linux-систем профессионального института Linux. В частности, на этом сайте представлены цели экзаменов LPI 101 и LPI 102 по состоянию на апрель 2009 года. Всегда обращайтесь к Web-сайту программы сертификации LPIC, чтобы узнать последние цели.
  • На домашней странице RPM (EN) вы найдете самую последнюю информацию о системе управления пакетами RPM, а также ссылки на другие источники информации о ней.
  • Книга Maximum RPM (EN) – это всестороннее, систематизированное рассмотрение всех аспектов работы с RPM. Эта книга доступна как в бумажном, так и в электронном виде.
  • Найдите пакеты программного обеспечения на зеркалах, предназначенных для вашего дистрибутива Linux, таких как Fedora/12 Public Active Mirrors (EN).
  • Найдите RPM-пакеты, предназначенные для вашего дистрибутива, на серверах Rpmfind.Net (EN) и RPM Search (EN).
  • Посетите домашнюю страницу LSB (EN) и узнайте больше о проекте Linux Standard Base (LSB), разрабатываемом некоммерческой организацией Free Standards Group (FSG), целью которого является стандартизация внутренней структуры операционных систем, основанных на Linux.
  • Посетите домашнюю страницу PackageKit (EN), чтобы узнать больше об этом комплекте инструментов.
  • Web-сайт Linux Documentation Project (EN) содержит большое количество полезной документации, в особенности, HOWTO-руководств.

Комментарии

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

источник

Читайте также:  Установка блокировки дифференциала киа соренто

Добавить комментарий

Adblock
detector