Системы пакетов
Самой важной отличительной чертой дистрибутива операционной системы является система управления пакетами и активность сообщества, поддерживающего дистрибутив.
Управление пакетами (package management) — это методика установки и управления программным обеспечением в системе.
Разные дистрибутивы используют различные системы пакетов, и, как правило, пакеты, подготовленные для одного дистрибутива, несовместимы с другими. В большинстве дистрибутивов используется одна из двух основных технологий упаковки (но есть и другие):
- разработанная создателями дистрибутива Debian с пакетами .deb (Debian, Ubuntu, Xandros, Linspire);
- разработанная создателями дистрибутива Red Hat с пакетами .rpm (Fedora, CentOS, Red Hat Enterprise Linux, openSUSE, Mandriva, PCLinuxOS).
Пакеты
Основной единицей программного обеспечения в системе пакетов является пакет. Пакет — это сжатая коллекция файлов, представленная одним файлом. Пакет может состоять из множества программ и файлов с данными. Помимо файлов для установки, пакет включает также метаданные с информацией о самом пакете (о содержимом пакета или настройки для установки).
Готовые пакеты помещаются в центральный репозиторий дистрибутива (или в другие репозитории), где они становятся доступными для пользователей.
Если для работы пакета требуется другой пакет, про него говорят, что он имеет зависимость.
Управления пакетами Debian
Низкоуровневая система управления dpkg решает задачи установки и удаления пакетов.
Высокоуровневая система управления apt-get выполняет поиск в метаданных пакетов и разрешает зависимости пакетов.
Эти системы управления пакетами используются в дистрибутивах на основе Debian, Ubuntu, Xandros, Linspire.
Поиск пакета в репозитории
apt-get update apt-cache search искомая_строка
Пример поиска текстового редактора emas (строки объединены в одну)
apt-get update; apt-cache search emacs
Установка пакета из репозитория
apt-get update; apt-get install имя_пакета
Пример установки текстовый редактор emacs
apt-get update; apt-get install emacs
Установка пакета из файла пакета
Если файл пакета загружен из источника, не являющегося репозиторием, его можно установить непосредственно (без разрешения зависимостей) с использованием низкоуровневого инструмента
dpkg --install файл_пакета
Пример установки пакета emacs-22.1-7.fc7-i386.deb, загруженного не из репозитория (обычно с какого-то сайта)
dpkg --install emacs-22.1-7.fc7-i386.deb
Обратите внимание. В этом примере используется низкоуровневая программа dpkg, которая не выполняет разрешений зависимостей. Если обнаружится неразрешенная зависимость, установка завершится сообщением об ошибке.
Удаление пакета
Удаляет пакеты без конфигурационных файлов:
apt-get remove имя_пакета
Удаляет пакеты и конфигурационные файлы:
apt-get purge имя_пакета
Пример удаления пакета emacs
apt-get remove emacs
Пример удаления пакетов по маске
apt-get purge php7.*
Обновление пакетов из репозитория
Наиболее типичной задачей управления пакетами является поддержание системы в актуальном состоянии обновлением пакетов до последних версий.
apt-get update; apt-get upgrade
Обновление пакета из файла пакета
Если обновленная версия пакета была загружена не из репозитория. dpkg не имеет параметра, отвечающего за обновление пакета, поэтому пакет нужно заново установить.
dpkg --install emacs-22.1-7.fc7-i386.deb
Список установленных пакетов
dpkg –list
Определение, установлен ли пакет
С помощью низкоуровневых инструментов можно определить, был ли установлен определенный пакет.
dpkg --status имя_пакета
Пример определяет был ли установлен пакет emacs
dpkg --status emacs
Вывод информации об установленном пакете
Если известно имя установленного пакета, можно получить описание пакета.
apt-cache show имя_пакета
Пример позволяет получить описание пакета emacs
apt-cache show emacs
Поиск пакета по установленному файлу
Определить, в составе какого пакета был установлен некий файл
dpkg --search имя_файла
Пример позволяет узнать, в составе какого пакета был установлен файл /usr/bin/vim
dpkg --search /usr/bin/vim
Управления пакетами CentOS (Red Hat)
Низкоуровневая система управления rpm решает задачи установки и удаления пакетов.
Высокоуровневая система управления yum выполняет поиск в метаданных пакетов и разрешает зависимости пакетов.
Эти системы управления пакетами используются в дистрибутивах на основе Fedora, Red Hat Enterprise Linux, CentOS.
Поиск пакета в репозитории
yum search искомая_строка
Пример поиска текстового редактора emas
yum search emacs
Установка пакета из репозитория
yum install имя_пакета
Пример установки текстовый редактор emacs
yum install emacs
Установка пакета из файла пакета
Если файл пакета загружен из источника, не являющегося репозиторием, его можно установить непосредственно (без разрешения зависимостей) с использованием низкоуровневого инструмента
rpm -i файл_пакета
Пример установки пакета emacs-22.1-7.fc7-i386.rpm, загруженного не из репозитория (обычно с какого-то сайта)
rpm -i emacs-22.1-7.fc7-i386.rpm
Обратите внимание. В этом примере используется низкоуровневая программа rpm, которая не выполняет разрешений зависимостей. Если обнаружится неразрешенная зависимость, установка завершится сообщением об ошибке.
Удаление пакета
yum erase имя_пакета
Пример удаления пакета emacs
yum erase emacs
Обновление пакетов из репозитория
Наиболее типичной задачей управления пакетами является поддержание системы в актуальном состоянии обновлением пакетов до последних версий.
yum update
Обновление пакета из файла пакета
Если обновленная версия пакета была загружена из источника, не являющегося репозиторием, ее можно установить, заменив предыдущую версию
rpm -U файл_пакета
Пример обновления emacs до версии, содержащей в файле пакета emacs-22.1-7.fc7-i386.rpm
rpm -U emacs-22.1-7.fc7-i386.rpm
Список установленных пакетов
rpm –qa
Определение, установлен ли пакет
С помощью низкоуровневых инструментов можно определить, был ли установлен определенный пакет.
rpm –q имя_пакета
Пример определяет был ли установлен пакет emacs
rpm –q emacs
Вывод информации об установленном пакете
Если известно имя установленного пакета, можно получить описание пакета.
yum info имя_пакета
Пример позволяет получить описание пакета emacs
yum info emacs
Поиск пакета по установленному файлу
Определить, в составе какого пакета был установлен некий файл
rpm –qf имя_файла
Пример позволяет узнать, в составе какого пакета был установлен файл /usr/bin/vim
rpm -qf /usr/bin/vim