📦 Различия между apt-get install и pip install

Разница между apt install и pip install

by itisgood

1. Введение

В мире разработки знание управления пакетами необходимо для поддержания бесперебойного рабочего процесса и правильного функционирования приложений.
При работе с Python в среде Linux выделяются два инструмента управления пакетами: apt-get и pip.
Понимание нюансов этих инструментов поможет нам правильно управлять эффективной средой разработки.
В этом руководстве мы обсудим различия между этими двумя инструментами, их применение и использование.

2. apt-get install

apt-get – это инструмент командной строки, используемый для работы с пакетами в дистрибутивах Linux на базе Debian, таких как Ubuntu, с помощью библиотеки Advanced Package Tool (APT).
Мы используем apt-get install для установки пакетов, включая пакеты Python, из репозиториев, размещенных компанией Canonical, которая является разработчиком Ubuntu.
Этот инструмент упрощает процесс установки и управления пакетами, поскольку мы можем установить пакет и его3 зависимости всего одной командой.

2.1. Установка

Давайте рассмотрим основной синтаксис установки пакета с помощью apt-get:
$ 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, определив их применение и использование.

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

 

You may also like

Leave a Comment