1. Введение
2. apt-get install
2.1. Установка
$ sudo apt-get [options] install [package(s)]
Естественно, для запуска apt-get мы должны быть пользователем root, поэтому мы используем sudo для предоставления таких привилегий.
Мы используем тег options, чтобы указать флаги, например -y, которые автоматически дают разрешение на установку.
Как правило, с помощью этой команды можно установить определенный пакет или несколько пакетов, разделенных пробелами.
2.2. Обновление пакетов
apt-get устанавливает пакеты из списков пакетов, хранящихся в файле /etc/apt/sources.list.
Когда мы запускаем команду apt-get install, она извлекает эти пакеты и устанавливает их.
Соответственно, чтобы обновить эти пакеты, мы получаем их из исходных репозиториев и обновляем информацию, хранящуюся в нашем системном репозитории.
Для этого используется команда apt-get update:
$ sudo apt-get update
[sudo] password for user:
Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB]
Hit:2 http://ng.archive.ubuntu.com/ubuntu focal InRelease
Hit:3 http://ppa.launchpad.net/c2d4u.team/c2d4u4.0+/ubuntu focal InRelease
...
Ign:15 https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 InRelease
...
Err:26 https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 Release.gpg
Fetched 16.5 MB in 16s (1,012 kB/s)
Reading package lists... Done
Давайте проверим полученные результаты:
- Get: получение новой версии пакета
- Hit: версия пакета не изменилась
- Ign: программа игнорирует пакет
- Err: показывает, что произошла ошибка
Далее мы обновляем их:
$ sudo apt-get -y upgrade
[sudo] password for user:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
accountsservice amd64-microcode apache2 apache2-bin
...
431 upgraded, 0 newly installed, 0 to remove and 6 not upgraded.
Need to get 809 MB of archives.
After this operation, 72.7 MB of additional disk space will be used.
Get:1 https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4/multiverse amd64 mongodb-org-mongos amd64 4.4.28 [16.1 MB]
...
Ign:293 http://ppa.launchpad.net/c2d4u.team/c2d4u4.0+/ubuntu focal/main amd64 r-cran-ggplot2 all 3.4.4-1cran1.2004.0
...
Err:313 http://ng.archive.ubuntu.com/ubuntu focal-updates/main amd64 libjavascriptcoregtk-4.0-18 amd64 2.38.6-0ubuntu0.20.04.1
...
Кроме того, мы можем использовать apt-get для деинсталляции, переустановки, удаления и очистки пакетов из нашей системы.
3. pip install
И наоборот, мы используем pip для загрузки и установки пакетов Python из индекса пакетов Python (PyPi).
PyPi, размещенный Python Software Foundation, – это специализированный менеджер пакетов, который работает только с пакетами Python.
Мы используем pip для установки более широкого спектра пакетов Python, которые мы обычно не можем найти с помощью apt-get.
3.1. Установка
В отличие от apt-get, для выполнения команд pip нам не обязательно нужен доступ администратора.
Основной синтаксис для установки пакета Python похож на синтаксис apt-get:
$ pip install [package(s)]
Также мы можем установить несколько пакетов, отделив каждый из них пробелом.
Более того, с помощью флага -user мы можем установить пакеты, предназначенные для конкретного пользователя:
$ pip install --user [package(s)]
Это позволит установить пакет в каталог установки пользователя Python на нашей платформе.
Это значение используется по умолчанию, если мы не работаем от имени root или не находимся в virtual-env.
3.2. Обновление пакетов
Мы видим небольшое отличие в команде обновления пакетов с помощью pip.
В отличие от apt-get, мы используем флаг -upgrade для обновления версии пакетов в нашей системе:
$ pip install --upgrade flask
Collecting flask
Downloading flask-3.0.2-py3-none-any.whl (101 kB)
|████████████████████████████████| 101 kB 246 kB/s
Requirement already satisfied, skipping upgrade: importlib-metadata>=3.6.0; python_version < "3.10" in /usr/local/lib/python3.8/dist-packages (from flask) (4.12.0)
Collecting Werkzeug>=3.0.0
Downloading werkzeug-3.0.1-py3-none-any.whl (226 kB)
|████████████████████████████████| 226 kB 151 kB/s
Requirement already satisfied, skipping upgrade: Jinja2>=3.1.2 in /usr/local/lib/python3.8/dist-packages (from flask) (3.1.2)
Requirement already satisfied, skipping upgrade: blinker>=1.6.2 in /usr/local/lib/python3.8/dist-packages (from flask) (1.6.2)
...
ERROR: flask-babel 3.0.1 has requirement Flask<3.0.0,>=2.0.0, but you'll have flask 3.0.2 which is incompatible.
Installing collected packages: Werkzeug, flask
Successfully installed Werkzeug-3.0.1 flask-3.0.2
Очевидно, что это позволит загрузить и установить более новую версию пакета, пропустив те, которые уже устарели.
Аналогично, мы можем использовать pip для удаления пакета.
4. Ключевые различия
Мы рассмотрели оба инструмента управления пакетами и их применение.
Поэтому давайте определим их ключевые различия.
Мы можем разделить их различия на пять основных категорий:
Категории | apt-get install | pip-install |
---|---|---|
Контроль доступа | requires root/admin access | allows flexibility of user mode installation using –user flag |
Область применения | installs packages in a system-wide location | can install packages in a virtual-env |
Ограничение пакетов | фокусируется в основном на общесистемных пакетах, поэтому пакеты Python ограничены. | специализируется на пакетах Python, что приводит к увеличению количества доступных пакетов Python |
Контроль версий | Canonical может разместить только самую последнюю версию или самое последнее обновление любого пакета, поэтому мы можем установить только самую последнюю версию пакета. | Мы можем выбрать нужную нам версию пакета, указав ее во время установки |
Управление зависимостями | автоматически разрешает и управляет зависимостями пакетов, обеспечивая совместимость всей системы | управляет зависимостями пакетов python в окружении проекта |
5. Использование
Хотя мы можем использовать обе команды для установки пакетов Python без особых усилий, есть случаи, когда мы можем предпочесть одну из них другой.
В частности, если мы работаем в virtual env, хотим установить старую версию пакета или пакет, размещенный на PyPi, то лучше использовать pip install.
В противном случае мы можем использовать любую из этих двух команд для выполнения работы.
6. Заключение
В этой статье мы рассмотрели и обсудили две популярные команды управления пакетами: apt-get install и pip install, определив их применение и использование.
Мы также выявили ключевые различия между ними, показав разницу в области контроля версий, управления зависимостями, области применения и привилегий доступа.
- 🐍 Как установить PIP на macOS
- 🐍 Как установить пакеты Python из GitHub на Linux
- 🐍 Как найти сведения о системе Linux с помощью Python