06. Пакетні менеджери і встановлення ПЗ¶
Навіщо це потрібно¶
На сервері немає App Store і немає .exe-файлів. Щоб встановити Nginx, Python, PostgreSQL або будь-яку іншу програму — використовують пакетний менеджер. Для Python-бібліотек — pip.
Розуміти різницю між системними і Python-пакетами — важливо, щоб не ламати середовище і не плутатися, звідки береться та чи інша версія Python або Django.
Два рівні пакетів¶
flowchart TD
OS["Операційна система\n(Ubuntu)"] --> APT["apt\nСистемні програми:\nNginx, Python, Git, PostgreSQL"]
Python["Python-проєкт"] --> PIP["pip\nPython-бібліотеки:\nDjango, requests, celery"]
APT --> System["Встановлюється в /usr/bin,\n/usr/lib — для всієї системи"]
PIP --> Venv["Краще встановлювати у virtualenv\n— ізольовано для проєкту"]
aptвстановлює програми для операційної системи.pipвстановлює Python-бібліотеки для Python-проєкту.
apt — системний пакетний менеджер¶
Оновлення списку пакетів¶
Не встановлює нічого — тільки завантажує актуальний список доступних пакетів з репозиторіїв. Завжди виконуй передinstall.
Оновлення встановлених пакетів¶
Оновлює всі встановлені пакети до нових версій.Встановлення пакетів¶
sudo apt install nginx
sudo apt install python3
sudo apt install python3-venv
sudo apt install python3-pip
sudo apt install git
sudo apt install postgresql
sudo apt install redis-server
sudo apt install htop curl wget tree
Видалення пакетів¶
sudo apt remove nginx # видалити програму
sudo apt purge nginx # видалити + конфігураційні файли
sudo apt autoremove # видалити непотрібні залежності
Пошук пакета¶
apt search nginx
apt show nginx # детальна інформація про пакет
dpkg -l | grep nginx # чи встановлений пакет?
pip — Python пакетний менеджер¶
Встановлення бібліотек¶
pip install django
pip install django==4.2.0 # конкретна версія
pip install "django>=4.0,<5.0" # діапазон версій
pip install django psycopg2-binary celery redis
Робота з requirements.txt¶
pip freeze # список всіх встановлених пакетів
pip freeze > requirements.txt # зберегти у файл
pip install -r requirements.txt # встановити з файлу
Інформація про пакет¶
pip show django # версія, залежності, розташування
pip list # всі встановлені пакети
pip list --outdated # що можна оновити
virtualenv — ізольоване Python-середовище¶
Чому virtualenv важливий¶
Без virtualenv всі pip install встановлюються в системний Python. Це проблема:
- Проєкт А вимагає
Django==3.2, Проєкт Б —Django==4.2. Конфлікт. - Ти оновив бібліотеку для одного проєкту — зламав інший.
- На production сервері встановлена не та версія.
Virtualenv ізолює бібліотеки для кожного проєкту:
flowchart TD
System["Системний Python 3.11"] --> P1["project_A/.venv/\nDjango 3.2\npillow 9.0"]
System --> P2["project_B/.venv/\nDjango 4.2\npillow 10.0"]
System --> P3["project_C/.venv/\nFastAPI\nsqlalchemy"]
Команди virtualenv¶
# Створити virtualenv
python3 -m venv .venv
# Активувати (Linux/Mac)
source .venv/bin/activate
# Деактивувати
deactivate
# Після активації — встановити залежності
pip install -r requirements.txt
Після активації ти побачиш (.venv) перед prompt:
Де зберігати virtualenv¶
- Завжди в директорії проєкту:
.venv/ - Додай у
.gitignore— не комітити
Типова послідовність на новому сервері¶
# 1. Оновити систему
sudo apt update && sudo apt upgrade -y
# 2. Встановити системні залежності
sudo apt install python3 python3-venv python3-pip git nginx -y
# 3. Клонувати проєкт
git clone https://github.com/you/myproject.git
cd myproject
# 4. Створити virtualenv
python3 -m venv .venv
source .venv/bin/activate
# 5. Встановити Python-залежності
pip install -r requirements.txt
Типові помилки початківців¶
Помилка 1: Запускати pip install без активованого virtualenv
Бібліотека встановиться в системний Python. Перевіряй:
which pip— має вказувати на.venv/bin/pip.
Помилка 2: pip: command not found
Використовуй
pip3абоpython3 -m pip, або встанови черезsudo apt install python3-pip.
Помилка 3: Не додати .venv у .gitignore
Virtualenv містить тисячі файлів і важить 100+ МБ. Не потрібно в Git.
Помилка 4: Забути sudo apt update перед install
Без оновлення можеш встановити стару версію або отримати помилку "package not found".
Практичне завдання¶
Завдання 1¶
Переконайся, що обидві програми встановились.Завдання 2¶
mkdir ~/test_project && cd ~/test_project
python3 -m venv .venv
source .venv/bin/activate
pip install django
python -c "import django; print(django.__version__)"
pip freeze > requirements.txt
cat requirements.txt
deactivate
Завдання 3¶
Відкрий два термінали. В одному активуй virtualenv і введи which python. В іншому — без virtualenv. Порівняй результати.
Самоперевірка¶
- [ ] Я розумію різницю між
aptіpip - [ ] Я можу встановити системну програму через
apt install - [ ] Я можу створити і активувати virtualenv
- [ ] Я розумію, навіщо virtualenv потрібен для кожного проєкту
- [ ] Я вмію зберегти і відновити залежності через
pip freezeіrequirements.txt
Короткий підсумок¶
apt — для системних програм (Nginx, PostgreSQL, Git). pip — для Python-бібліотек (Django, requests). Virtualenv ізолює бібліотеки кожного проєкту. Завжди активуй .venv перед роботою з проєктом. Наступний крок — SSH і підключення до сервера.