Linux. Управление пакетами

Опубликовано:
Автор:

Системы пакетов

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

Управление пакетами (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