Что это такое и как это работает

Вы когда-нибудь задумывались, как Linux управляет пакетами — загружает, устанавливает и удаляет их? Ну, все это входит в систему управления пакетами Linux.

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

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

Давайте начнем.

Что такое диспетчер пакетов Linux?

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

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

Звучит запутанно? Давайте проясним это, изучив ниже основные концепции связанных с ним менеджеров пакетов.

Изучение основных концепций управления пакетами

В этом разделе будут рассмотрены основные концепции управления пакетами, включая пакеты, зависимости и репозитории.

№1. Пакеты

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

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

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

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

Чтобы упростить процесс управления программным обеспечением или службами, Linux представил свою систему управления пакетами.

№2. Зависимости

Операционная система Linux сложна. Он состоит из нескольких программ, которые зависят друг от друга. Для работы любого программного обеспечения потребуется какое-то другое программное обеспечение или пакет.

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

Таким образом, каждый раз, когда вы устанавливаете пакет, у него будут перечислены зависимости. Менеджер пакетов ищет список зависимостей и устанавливает все пакеты или недостающие.

№3. Репозитории

Репозитории или репозитории — это виртуальные онлайн-места, в которых перечислены все пакеты. Эти репозитории доступны через Интернет и помогают пользователю Linux получить доступ к пакетам, необходимым во время установки программного обеспечения.

Преимущества использования системы управления пакетами

Использование системы управления пакетами дает множество преимуществ. К ним относятся:

  • Это позволяет легко устанавливать новые пакеты.
  • С помощью системы управления пакетами вы сможете адекватно удалить старые приложения.
  • Сделайте чистую переустановку пакетов. Переустановка пакетов — обычная практика среди разработчиков, поскольку она гарантирует автоматическое исправление поврежденных конфигураций или файлов без необходимости ручной отладки. При наличии надлежащей системы управления пакетами администратор может с уверенностью переустановить программное обеспечение, поскольку система управления все сделает сама.
  • Легко обновляйте уже установленные пакеты без какого-либо ручного вмешательства. Вы можете настроить автоматический ежедневный запуск обновления, гарантируя, что ваша система защищена от распространенных уязвимостей и уязвимостей (CVE) или новых эксплойтов.

Далее мы обсудим, как работает менеджер пакетов.

Как работает менеджер пакетов?

Менеджер пакетов лежит в основе операционной системы Linux. Однако он также доступен в Linux.

Менеджеры пакетов есть повсюду, включая визуальные редакторы, такие как Atom и Visual Studio Code, у которых есть свои собственные. Другие популярные менеджеры пакетов включают PIP, менеджер пакетов Python; npm — менеджер пакетов JavaScript; и так далее.

Читайте также: Что такое Chocolatey и как его установить

Чтобы менеджер пакетов работал, ему необходим доступ к рабочему репозиторию. В этом репозитории программного обеспечения перечислены пакеты. Каждый пакет имеет метаданные, что упрощает работу менеджера пакетов.

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

При первоначальном взаимодействии системный менеджер пакетов создает локальный кэш метаданных, который позже используется при выполнении таких действий, как «обновление». — путем запуска таких команд, как apt update.

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

Например, если он найдет пакет, который вы ищете, он попытается установить его, подключившись к репозиторию и загрузив его в систему.

Далее он выполнит поиск зависимостей, необходимых для установки пакета. Если у пакета есть зависимости, он установит их автоматически без вмешательства пользователя.

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

Короче говоря, мы можем суммировать функции менеджеров пакетов следующим образом:

  • Убедитесь, что пакеты подлинные. Кроме того, убедитесь, что целостность пакета сохраняется, выполнив правильную контрольную сумму и проверку подлинности цифрового сертификата.
  • Автоматизируйте объединение пакетов для удобства использования.
  • Обязательно установите все зависимости, чтобы избежать «ада зависимостей».
  • Управляйте пакетами, включая загрузку, поиск и установку нового или существующего программного обеспечения.

Linux предлагает доступ ко многим хорошим менеджерам пакетов, включая APT, YUM, DNF, Pacman, Zypeer и Portage. Давайте рассмотрим их ниже.

№1. Расширенный инструмент упаковки (APT)

APT — один из самых популярных менеджеров пакетов Linux, поскольку он поставляется с Ubuntu и другими дистрибутивами на основе Debian.

Он использует инструмент управления пакетами dkpg и формат файла пакета .deb. Он построен на основе dkpg и действует как интерфейс для менеджера пакетов dkpg. С помощью APT вы можете устанавливать, искать, удалять пакеты .deb и управлять ими.

Некоторые из команд APT включают apt, apt-cache и apt-get.

Давайте посмотрим на некоторые из них в действии ниже.

#install package

$ sudo apt install package_name
#remove package

$ sudo apt remove package_name
#completely purge the package

$ sudo apt purge package_name
# Remove leftover dependencies

$ sudo apt autoremove
#upgrade

$ sudo apt upgrade
# upgrade a single package

$ sudo apt upgrade package_name

№2. ДПКГ

DPKG означает систему управления пакетами на основе Debain. Менеджер пакетов использует расширение .deb. В отличие от APT, он не может автоматически устанавливать пакеты и их зависимости.

Чтобы установить пакет с помощью dpkg, вам нужно будет использовать следующую команду.

$ dkpg -i package_name.deb

Аналогичным образом вы можете удалить пакет, выполнив следующую команду.

$ dkpg -r package_name

№3. Ням

YUM означает «Yellow Dog Updater, Modified». YUM имеет формат файла пакета .rpm и доступен в таких дистрибутивах, как Red Hat Enterprise Linux, CentOS и Fedora 21.

Как и APT, YUM является менеджером пакетов высокого уровня, но использует RPM (менеджер пакетов RPM) в качестве основного инструмента управления пакетами. Он предлагает простой в использовании интерфейс.

Чтобы установить пакет в YUM, вам нужно запустить:

$ yum install package_name

Аналогичным образом вы можете удалить пакет, запустив.

$ yum remove package_name

Чтобы обновить пакет, запустите:

$ yum update package_name

YUM способен разрешать любые зависимости и получать любые обновления во время установки.

№4. ДНФ

DNF означает Dandified YUM. Это преемник YUM и заменяет его в большинстве случаев. Как и YUM, DNF использует пакет RPM в качестве основного управления пакетами. Однако он обеспечивает улучшение документации, более быстрое разрешение зависимостей, повышенную производительность и т. д.

№5. об/мин

Менеджер пакетов Red Hat (RPM) используется в операционных системах Linux на базе Red Hat. Например, вы можете найти RPM в CentOS и Fedora. RPM использует расширение .rpm.

Для установки с использованием RPM вам необходимо запустить:

$ rpm -i package_name_rpm

Чтобы удалить пакет, запустите:

$ rpm -e package_name.rpm

И чтобы обновить пакет, запустите:

$ rpm -e package_name

№6. Пакман

Pacman — это менеджер пакетов для операционных систем Linux на базе Arch, таких как Arch и Manjaro. Он использует формат файла .tar.xz.

Здесь пакеты хранятся и распространяются в сжатых архивах. Это делает пакеты небольшими и, следовательно, их легко распространять и устанавливать. Pacman использует систему Arch Build System (ABS) для установки пакетов.

В Pacman вы можете установить его с помощью следующей команды:

$ pacman -S package_name

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

$ pacman -Syu

Затем, чтобы удалить пакет в Pacman, используйте следующую команду:

$ pacman -Rs package_name

№7. Зиппер

Zypper — менеджер пакетов для openSUSE. Это инструмент CLI, который обрабатывает пакеты в дистрибутиве openSUSE Linux.

Он использует формат файла пакета .rpm, аналогичный YUM и DNF. Однако здесь вы будете полагаться на интерфейс Zypper, который использует библиотеку ZYpp libzypp. Это делает Zypper быстрее по сравнению с другими менеджерами пакетов.

№8. Перевозка

Portage — менеджер пакетов для дистрибутива Gentoo. Формат файла пакета в Portage — .tbz2 — сжатый tar-архив или сценарий оболочки электронной сборки.

Portage работает иначе, чем другие менеджеры пакетов в нашем списке. Здесь Portage использует предварительно скомпилированные бинарные пакеты. Пакеты распространяются посредством электронных сборок – типичного сценария оболочки. Здесь вы также получаете инструмент Emerge CLI, который обрабатывает все сценарии оболочки для установки, обновления или удаления пакетов.

Какой менеджер пакетов Linux выбрать?

Большинство менеджеров пакетов самодостаточны. В большинстве случаев вы застряли в том дистрибутиве Linux, который используете. Если вы только начинаете, вам, скорее всего, придется использовать APT.

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

Советы по эффективному управлению программным обеспечением с помощью менеджеров пакетов

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

Самым значительным преимуществом является то, что вам не нужно беспокоиться об «аде зависимостей» — ситуации, когда программное обеспечение не имеет доступа к пакетам, необходимым для его запуска.

Лучшие практики использования управления пакетами включают в себя:

  • Создайте и управляйте соответствующим файлом конфигурации со списком всех необходимых пакетов. Рядом с пакетами укажите версию пакета, чтобы избежать конфликтов во время реализации. Простое сохранение файла конфигурации может спасти вас от противоречивых сред.
  • Используйте менеджеры пакетов, чтобы обновлять ваши пакеты до последней версии. Это гарантирует, что вы не пострадаете от эксплойтов нулевого дня, поскольку последняя версия содержит исправления безопасности. Вы также получите доступ к новым функциям и исправлениям ошибок. Однако прежде чем обновлять пакеты, запустите тестовую среду, чтобы увидеть, не нарушают ли что-нибудь новые пакеты. Лучший способ решить эту проблему — автоматизировать процесс.
  • Создавайте виртуальные среды для дальнейшего улучшения управления пакетами и их зависимостями.
  • Удалите пакеты, чтобы улучшить зависимости. Зависимость от экономичного пакета повысит безопасность и упростит ваш проект.
  • Создайте правильную документацию по зависимостям. Поступая так, вы экономите часы боли при работе с пакетами. Всегда упоминайте версию и делайте ее как можно более подробной. Это поможет новым разработчикам присоединиться, а также улучшить обслуживание.

Далее мы обсудим, как использовать менеджер пакетов.

Как использовать менеджер пакетов?

В этом разделе мы рассмотрим примеры использования менеджера пакетов. Мы будем использовать Advance Package Tool (APT), чтобы упростить задачу. Вы также, вероятно, будете использовать APT в качестве своего первого менеджера пакетов.

Установка пакетов

Чтобы установить пакет, вам нужно будет использовать следующую команду.

$ sudo apt install имя-пакета

Давайте установим Gimp с помощью команды.

$ sudo apt установить gimp

Поиск пакетов

Если вы не уверены в доступности пакета, вы можете поискать его в онлайн-репозитории.

Например, если вы ищете программное обеспечение для редактирования видео, вам нужно будет найти его, как показано ниже.

$ sudo apt search “video image”
#output

Sorting... Done

Full Text Search... Done

libgavl-dev/jammy 2.0.0~svn6298-1 amd64

  low level audio and video library - development files

libgavl-doc/jammy 2.0.0~svn6298-1 all

  low level audio and video library - documentation files

libgavl-ocaml/jammy 0.1.6-1build3 amd64

  OCaml interface to the gavl library

libgavl-ocaml-dev/jammy 0.1.6-1build3 amd64

  OCaml interface to the gavl library

libgavl2/jammy 2.0.0~svn6298-1 amd64

  low level audio and video library - runtime files

The syntax for it as below.

$ sudo apt search “search-term‘

Finding Package Dependencies

You can also use package manager to find dependencies for a package that you wantto install. To list the package dependencies, simply run the following command.

$ sudo apt depends package-name

Let’s see what packages does gimp software depends upon.

$ sudo apt depends gimp

#output

gimp

  Depends: libgimp2.0 (>= 2.10.30)

  Depends: libgimp2.0 (<= 2.10.30-z)

  Depends: gimp-data (>= 2.10.30)

  Depends: gimp-data (<= 2.10.30-z)

  Depends: graphviz

  Depends: xdg-utils

  Depends: libaa1 (>= 1.4p5)

  Depends: libbabl-0.1-0 (>= 1:0.1.78)

  Depends: libbz2-1.0

  Depends: libc6 (>= 2.34)

  Depends: libcairo2 (>= 1.12.2)

  Depends: libfontconfig1 (>= 2.12.6)

  Depends: libfreetype6 (>= 2.2.1)

  Depends: libgcc-s1 (>= 3.3.1)

  Depends: libgdk-pixbuf-2.0-0 (>= 2.30.8)

  Depends: libgegl-0.4-0 (>= 1:0.4.34)

  Depends: libgexiv2-2 (>= 0.10.6)

  Depends: libglib2.0-0 (>= 2.56.2)

  Depends: libgs9 (>= 9.10~dfsg)

  Depends: libgtk2.0-0 (>= 2.24.10)

  Depends: libgudev-1.0-0 (>= 167)

  Depends: libharfbuzz0b (>= 0.6.0)

  Depends: libheif1 (>= 1.8.0)

  Depends: libilmbase25 (>= 2.5.7)

  Depends: libjpeg8 (>= 8c)

  Depends: libjson-glib-1.0-0 (>= 1.5.2)

  Depends: liblcms2-2 (>= 2.9)

  Depends: liblzma5 (>= 5.1.1alpha+20120614)

  Depends: libmng2 (>= 2.0.2)

  Depends: libmypaint-1.5-1 (>= 1.5.0)

  Depends: libopenexr25 (>= 2.5.7)

  Depends: libopenjp2-7 (>= 2.0.0)

  Depends: libpango-1.0-0 (>= 1.29.4)

  Depends: libpangocairo-1.0-0 (>= 1.29.4)

  Depends: libpangoft2-1.0-0 (>= 1.29.4)

  Depends: libpng16-16 (>= 1.6.2-1)

  Depends: libpoppler-glib8 (>= 0.44.0)

  Depends: librsvg2-2 (>= 2.32.0)

  Depends: libstdc++6 (>= 5.2)

  Depends: libtiff5 (>= 4.0.3)

  Depends: libwebp7

  Depends: libwebpdemux2

  Depends: libwebpmux3

  Depends: libwmf0.2-7 (>= 0.2.8.4)

  Depends: libx11-6

  Depends: libxcursor1 (>> 1.1.2)

  Depends: libxext6

  Depends: libxfixes3

  Depends: libxmu6

  Depends: libxpm4

  Depends: zlib1g (>= 1:1.1.4)

  Breaks: gimp-plugin-registry (<< 7.20140602+nmu1~)

  Recommends: ghostscript

 |Suggests: gimp-help-en

  Suggests: <gimp-help>

    gimp-help-ca

    gimp-help-de

    gimp-help-el

    gimp-help-en

    gimp-help-es

    gimp-help-fr

    gimp-help-it

    gimp-help-ja

    gimp-help-ko

    gimp-help-nl

    gimp-help-nn

    gimp-help-pt

    gimp-help-ru

    gimp-help-sl

    gimp-help-sv

  Suggests: gimp-data-extras

  Suggests: gvfs-backends

  Suggests: libasound2

    liboss4-salsa-asound2

  Replaces: gimp-plugin-registry (<< 7.20140602+nmu1~)

Удаление пакетов

Вы также можете удалить пакеты, если хотите. Чтобы удалить пакет, вам нужно будет использовать следующую команду.

$ sudo apt удалить имя пакета

Итак, если вы хотите удалить пакет GIMP, вам нужно будет выполнить следующую команду.

$ sudo apt удалить GIMP

Однако это не удаляет какие-либо зависимости или конфигурацию пакета. Чтобы полностью удалить его, вам нужно будет использовать опцию –purge.

$ sudo apt удалить имя-пакета –purge

$ sudo apt удалить gimp –purge

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

Чтобы обновить системные пакеты, вы можете запустить следующую команду.

$ sudo apt update && sudo apt update -y

Заключительные слова

Менеджеры пакетов лежат в основе любого дистрибутива Linux. Это важная часть, определяющая, как вы управляете пакетами в Linux. Благодаря менеджеру пакетов вам не придется беспокоиться о зависимостях или вручную искать пакеты для установки.

Менеджеры пакетов, такие как APT, обеспечивают простоту использования и позволяют выполнять большую часть рутинной работы, позволяя вам сосредоточиться на самом важном — то есть на более качественной разработке программного обеспечения и улучшении рабочего процесса.

Далее узнайте, как установить Docker в Ubuntu, CentOS, Debian и Windows.