Таблица 14.2. Инструменты управления пакетами
Дистрибутивы
Низкоуровневые инструменты
Высокоуровневые инструменты
На основе Debian
dpkg
apt-get, aptitude
Fedora, Red Hat Enterprise Linux, CentOS
rpm
yum
Типичные задачи управления пакетами
С помощью инструментов командной строки для управления пакетами можно выполнить множество разных операций. Мы рассмотрим наиболее типичные из них. Вы должны знать, что низкоуровневые инструменты поддерживают также создание файлов пакетов, но эта тема выходит за рамки данной книги.
В следующем обсуждении под термином имя_пакета будет подразумеваться фактическое имя пакета, а под термином файл_пакета — имя файла пакета.
Поиск пакета в репозитории
Используя высокоуровневые инструменты для поиска метаданных в репозитории, можно найти пакет по его имени или описанию (табл. 14.3).
Таблица 14.3. Команды поиска пакетов
Дистрибутив
Команды
Debian
apt-get update
apt-cache search искомая_строка
Red Hat
yum search искомая_строка
Вот пример поиска текстового редактора emacs в системе Red Hat с помощью команды yum:
yum search emacs
Установка пакета из репозитория
Высокоуровневые инструменты позволяют загрузить пакет из репозитория и установить его с полным разрешением всех зависимостей (табл. 14.4).
Таблица 14.4. Команды установки пакетов
Дистрибутив
Команды
Debian
apt-get update
apt-get install имя_пакета
Red Hat
yum install имя_пакета
Вот пример установки текстового редактора emacs в системе Debian при помощи apt-get:
apt-get update; apt-get install emacs
Установка пакета из файла пакета
Если файл пакета загружен из источника, не являющегося репозиторием, его можно установить непосредственно (без разрешения зависимостей) с использованием низкоуровневого инструмента (табл. 14.5).
Таблица 14.5. Низкоуровневые команды установки пакетов
Дистрибутив
Команды
Debian
dpkg --install файл_пакета
Red Hat
rpm -i файл_пакета
Пример: если с некоторого сайта, не являющегося репозиторием, был загружен файл emacs-22.1-7.fc7-i386.rpm, его можно установить в систему Red Hat командой:
rpm -i emacs-22.1-7.fc7-i386.rpm
ПРИМЕЧАНИЕ
Поскольку этот прием установки основан на использовании низкоуровневой программы rpm, он не выполняет разрешения зависимостей. Если программа rpm обнаружит неразрешенную зависимость, она завершится с сообщением об ошибке.
Удаление пакета
Пакеты можно удалять с помощью и низкоуровневых, и высокоуровневых инструментов. Примеры использования высокоуровневых инструментов приводятся в табл. 14.6.
Таблица 14.6. Команды удаления пакетов
Дистрибутив
Команды
Debian
apt-get remove имя_пакета
Red Hat
yum erase имя_пакета
Пример: удалить пакет emacs из системы Debian можно командой:
apt-get remove emacs
Обновление пакетов из репозитория
Наиболее типичной задачей управления пакетами является поддержание системы в актуальном состоянии обновлением пакетов до последних версий. Высокоуровневые инструменты способны выполнять эту важную задачу за один шаг (табл. 14.7).
Таблица 14.7. Команды обновления пакетов
Дистрибутив
Команды
Debian
apt-get update; apt-get upgrade
Red Hat
yum update
Пример: следующая команда применит все обновления, доступные для пакетов, установленных в системе на основе Debian:
apt-get update; apt-get upgrade
Обновление пакета из файла пакета
Если обновленная версия пакета была загружена из источника, не являющегося репозиторием, ее можно установить, заменив предыдущую версию (табл. 14.8).
Таблица 14.8. Низкоуровневые команды обновления пакетов
Дистрибутив
Команды
Debian
dpkg --install файл_пакета
Red Hat
rpm -U файл_пакета
Пример: обновить установленную программу emacs до версии, содержащей в файле пакета emacs-22.1-7.fc7-i386.rpm, в системе Red Hat можно командой:
rpm -U emacs-22.1-7.fc7-i386.rpm
ПРИМЕЧАНИЕ
dpkg не имеет параметра, отвечающего за обновление пакета вместо установки, как в программе rpm.
Список установленных пакетов
Команды в табл. 14.9 можно использовать для вывода списка всех пакетов, установленных в системе.
Таблица 14.9. Команды вывода списка пакетов
Дистрибутив
Команды
Debian
dpkg –list
Red Hat
rpm –qa
Определение, установлен ли пакет
С помощью низкоуровневых инструментов из табл. 14.10 можно определить, был ли установлен определенный пакет.
Таблица 14.10. Команды определения состояния пакетов
Дистрибутив
Команды
Debian
dpkg --status имя_пакета
Red Hat
rpm –q имя_пакета
Пример: определить, был ли установлен пакет emacs в системе Debian, можно командой:
dpkg --status emacs
Вывод информации об установленном пакете
Если известно имя установленного пакета, с помощью команд из табл. 14.11 можно получить описание пакета.
Таблица 14.11. Команды получения информации о пакетах
Дистрибутив
Команды
Debian
apt-cache show имя_пакета
Red Hat
yum info имя_пакета
Пример: получить описание пакета emacs в системе Debian можно командой:
apt-cache show emacs
Поиск пакета по установленному файлу
Определить, в составе какого пакета был установлен некий файл, можно с помощью команд из табл. 14.12.
Таблица 14.12. Команды идентификации принадлежности файлов
Дистрибутив
Команды
Debian
dpkg --search имя_файла
Red Hat
rpm –qf имя_файла
Пример: узнать, в составе какого пакета был установлен файл /usr/bin/vim в системе Red Hat, можно командой:
rpm -qf /usr/bin/vim
Заключительное замечание
В последующих главах мы исследуем множество программ, решающих широкий спектр прикладных задач. Хотя большинство этих программ обычно устанавливается по умолчанию, иногда возникает необходимость установить дополнительные пакеты. С вновь обретенными знаниями (и пониманием) особенностей управления пакетами вы без труда сможете установить дополнительные программы и управлять ими.
миф об установке программного обеспечения в Linux
Те, кто прежде использовал другие платформы, иногда становятся жертвами мифов о сложности установки программного обеспечения в Linux и верят, что многообразие систем управления пакетами, используемых разными дистрибутивами, является серьезной помехой. Вообще-то и правда — помехой, только не для пользователей, а для производителей патентованного программного обеспечения, желающих распространять свои программы только в виде двоичных файлов.
Программная экосистема Linux основана на идеологии открытости исходного кода. Если разработчик программного обеспечения выпустит исходный код своего продукта, почти наверняка человек, связанный с дистрибутивом, упакует этот продукт и включит его в репозиторий. Этот подход гарантирует хорошую интеграцию продукта с дистрибутивом, и пользователь сможет получить все необходимое ему программное обеспечение в одном месте, вместо того чтобы искать отдельные программы по разным веб-сайтам.