Управление пакетами
Разбираемся с форматами пакетов, менеджерами apt, dnf, pacman и процессом сборки ПО в Linux.
📦 Что такое пакет?
Пакет — это архив специального формата, который содержит все необходимые приложению бинарные и конфигурационные файлы, информацию о том, как их следует разместить в файловой системе, данные о зависимостях пакета, а также список действий, которые необходимо выполнить в процессе установки.
Пакеты могут иметь различные форматы:
.deb— для систем на базе Debian (Ubuntu, Linux Mint)..rpm— для систем на базе RHEL (CentOS, Fedora, Rocky Linux)..tar.gzили.tar.xz— архивы, которые обычно требуют ручной установки и настройки (исходный код или бинарные сборки).
🛠️ Пакетные менеджеры
Для управления пакетами существуют специальные инструменты — пакетные менеджеры. Они предназначены для:
- Установки пакетов и их размещения в соответствующих директориях.
- Удаления пакетов и очистки неиспользуемых зависимостей.
- Обновления программного обеспечения.
Это удобно, поскольку используются простые команды, большинство пакетов берутся из официальных репозиториев, а также происходит автоматическая обработка обновлений и зависимостей.
🌐 Репозитории и конфигурация
Данные пакетов хранятся на удаленных серверах, которые называются репозиториями. В них находятся стабильные, тестовые и экспериментальные версии пакетов.
| Дистрибутив | Менеджер | Пути конфигурации |
|---|---|---|
| Debian / Ubuntu | apt |
/etc/apt/sources.list, /etc/apt/sources.list.d/ |
| RHEL / CentOS | yum / dnf |
/etc/yum.repos.d/ |
| Arch Linux | pacman |
/etc/pacman.conf |
📂 Структура пакета
В основном пакеты имеют следующую внутреннюю структуру:
/usr/bin, /usr/lib./etc/.🏗️ Сборка пакета
Сборка пакета — это процесс упаковки программы, её файлов и метаданных в единый файл. Процесс состоит из трех этапов:
- Подготовка файлов: компиляция программы и проверка структуры директорий (бинарные файлы в
/usr/bin, библиотеки в/usr/lib). - Создание описания: описание метаданных пакета в специальном файле (control файл для deb или spec файл для rpm).
- Упаковка: финальное создание файла пакета с помощью инструментов вроде
dpkg-debилиrpmbuild.
🏠 Локальный репозиторий
Локальный репозиторий — это собственный сервер или директория, содержащая пакеты, доступные для установки через стандартные пакетные менеджеры. Это полезно для экономии трафика или установки специфичного ПО в закрытых сетях.
Советы
Всегда обновляйте индекс пакетов перед установкой (apt update или dnf check-update). Это гарантирует, что вы получите актуальные версии зависимостей и самого ПО.
Если вы устанавливаете пакет вручную (например, через dpkg -i), не забывайте проверять зависимости, так как низкоуровневые инструменты не всегда скачивают их автоматически.
🏋️ Практические упражнения
Базовая работа с пакетами
- Найти пакет
htopпо имени или описанию. - Установить, обновить и затем удалить любой простой пакет (например,
tree). - Изучить, как посмотреть историю операций для возможного отката.
Показать решение
Управление зависимостями
- Установить пакет
vlcили любой другой плеер. - Проверить, какие библиотеки (зависимости) ему требуются.
- Очистить систему от неиспользуемых зависимостей.
Показать решение
Развёртывание LAMP/LEMP стека
Цель: Установить стек LEMP и настроить phpMyAdmin.
- Установить Nginx, MariaDB, PHP.
- Установить phpMyAdmin.
- Краткая инструкция по шагам.
Показать решение
Краткая инструкция:
sudo apt update— обновляем список.sudo apt install nginx mariadb-server php-fpm php-mysql— ставим базу.sudo apt install phpmyadmin— ставим интерфейс БД.- При установке phpMyAdmin выберите "none" (так как у нас nginx) и настройте доступ к БД.
Создание пакета
Задание: Создать простейший .deb пакет.
Показать решение
На выходе вы получите файл mypackage.deb.
Настройка локального репозитория
Задание: Подготовить директорию как источник пакетов.
Показать решение
Автоматизированный скрипт установки
Написать универсальный скрипт установки базовых сервисов.