Лаб. работа “Управление пакетами в ОС Linux”
Лабораторная работа по теме “Управление пакетами в ОС Linux”
Цель работы
- Изучить основные принципы работы системы управления пакетами в Debian.
- Получить практические навыки использования утилит
apt,apt-cacheиdpkgдля поиска, установки, обновления и удаления программного обеспечения. - Научиться работать с репозиториями и разрешать проблемы зависимостей.
Краткие теоретические сведения
Система управления пакетами — это фундамент любого современного дистрибутива Linux. Она обеспечивает целостность, безопасность и стабильность системы, автоматизируя установку, обновление и удаление ПО.
Архитектура системы управления пакетами Debian
Систему управления пакетами в Debian можно представить в виде двух уровней:
- Низкий уровень:
dpkg(Debian Package Manager)- Это базовый инструмент, который непосредственно работает с файлами пакетов (
.deb). - Его основные функции: установка из локального файла, удаление, получение информации о уже установленном пакете, просмотр списка файлов в пакете.
- Ключевое ограничение
dpkg: он не умеет работать с сетью и репозиториями. Он не может самостоятельно скачивать пакеты и, что более важно, не разрешает зависимости автоматически. Если для установки пакета А требуется пакет Б,dpkgпросто выдаст ошибку и остановится.
- Это базовый инструмент, который непосредственно работает с файлами пакетов (
- Высокий уровень:
apt(Advanced Packaging Tool)- Это надстройка над
dpkg, созданная для решения его ограничений.apt— это основной инструмент, с которым взаимодействует пользователь. - Ключевые возможности
apt:- Работа с репозиториями:
aptполучает информацию о доступных пакетах из списков, хранящихся в сети (репозиториях). - Автоматическое разрешение зависимостей: При установке пакета А
aptанализирует его зависимости, находит в репозиториях пакеты Б и В, скачивает их и передаетdpkgдля установки в правильном порядке. - Управление обновлениями:
aptотслеживает новые версии пакетов в репозиториях и позволяет легко обновить всю систему.
- Работа с репозиториями:
- Это надстройка над
Репозитории и их структура
Репозиторий — это структурированное хранилище пакетов на удаленном сервере. Система узнает, какие репозитории использовать, из файлов конфигурации:
/etc/apt/sources.list— основной файл./etc/apt/sources.list.d/*.list— каталог для добавления сторонних репозиториев, что является предпочтительной практикой.
Строка в sources.list имеет четкий формат: deb http://deb.debian.org/debian/ bookworm main contrib non-free
deb: Тип репозитория (бинарные пакеты). Бывает ещеdeb-srcдля исходного кода.http://deb.debian.org/debian/: URL-адрес репозитория.bookworm: Название (кодовое имя) вашего выпуска Debian.main contrib non-free: Компоненты (секции) репозитория.main: Полностью свободное ПО, составляющее ядро дистрибутива.contrib: Свободное ПО, которое зависит от несвободного.non-free: Несвободное ПО (проприетарные драйверы, прошивки и т.д.).
Жизненный цикл и состояния пакета
Команда dpkg -l показывает состояние пакетов. Первые две буквы в строке означают:
- Желаемое состояние:
i(install),r(remove),p(purge),h(hold). - Текущее состояние:
n(not-installed),i(installed),c(config-files),u(unpacked),f(failed-config).
Самые частые комбинации:
ii: Пакет успешно установлен (installed).rc: Пакет был удален (remove), но его конфигурационные файлы остались (config-files).un: Пакет никогда не был установлен (unknown/not-installed).
Необходимое ПО и окружение
- Операционная система Debian или любой дистрибутив на его основе (например, Ubuntu).
- Доступ к сети Интернет.
- Права суперпользователя (sudo).
Ход работы
Задание 1. Обновление информации о пакетах и обновление системы
Первый шаг перед установкой любого ПО — это синхронизация локального списка пакетов с репозиториями и установка доступных обновлений.
Откройте терминал.
Выполните команду для обновления списка пакетов из репозиториев. Эта команда не обновляет сами программы, а только информацию о доступных версиях.
Выполните команду для обновления установленных пакетов до последних версий.
Проанализируйте вывод команды. Система покажет, какие пакеты будут обновлены, и запросит подтверждение. Согласитесь на обновление (введите
YилиД).
Задание 2. Поиск пакетов
Часто точное имя пакета неизвестно. Для поиска можно использовать ключевые слова.
Найдите пакет, связанный с системным мониторингом. Например,
htop— это интерактивный просмотрщик процессов.Найдите пакет для работы с архивами, например,
p7zip.Запишите в отчет полные имена пакетов, которые вы нашли (
htopиp7zip-full).
Задание 3. Просмотр информации о пакете
Перед установкой полезно изучить информацию о пакете: его описание, версию, зависимости.
Получите подробную информацию о пакете
htop.Проанализируйте вывод. Обратите внимание на поля
Version,DependsиDescription. Запишите в отчет, от каких пакетов зависитhtop.
Задание 4. Установка пакета
Установите пакет
htopс помощьюapt.После завершения установки убедитесь, что программа работает. Запустите ее в терминале.
Для выхода из
htopнажмитеqилиF10. Сделайте скриншот работающей программы для отчета.
Задание 5. Просмотр списка установленных пакетов
Выведите список всех пакетов, установленных в системе, и найдите среди них
htop, используя утилитуgrep.Аналогично проверьте, установлен ли пакет
mc(файловый менеджер Midnight Commander).
Задание 6. Удаление пакета
Существует два основных способа удаления пакета.
Удалите пакет
htop, сохранив его конфигурационные файлы.Убедитесь, что пакет удален, повторив команду из Задания 5.1.
Теперь установите пакет
mc.Удалите пакет
mcвместе со всеми его конфигурационными файлами.Иногда после удаления пакетов в системе остаются зависимости, которые больше не нужны. Выполните команду для их автоматической очистки.
Задание 7. Работа с .deb файлами напрямую
Иногда необходимо установить ПО, которого нет в стандартных репозиториях. В этом случае можно скачать .deb файл и установить его с помощью dpkg.
Загрузите
.debпакет популярного редактора кода Visual Studio Code с официального сайта. Используйтеwgetдля загрузки из командной строки.Попробуйте установить его с помощью
dpkg.Скорее всего, команда завершится с ошибкой, сообщив о неудовлетворенных зависимостях. Это нормальное поведение
dpkg.Теперь используйте
aptдля автоматического исправления этой проблемы. Эта команда найдет недостающие зависимости в репозиториях и установит их вместе с пакетом, установка которого провалилась.После успешного завершения команды убедитесь, что
code(исполняемый файл VS Code) установлен и запускается.
Задания для самостоятельного выполнения
Эти задания требуют самостоятельного поиска информации и применения знаний, полученных в ходе основной части работы. Используйте man apt, man dpkg и веб-поиск для нахождения нужных команд и опций.
Задание 8. Управление версиями: “заморозка” пакета
Сценарий: В вашем проекте используется утилита jq (обработчик JSON) строго определенной версии, например, 1.6. Обновление системы не должно затрагивать этот пакет, чтобы не нарушить совместимость.
Установите пакет
jq.Найдите команду, которая позволяет “заморозить” (удержать) пакет
jqна текущей версии, запретив его обновление.Примените эту команду.
Проверьте, что пакет
jqтеперь находится в состоянии “hold”. Это можно увидеть, например, с помощьюdpkg -l | grep jqили другой специализированной команды.Выполните
sudo apt upgrade. Убедитесь, что система игнорирует обновления дляjq(даже если они доступны).Найдите и выполните команду, которая “размораживает” пакет, снова разрешая его обновление.
Приведите в отчете все использованные команды и их вывод, подтверждающий смену статуса пакета.
Задание 9. Исследование пакетов
Сценарий: Вам нужно понять, из каких файлов состоит установленный пакет и какому пакету принадлежит конкретный файл в системе.
- Установите пакет
tree, если он еще не установлен. - Используя утилиты
dpkg, найдите, какой пакет является “владельцем” файла/bin/ls. - Найдите команду, которая выводит полный список файлов, устанавливаемых пакетом
tree, и их расположение в файловой системе. - Проанализируйте вывод. Какие типы файлов входят в пакет, кроме исполняемого (
/usr/bin/tree)? (Например, документация, man-страницы). - Приведите в отчете команды и результаты их выполнения.
Задание 10. Работа со сторонним репозиторием
Сценарий: Вам необходимо установить ПО, которого нет в официальных репозиториях Debian, например, систему контейнеризации Docker. Для этого нужно добавить официальный репозиторий Docker.
- Найдите в интернете официальную инструкцию по установке Docker на Debian (“Install Docker Engine on Debian”).
- Следуя инструкции, выполните шаги для добавления репозитория Docker в вашу систему. Обычно это включает:
- Установку пакетов-зависимостей (
ca-certificates,curlи др.). - Добавление GPG-ключа репозитория для проверки подлинности пакетов.
- Создание файла в
/etc/apt/sources.list.d/с адресом репозитория Docker.
- Установку пакетов-зависимостей (
- После добавления репозитория обновите список пакетов с помощью
sudo apt update. - Убедитесь, что пакеты Docker теперь доступны для установки, выполнив поиск (
apt-cache search docker-ce). - Установите пакет
docker-ce. - В отчете опишите последовательность выполненных действий и приложите содержимое созданного вами файла в
/etc/apt/sources.list.d/.
Контрольные вопросы
- В чем разница между командами
apt updateиapt upgrade? - Что такое “зависимость” пакета? Приведите пример из вашей работы.
- Какая команда позволяет найти пакет по ключевому слову, не зная его точного имени?
- В чем разница между
apt removeиapt purge? - Опишите ситуацию, в которой установка пакета через
dpkg -iможет завершиться ошибкой. Как исправить эту ситуацию? - В каком файле хранится основной список репозиториев пакетов в Debian?