Головна » Що таке пакетний менеджер в Linux

Що таке пакетний менеджер в Linux

Одна з основних відмінностей між дистрибутивами Linux - це спосіб керування пакетами програмного забезпечення.

З цієї статті ви дізнаєтесь що таке пакети, формати пакетів та пакетні менеджери в Linux, а також як вони працюють і які типи пакетів в Linux взагалі існують.


Зміст

Що таке пакетний менеджер в Linux

Якщо говорити простими словами, пакетний менеджер - це інструмент, за допомогою якого ви можете встановлювати, видаляти, оновлювати, налаштовувати та керувати пакетами програмного забезпечення в операційній системі. Пакетний менеджер може бути графічним застосунком, як центр програм, або інструментом для терміналу, як apt-get чи pacman.

Скоріш за все, ви часто зустрічали термін пакет на цьому сайті або на інших сайтах про Linux. Для того щоб зрозуміти що таке пакетний менеджер, спочатку треба зрозуміти що таке пакет.

Що таке пакет?

У даному контексті, пакет зазвичай означає програму. Це може бути графічна програма, інструмент консолі або навіть бібліотека, що використовується іншими програмами. Пакет являє собою архів файлів, що містить виконуваний файл програми, конфігурацію та інформацію про її залежності.

Раніше програми потрібно було встановлювати з вихідного коду. Тоді вам потрібно було подивитися файл README програми, знайти там від яких компонентів програма залежить і де мають знаходитися виконувані файли. Зазвичай репозиторій програми містить скрипт configure або Makefile. Однак вам все одно доводилося самому збирати програму з вихідних кодів разом з усіма її залежностями (які часто теж потрібно було збирати з вихідних кодів).

Для того щоб це все спростити розробники дистрибутивів Linux створили свої формати пакетів. Це дозволяє надавати користувачам готові до використання (вже скомпільовані) виконувані файли, метадані (назву, версію тощо), а також залежності.

Це як спекти торт і купити торт:

Приблизно в середині 90-х, розробники Debian створили формат пакетів .deb. А в Red Hat створили систему керування пакетами RPM (Скорочення від Red Hat Package Manager). Ви все ще можете компілювати програмне забезпечення, але тепер це не обов'язково. Звісно, для взаємодії з цими пакетами та їх використання вам знадобиться пакетний менеджер.

Як працюють пакетні менеджери?

Зверніть увагу, що пакетний менеджер - це загальна концепція, яка використовується не тільки в Linux. Ви можете також побачити пакетні менеджери, розроблені для різних програм або мов програмування. Наприклад, існує пакетний менеджер PIP для керування пакетами Python, і навіть текстовий редактор Atom має власний пакетний менеджер для встановлення плагінів.

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

Ось діаграма, зроблена на основі даних із SUSE Wiki, яка допоможе вам зрозуміти як працює пакетний менеджер:

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

Крім того, репозиторії містять метадані для кожного пакета, з інформацією такою як: ім'я пакета, версія, опис тощо. Це та інформація, яку ви бачите коли виконуєте команду перегляду інформації про пакет. В Ubuntu/Debian це apt з параметром show:

apt show

Ваш пакетний менеджер в першу чергу взаємодіє з метаданими. Зазвичай він створює локальний кеш метаданих у вашій системі. Коли ви виконуєте команду оновлення, пакетний менеджер оновлює локальний кеш, отримуючи нові метадані з репозиторію. Наприклад:

apt update

Коли ж ви виконуєте команду встановлення програми, наприклад apt install, то пакетний менеджер звертається до цього кешу, а потім вже завантажує файли пакета через інтернет з відповідного репозиторію.

Пакет може мати залежності. Це означає, що пакетному менеджеру буде необхідно встановити ще й інші пакети. Це все зазвичай відбувається автоматично і все потрібне встановлюється разом з пакетом, який ви хочете встановити:

Аналогічно, коли ви видаляєте пакет використовуючи пакетний менеджер, він автоматично видаляє пакети які більше не потрібні. Або як мінімум, інформує вас що система містить пакети, які більше не використовуються і які можна видалити.

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

Види пакетних менеджерів

Пакетні менеджери відрізняються залежно від формату пакетів. Однак для деяких форматів пакетів може бути декілька пакетних менеджерів. Наприклад, для формату пакетів RPM використовуються пакетні менеджери Yum та Dnf. Для Deb існують apt-get та aptitude, що працюють в терміналі.

Але пакетні менеджери можуть бути не тільки для консолі. Для Ubuntu та Debian є пакетний менеджер з графічним інтерфейсом Synaptic. Центр програм вашого дистрибутива також є пакетним менеджером, навіть якщо він використовує apt або dnf для керування пакетами.

Висновки

Не будемо далі заглиблюватись у цю тему, тому що враховуючи різноманіття дистрибутивів Linux, про пакетні менеджери можна говорити дуже багато. Але це віддалить нас від основного завдання зрозуміти що ж таке пакетний менеджер. Також у цій статті не були згадані сучасні універсальні формати пакетів Snap та Flatpak. Сподіваюсь тепер ви трохи краще розумієте як влаштоване керування пакетами в Linux.

Залишити коментар