Все главы учебника
Содержание учебника
Глава 08 / Linux

Пакеты: установить инструмент и понять источник

10 мин чтенияКонтент v0.10.0

В инструкции нужен curl, но shell сообщает command not found. Поиск предлагает скачать один скрипт и запустить его администратором. Для учебной Ubuntu есть более понятный путь: пакетный менеджер знает поставщика, зависимости и установленные файлы. Нужно проверить, что действительно отсутствует, и не смешать окружение хоста с Linux.

После глав о процессах и правах вы понимаете, почему установка меняет систему и требует полномочий. Сейчас используем их лишь для известных пакетов в собственной Ubuntu. Установка может занимать десять минут или больше из-за сети; чтение главы занимает отдельно около десяти минут.

Пакет и репозиторий

Пакет содержит файлы программы, сведения версии, зависимости и правила установки. Репозиторий публикует доступные пакеты и подписанные метаданные. APT выбирает версии из настроенных источников, а dpkg ведёт сведения об установленных Debian-пакетах. Название Ubuntu не гарантирует, что любой найденный в интернете пакет подходит вашему выпуску или архитектуре.

Зависимость означает, что программе нужен другой пакет или библиотека. Установка одного инструмента может добавить несколько файлов и программ. Подпись репозитория помогает проверить происхождение полученных метаданных; это не доказательство отсутствия ошибок во всём ПО. Сторонний источник добавляет новое доверие и новый путь обновления.

Сначала наблюдение

Эти команды выполняются в Ubuntu, не в PowerShell или macOS:

cat /etc/os-release
uname -m
command -v curl
apt-cache policy curl

Первые две показывают выпуск и архитектуру. command -v печатает найденный путь либо завершается ненулевым статусом. apt-cache policy показывает установленную и предлагаемую версию, если данные источников доступны. Версии и адреса будут отличаться по времени и конфигурации; не пытайтесь получить буквальные номера из чужого снимка.

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

Обновить список и установить

sudo apt update
sudo apt install curl python3 nano

update обновляет сведения о доступных пакетах, а не автоматически все установленные программы. install просит изменить набор пакетов. Перед подтверждением прочитайте список добавлений, обновлений, удалений и объём загрузки. Не добавляем -y, чтобы первый опыт оставался обозримым.

Пакеты могли уже стоять: тогда APT сообщит, что нужная версия установлена, либо предложит обновление. Если не удалось получить метаданные, сначала выясните сетевую ошибку, время системы или источник. Не отключайте проверку подписей и TLS ради зелёной строки. При блокировке APT другой обновляющей программой дождитесь её завершения; удаление lock-файла не завершает держателя блокировки.

В Ubuntu Desktop часть обновлений выполняется автоматически. В учебной VM это тоже зависит от образа. Команда sudo может запросить пароль либо быть настроена без него; эти различия не означают, что ваш терминал работает как root постоянно.

Проверить результат и принадлежность

curl --version
python3 --version
nano --version
dpkg -S /usr/bin/curl
dpkg-query -W curl

Первые команды показывают установленную программу. dpkg -S ищет, какой пакет владеет указанным путём. Пути различаются для отдельных программ; не подставляйте путь чужой системы. Файл, созданный вручную в /usr/local/bin, может не принадлежать Debian-пакету. Пакетная запись и поиск команды — разные проверки.

Для оценки будущего изменения есть симуляция:

apt -s install tree

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

Обновление и удаление

apt upgrade обновляет установленные пакеты в рамках настроенных источников. Это не то же, что смена выпуска Ubuntu. Обновление ядра может потребовать перезагрузки; сервисы могут перезапускаться. Для рабочей системы планируют окно и восстановление. В этом курсе не требуется без разбора обновить хост или переустановить ОС.

Удаление пакета тоже имеет последствия: зависимые инструменты могут стать ненужными, а конфигурация и данные имеют свои правила. Различайте remove и purge, но не экспериментируйте с системными пакетами. Проверка устанавливаемого curl не должна заканчиваться удалением менеджера сети или Python, которым пользуются другие программы.

Не смешивайте APT с языковым менеджером пакетов. Python-библиотека из виртуального окружения проекта и системный Python — разные области. Устанавливать всё через sudo pip не требуется. Snap, Flatpak и другие форматы тоже имеют свои границы; для этой последовательности достаточно APT и официальных Ubuntu-источников.

Самостоятельная лаборатория

Запишите выпуск, архитектуру, найденный путь curl, установленную версию и результат симуляции tree. Если curl отсутствовал, установите его в учебной Ubuntu и повторите наблюдение. Добавьте объяснение, почему update и install выполнялись отдельно и почему команда хоста не является проверкой гостя.

Критерии готовности: известен источник инструмента, изменения ограничены учебной системой, вы прочитали предложение APT перед подтверждением. Сетевая или политика доступа не обходилась отключением проверок. Допустим результат «пакет уже установлен»: важно доказать это наблюдением.

Разбор

После установки command -v curl должен найти программу, а curl --version — исполнить её. Dpkg связывает файл с пакетом. Симуляция tree не обязана напечатать те же версии через месяц; в отчёте сохраняются дата и исходное состояние. Дальше разберём окружение процесса, чтобы отличить установку от поиска команды и передачи настроек.

Первичные источники: Ubuntu: управление пакетами, Ubuntu: software tutorial, dpkg manual.