Главная Темы Тема 5: Управление пакетами
$
Главная Темы Упражнения Шпаргалка Ресурсы
05
Администрирование

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

Разбираемся с форматами пакетов, менеджерами apt, dnf, pacman и процессом сборки ПО в Linux.

🕐 ~15 мин чтения 🟢 Уровень: новичок

📦 Что такое пакет?

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

Пакеты могут иметь различные форматы:

  • .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

📂 Структура пакета

В основном пакеты имеют следующую внутреннюю структуру:

package components
🔹 Исполняемые файлы: помещаются в /usr/bin, /usr/lib.
🔹 Конфигурационные файлы: обычно находятся в /etc/.
🔹 Скрипты установки: выполняются до или после установки/удаления.
🔹 Список зависимостей: перечень пакетов, необходимых для работы.

🏗️ Сборка пакета

Сборка пакета — это процесс упаковки программы, её файлов и метаданных в единый файл. Процесс состоит из трех этапов:

  1. Подготовка файлов: компиляция программы и проверка структуры директорий (бинарные файлы в /usr/bin, библиотеки в /usr/lib).
  2. Создание описания: описание метаданных пакета в специальном файле (control файл для deb или spec файл для rpm).
  3. Упаковка: финальное создание файла пакета с помощью инструментов вроде dpkg-deb или rpmbuild.

🏠 Локальный репозиторий

Локальный репозиторий — это собственный сервер или директория, содержащая пакеты, доступные для установки через стандартные пакетные менеджеры. Это полезно для экономии трафика или установки специфичного ПО в закрытых сетях.

👨‍🏫

Советы

Всегда обновляйте индекс пакетов перед установкой (apt update или dnf check-update). Это гарантирует, что вы получите актуальные версии зависимостей и самого ПО.

Если вы устанавливаете пакет вручную (например, через dpkg -i), не забывайте проверять зависимости, так как низкоуровневые инструменты не всегда скачивают их автоматически.

🏋️ Практические упражнения

01

Базовая работа с пакетами

Новичок ~10 мин

  1. Найти пакет htop по имени или описанию.
  2. Установить, обновить и затем удалить любой простой пакет (например, tree).
  3. Изучить, как посмотреть историю операций для возможного отката.
💡 Показать решение
Решение (Ubuntu/Debian)
user@linux:~$
apt search htop
# Поиск пакета
user@linux:~$
sudo apt install tree && sudo apt upgrade tree
# Установка и обновление
user@linux:~$
sudo apt remove tree
# Удаление
user@linux:~$
grep "install" /var/log/dpkg.log
# Просмотр логов установки для отката (в dnf используется: dnf history)
02

Управление зависимостями

Новичок ~10 мин

  1. Установить пакет vlc или любой другой плеер.
  2. Проверить, какие библиотеки (зависимости) ему требуются.
  3. Очистить систему от неиспользуемых зависимостей.
💡 Показать решение
Решение
user@linux:~$
apt-cache depends vlc
# Просмотр списка зависимостей пакета
user@linux:~$
sudo apt autoremove
# Удаление "осиротевших" пакетов, которые больше не нужны
03

Развёртывание LAMP/LEMP стека

Средний ~30 мин

Цель: Установить стек LEMP и настроить phpMyAdmin.

  1. Установить Nginx, MariaDB, PHP.
  2. Установить phpMyAdmin.
  3. Краткая инструкция по шагам.
💡 Показать решение

Краткая инструкция:

  1. sudo apt update — обновляем список.
  2. sudo apt install nginx mariadb-server php-fpm php-mysql — ставим базу.
  3. sudo apt install phpmyadmin — ставим интерфейс БД.
  4. При установке phpMyAdmin выберите "none" (так как у нас nginx) и настройте доступ к БД.
Проверка
user@linux:~$
systemctl status nginx mariadb
04

Создание пакета

Средний ~15 мин

Задание: Создать простейший .deb пакет.

💡 Показать решение
Создание .deb
mkdir -p mypackage/DEBIAN mkdir -p mypackage/usr/bin echo "echo 'Hello from my package!'" > mypackage/usr/bin/hello chmod +x mypackage/usr/bin/hello echo -e "Package: my-hello\nVersion: 1.0\nArchitecture: all\nMaintainer: user\nDescription: My first package" > mypackage/DEBIAN/control dpkg-deb --build mypackage

На выходе вы получите файл mypackage.deb.

05

Настройка локального репозитория

Средний ~15 мин

Задание: Подготовить директорию как источник пакетов.

💡 Показать решение
Local Repo (APT)
user@linux:~$
mkdir ./repo && cp mypackage.deb ./repo/
user@linux:~$
dpkg-scanpackages ./repo /dev/null | gzip -9c > ./repo/Packages.gz
# Создание индекса пакетов
user@linux:~$
echo "deb [trusted=yes] file:/home/user/repo ./" | sudo tee /etc/apt/sources.list.d/local.list
06

Автоматизированный скрипт установки

Сложный ~20 мин

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

💡 Показать решение
install.sh
#!/bin/bash if [ -f /etc/debian_version ]; then PM="apt" sudo apt update elif [ -f /etc/redhat-release ]; then PM="dnf" fi echo "Используем менеджер: $PM" sudo $PM install -y nginx mariadb-server ufw # Базовая настройка sudo systemctl enable --now nginx mariadb sudo ufw allow 'Nginx Full' sudo ufw --force enable echo "Установка завершена!"