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

Вступление

Большинство современных Unix-подобных операционных систем предлагают централизованный механизм поиска и установки программного обеспечения. Программное обеспечение обычно распространяется в видеpackages, хранящегося вrepositories. Работа с пакетами известна какpackage management. Пакеты предоставляют основные компоненты операционной системы, а также разделяемые библиотеки, приложения, службы и документацию.

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

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

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

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

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

Хотя их функциональные возможности и преимущества в целом схожи, форматы и инструменты упаковки зависят от платформы:

Операционная система Формат Инструменты)

Debian

.deb

apt,apt-cache,apt-get,dpkg

Ubuntu

.deb

apt,apt-cache,apt-get,dpkg

CentOS

.rpm

yum

мягкая фетровая шляпа

.rpm

dnf

FreeBSD

Порты,.txz

make,pkg

В Debian и системах на его основе, таких как Ubuntu, Linux Mint и Raspbian, формат пакета - это файл.deb. APT, Advanced Packaging Tool, предоставляет команды, используемые для наиболее распространенных операций: поиска в репозиториях, установки коллекций пакетов и их зависимостей, а также управления обновлениями. Команды APT работают как интерфейс к служебной программе нижнего уровняdpkg, которая обрабатывает установку отдельных файлов.deb в локальной системе, а иногда вызывается напрямую.

Последние выпуски большинства дистрибутивов, производных от Debian, включают командуapt, которая предлагает краткий и унифицированный интерфейс для общих операций, которые традиционно выполнялись более конкретнымиapt-get иapt-cache. Его использование не является обязательным, но может упростить некоторые задачи.

CentOS, Fedora и другие члены семейства Red Hat используют RPM-файлы. В CentOSyum используется для взаимодействия как с отдельными файлами пакетов, так и с репозиториями.

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

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

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

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

система команда

Debian / Ubuntu

sudo apt-get update

sudo apt update

CentOS

yum check-update

мягкая фетровая шляпа

dnf check-update

Пакеты FreeBSD

sudo pkg update

Порты FreeBSD

sudo portsnap fetch update

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

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

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

система команда Заметки

Debian / Ubuntu

sudo apt-get upgrade

По возможности обновляет только установленные пакеты.

sudo apt-get dist-upgrade

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

sudo apt upgrade

Нравитсяapt-get upgrade.

sudo apt full-upgrade

Нравитсяapt-get dist-upgrade.

CentOS

sudo yum update

мягкая фетровая шляпа

sudo dnf upgrade

Пакеты FreeBSD

sudo pkg upgrade

Порты FreeBSD

less /usr/ports/UPDATING

Используетless для просмотра обновлений для портов (используйте клавиши со стрелками для прокрутки, нажмитеq для выхода).

cd /usr/ports/ports-mgmt/portmaster && sudo make install && sudo portmaster -a

Устанавливаетportmaster и использует его для обновления установленных портов.

Найти пакет

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

система команда Заметки

Debian / Ubuntu

apt-cache search search_string

apt search search_string

CentOS

yum search search_string

yum search all search_string

Ищет все поля, включая описание.

мягкая фетровая шляпа

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

Показывает информацию о пакете из локального кэша.

apt show package

dpkg -s package

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

CentOS

yum info package

yum deplist package

Перечисляет зависимости для пакета.

мягкая фетровая шляпа

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

Предполагает «да», когдаapt обычно предлагает продолжить.

sudo apt install package

Отображает цветной индикатор выполнения.

CentOS

sudo yum install package

sudo yum install package1 package2 ...

Устанавливает все перечисленные пакеты.

sudo yum install -y package

Предполагает «да», когдаyum обычно предлагает продолжить.

мягкая фетровая шляпа

sudo dnf install package

sudo dnf install package1 package2 ...

Устанавливает все перечисленные пакеты.

sudo dnf install -y package

Предполагает «да», когдаdnf обычно предлагает продолжить.

Пакеты FreeBSD

sudo pkg install package

sudo pkg install package1 package2 ...

Устанавливает все перечисленные пакеты.

Порты FreeBSD

cd /usr/ports/category/port && sudo make install

Строит и устанавливает порт из исходников.

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

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

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

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

система команда Заметки

Debian / Ubuntu

sudo dpkg -i package.deb

sudo apt-get install -y gdebi && sudo gdebi package.deb

Устанавливает и используетgdebi для установкиpackage.deb и получения всех недостающих зависимостей.

CentOS

sudo yum install package.rpm

мягкая фетровая шляпа

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 remove package

sudo apt-get autoremove

Удаляет ненужные пакеты.

CentOS

sudo yum remove package

мягкая фетровая шляпа

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

Удаляет установленный порт.

Командаapt

Администраторы дистрибутивов семейства Debian обычно знакомы сapt-get иapt-cache. Менее известен упрощенный интерфейсapt, разработанный специально для интерактивного использования.

Традиционное командование apt Эквивалент

apt-get update

apt update

apt-get dist-upgrade

apt full-upgrade

apt-cache search string

apt search string

apt-get install package

apt install package

apt-get remove package

apt remove package

apt-get purge package

apt purge package

Хотяapt часто является более быстрым сокращением для данной операции, он не предназначен для полной замены традиционных инструментов, и его интерфейс может меняться между версиями для повышения удобства использования. Если вы используете команды управления пакетами внутри сценария или конвейера оболочки, рекомендуется использоватьapt-get иapt-cache.

Получить помощь

В дополнение к веб-документации имейте в виду, что страницы руководства Unix (обычно обозначаемые какman pages) доступны для большинства команд из оболочки. Чтобы прочитать страницу, используйтеman:

man page

Вman вы можете перемещаться с помощью клавиш со стрелками. Нажмите/ для поиска текста на странице иq для выхода.

система команда Заметки

Debian / Ubuntu

man apt-get

Обновление локальной базы данных пакетов и работа с пакетами.

man apt-cache

Запрос локальной базы данных пакетов.

man dpkg

Работа с отдельными файлами пакетов и запрос установленных пакетов.

man apt

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

CentOS

man yum

мягкая фетровая шляпа

man dnf

Пакеты FreeBSD

man pkg

Работа с предварительно скомпилированными бинарными пакетами.

Порты FreeBSD

man ports

Работа с коллекцией портов.

Заключение и дальнейшее чтение

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

Related