Модуль 16

Package managers (apt, yum, pacman)

Ось готовий урок, створений спеціально за твоїм майстер-промптом. Вмикай уяву — ми в аудиторії CS50! 🎓


🎓 CS50: Package Managers — Ваші особисті кур'єри у світі Linux

Привіт, друзі! Радий бачити вас усіх. 👋

Сьогодні ми поговоримо про магію, яка відбувається щоразу, коли ви хочете встановити нову програму на сервер чи свій ноутбук. Ми розберемо тему Package Managers (Пакетні менеджери): apt, yum (або dnf) та pacman.


1. 🔥 Вступ: Чому ми не качаємо .exe файли?

Уявіть ситуацію. Ви — шеф-кухар у величезному ресторані (це ваш сервер). Вам терміново потрібно приготувати складну страву — скажімо, "Лазанью Болоньєзе" (це програма, яку ви хочете встановити, наприклад, веб-сервер Nginx).

Як би ви це робили у світі Windows (або "по-старому")? Ви йдете на ферму за м'ясом, потім на млин за борошном, потім шукаєте помідори на ринку. Ви все це тягнете на кухню, самі миєте, чистите... А якщо млин закритий? А якщо помідори не підходять до цього м'яса?

Це називається Dependency Hell ("Пекло залежностей"). Раніше, щоб встановити програму на Linux, треба було вручну знайти всі бібліотеки, від яких вона залежить, скомпілювати їх, і молитися, щоб версії збігалися.

А тепер — як це працює з Package Manager? Ви просто дзвоните своєму надійному постачальнику і кажете: "Привези мені набір для лазаньї". І постачальник (Package Manager): 1. Знає, де взяти продукти (Repositores). 2. Знає, що для лазаньї потрібне борошно і томати (Dependencies). 3. Привозить усе це в одній коробці і ставить на поличку.

Риторичне питання: Ви хочете витрачати час на пошук "борошна" по всьому інтернету, чи хочете просто натиснути кнопку і отримати результат? Думаю, відповідь очевидна.


2. 🧠 Теоретична база: Що "під капотом"?

Давайте зазирнемо всередину цього процесу. Не лякайтеся термінів, зараз все стане ясно.

Три кити пакетного менеджменту:

  1. Репозиторій (Repository) Уявіть це як App Store або величезний склад. Це сервер в інтернеті, де лежать тисячі програм, перевірених і підписаних розробниками вашого дистрибутиву Linux.

    • Інтуїтивно: Це "хмара", звідки все качається.
  2. Пакет (Package) Це коробка з товаром. Всередині лежить сама програма (бінарний файл), інструкція, куди її покласти, і список того, що їй потрібно для роботи.

    • Формати: .deb (для Debian/Ubuntu) або .rpm (для RedHat/CentOS).
  3. Залежності (Dependencies) Це найважливіше! Якщо програма "А" потребує бібліотеку "Б", то менеджер автоматично завантажить і встановить "Б" перед тим, як ставити "А".

    • Запам'ятати: Пакетний менеджер вирішує конфлікти за вас.

Хто є хто? (Різні діалекти)

Логіка всюди однакова, але команди трохи відрізняються залежно від "сім'ї" Linux:

  • Debian/Ubuntu 👉 використовують apt (Advanced Package Tool). Найпопулярніший.
  • RHEL/CentOS/Fedora 👉 використовують yum (або новіший dnf).
  • Arch Linux 👉 використовують pacman. Для тих, хто любить контроль.

Ключова думка: Не вчіть напам'ять усі прапорці (flags). Зрозумійте суть: "Знайти", "Завантажити", "Встановити", "Видалити". Синтаксис завжди можна підглянути в Google.


3. 🧪 Приклади: Від простого до реального

Давайте спробуємо щось встановити. Уявимо, що ми на Ubuntu (використовуємо apt).

Крок 1: Оновлення меню

Перед тим як замовляти, треба дізнатися, що є в наявності і скільки це коштує. Ви очікуєте, що команда одразу щось встановить? Ні.

sudo apt update

Що сталося? Ваш комп'ютер пішов на сервери (репозиторії), скачав свіжі списки програм і версій. Тепер він знає, що вийшла нова версія Nginx.

Крок 2: Встановлення (Типовий приклад)

Нам потрібен веб-сервер nginx.

sudo apt install nginx

Система запитає: Wait, Nginx needs libnginx-mod and openssl. Install them too? [Y/n] Ви натискаєте Y (Enter). Результат: Менеджер стягнув залежності, розпакував їх, розклав файли по папках (/etc, /usr/bin) і навіть запустив сервіс.

Крок 3: Трохи складніше (Пошук)

Ви забули, як точно називається пакет для мови Python. Пітон? Python3?

sudo apt search python3 | grep "interpreter"

Логіка: Ми шукаємо в локальному кеші (який оновили в Кроці 1) всі згадки python3 і фільтруємо вивід.

А як це виглядає в інших системах?

Дія Ubuntu (apt) CentOS (yum/dnf) Arch (pacman)
Оновити базу apt update dnf check-update pacman -Sy
Встановити apt install git dnf install git pacman -S git
Видалити apt remove git dnf remove git pacman -R git

4. 🛠 Практична частина

Час бруднити руки! Відкривайте термінал (або віртуальну машину). Якщо у вас Windows — використовуйте WSL.

Завдання 1. "Розвідка" Виконайте оновлення списків пакетів вашої системи. Питання: Скільки пакетів пропонують оновлення? (Зазвичай система пише в кінці: "X packages can be upgraded").

Завдання 2. "Hello World" в інсталяції Встановіть маленьку утиліту htop (це красивий диспетчер завдань). * Запустіть її командою htop. * Вийдіть (F10 або q).

Завдання 3. "Чистка" Видаліть htop. Але увага! Спробуйте знайти команду, яка видаляє тільки програму, і команду, яка видаляє програму разом з налаштуваннями (config files). (Підказка для apt: remove vs purge).

Завдання 4. "А що, якщо..." (Міні-кейс) Ви намагаєтесь встановити програму, а система пише: Could not get lock /var/lib/dpkg/lock. Ситуація: Ви наче стукаєте в туалет, а там зайнято. Рішення: Подумайте, чому так? Може, у вас відкрито інше вікно, де йде оновлення? Або система автоматично оновлюється у фоні? Як перевірити, хто тримає "замок" (lock)?

Завдання 5. Автоматизація Спробуйте встановити будь-який пакет (наприклад, tree) так, щоб система не питала вас "Do you want to continue? [Y/n]". (Підказка: шукайте прапорець "yes").


5. 💡 Мислення як у розробника

Як відрізнити новачка від профі в роботі з пакетами?

1. Новачок качає файли з браузера. Він шукає "download google chrome ubuntu", качає .deb файл і клікає на нього. ❌ Чому це погано: Цей файл не оновлюватиметься автоматично разом із системою. Це шлях до вразливостей. ✅ Профі: Додає офіційний репозиторій Google у систему, і встановлює через apt install. Тепер Chrome оновлюється разом з усім іншим.

2. Профі думає про "Сміття". Коли ви видаляєте програму, її залежності (бібліотеки), які ставилися тільки для неї, можуть залишитися. ✅ Порада: Регулярно використовуйте команди автоочистки (наприклад, sudo apt autoremove), щоб ваш сервер не перетворився на звалище забутих файлів.

3. "Sudo" — це не магічна паличка. Не пишіть sudo перед усім підряд. Використовуйте його тільки тоді, коли змінюєте стан системи. Пошук пакетів (search) не вимагає прав адміністратора.


6. 🧩 Підсумок

Отже, що ми маємо в сухому залишку?

  1. Package Managers — це ваші найкращі друзі, які рятують вас від ручного збирання програм і пекла залежностей.
  2. Ви тепер знаєте "Велику Трійку": apt, yum/dnf, pacman.
  3. Ви розумієте, що за командою install стоїть цілий логістичний ланцюжок: Репозиторій -> Скачування -> Перевірка залежностей -> Розпаковка -> Налаштування.

Тепер ви вмієте: Забезпечити свій сервер необхідним інструментарієм за лічені секунди, не виходячи з терміналу.

🔍 Тизер наступного уроку: Окей, ми встановили Nginx. Але він показує стандартну сторінку "Welcome". Як змусити його показувати наш сайт? Наступного разу ми зануримось у світ конфігураційних файлів та текстових редакторів (Vim vs Nano). Буде гаряче! 🔥

Це був CS50. Побачимось!