APT

Программы для конфигурации и управления операционной системой
Правила форума
Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа.
Аватара пользователя

Автор темы
Chocobo
Сообщения: 5556
Зарегистрирован: 27 авг 2016, 19:57
Решено: 130
Откуда: НН
Благодарил (а): 411 раз
Поблагодарили: 1440 раз

APT

Сообщение Chocobo » 01 сен 2017, 16:16

APT (Advanced Package Tool) - Пакетный менеджер и одноименная утилита командной строки для взаимодействия с пакетами программного обеспечения в DEB-based дистрибутивах (Linux Mint, Ubuntu, Debian, etc). Его можно использовать его для поиска и установки новых пакетов, обновления или удаления пакетов и т. д.

На данный моменту тилита apt пришла на смену прежнему варианту, носившему название apt-get. Основные различия между ними - чуть более лаконичный синтаксис комманд в apt, несколько новых параметров вроде листинга пакетов по условию и отображение прогрессбара во время выполнения операций над пакетами. ну и т.к. apt-get уже довольно давно не актуален в нашем дистрибутиве (хотя его и можно использовать как раньше) - рассмотрим именно apt

Обновление базы данных пакетов с помощью apt
Фактически apt работает с базой данных формируемой из доступных в подключенных репозиториях пакетов. Если списки пакетов не обновляются, система не будет знать, имеются ли новые версии пакетов для обновления.
обновление спиков пакетов можно выполнить используя команду apt-update, т.к. эта операция затрагивает важные околосистемные файлы пакетного менеджера - будет запрошен пароль для повышения привелегий. Затем будет отражена информация о списках пакетов, получаемых с разных серверов указанных в "Источниках Приложений"
Снимок экрана от 2017-09-01 15-17-19.png
Также в этом списке каждая запись может иметь три статуса (сокращения в начале строки):
  • Сущ (англ Hit) - означает, что указанный файл уже существует в локальной базе пакетов и не изменялся с последнего обновления списков ПО
  • Игн (англ Ign) - Запрошенный файл не существует на сервере, или же его не получилось скачать, тем не менее это никак не повлияет на ход обновления, поэтому не считается ошибкой
  • Пол (англ get) - обозначает что файл успешно скачан и будет учтен при построении локального списка пакетов для обновления
По завершению работы команды будет выведена информация о полученном объеме информации и количество пакетов доступных для обновления (apt list рассмотрим чуть ниже)
Снимок экрана от 2017-09-01 15-19-19.png
Обновление установленных пакетов
После обновления базы данных пакетов можно приступить к обновлению самих программ. Сделать это можно одной командой - apt upgrade. Перед обновлением будет показано количество и названия пакетов которые подлежат обновлению
Снимок экрана от 2017-09-01 15-46-08.png
Также для обновления служит команда apt full-upgrade, которая делает почти то же самое, за исключением того, что предложит также удалить установленные программы, если среди них есть конфликты с обновлениями пакетов.

Ну и стоит учесть, что в Linux MInt обычно нет необходимости в подобном обновлении средвами apt, т.к. внашем дистрибутиве предусмотрен отличный Менеджер Обновлений (mintupdate), который распределяет пакеты между пятью уровнями, по степени их влияния на систему, что обеспечивает долгую и счастливую жизнь вашей ОС :smile: Плюс в менеджере обновлений применется распараллеливание загрузки в несколько потоков, что может значительно ускорить загрузку обновлений из интернета. Для тех же, кто просто хочет использовать терминал для обновления системы - есть и консольная версия утилиты, mintupdate-cli (в общем, apt upgrade идет нафиг :crazy: но в рамках этой темы в любом случае пусть будет описан)

Установка пакетов
Для установки пакета - используем команду apt install имяпакета
Перед установкой будут отображены зависимые и рекомендуемые к установке пакеты, их объем и запрос подтверждения на выполнение операции
Снимок экрана от 2017-09-01 16-04-47.png
Если запрошенный пакет уже установлен, но имеются доступные обновления - его будет предложено обновить. Если обовлений нет - apt скажет, что выполнять нечего.


В случае если имя пакета полностью не известно - двойное нажатие клавиши Tab выведет все варианты которые совпадают с уже введенной частью названия (на самом деле автодополнение работает не только с install, но и в других операциях):
Снимок экрана от 2017-09-01 18-32-16.png
Можно установить сразу несколько пакетов путем простого перечисления их через пробел:
apt install первый_пакет второй_пакет

В подключенных репозиториях может содержаться несколько версий одного и того же пакета, по умолчанию выбирается самый новый пакет из репозитория с наивысшим приоритетом (Pin-Priority). Обойти это поведение можно указав версию пакета через знак равенства после его имени
apt install имяпакета=1.0.2
Снимок экрана от 2017-09-01 18-38-44.png
Ключ --no-upgrade используется если нам нужно только установить пакет которого нет в системе, и ничего не делать если такой пакет уже установлен, независимо от доступных для него обновлений
Снимок экрана от 2017-09-01 18-47-21.png
Ключ --only upgrade используется для обратного поведения - в случае если пакет установлен для него будут проверены и установлены обновления, а если пакет не установлен то не делать ничего.
Снимок экрана от 2017-09-01 18-47-55.png
У многих программ кроме прямых зависимостей,необходимых для работы программы зачастую имеются еще рекомендованные (recommends) и предлагаемые (suggests) к установке пакеты, например отдельно распространяемые наборы плагинов, которые расширят функционал, документацию, локализацию и т.д.
Чтоб установить пакет вместе с его рекомендованными пакетами - добавлем ключ --install-recommends
Соответсвенно для предлагаемых пакетов - используем --install-suggests
Оба ключа можно использовать в одной комманде:
Снимок экрана от 2017-09-01 19-44-01.png
Удаление пакетов
Для удаления пакетов служат команды remove и purge
apt remove имяпакета - удалит пакет из системы, но оставит его конфигурации в системных директориях. И в случае повтороной установки пакета - он будет использовать эти файлы в своей работе.
apt purge имяпакета - удалит все следы программы в системных диретокриях, может быть полезно когда что-то явно сломалось в конфигурациях и нужно установить программу начисто
remove.png
Удаление также возможно используя *, для удаления всех пакетов в которых есть вхождение запрошенной подстроки.
Под спойлер оно спрятанао неспроста, т.к. немало пользователей уже угробили свои системы когда используя этот метод улетело много пакетов по зависимостям. Для примера печально известный apt purge libreoffice*
purge_w.png
Тут можно увидеть как вместе в офисным пакетом удалятся mint-artwork-gnome, mint-meta-cinnamon, mint-themes. После перезагрузки система уже не порадует :dash2:
Так чтоб делать так не стоит. Ну или очень пристально следить за тем что удалится в результате
После удаления одних пакетов - другие, которые были подтянуты как зависимости или рекомендации могут стать неактуальными, т.к. больше никто их не использует. Для очистки системы от подобных неиспользуемых пакетов - apt autoremove. apt знает связи между пакетами и предложит список тех из них, которые можно безболезненно удалить
Снимок экрана от 2017-09-01 16-03-46.png
Поиск пакетов и информации о них
Для поиска пакетов по части их имени или описания можно использовать apt search чтонибудь
В результате будет выведен список пакетов сколь-либо подходящих под заданный паттерн
search.png
Чтоб просмотреть доступные версии и источник пакета - apt policy имяпакета
Будут выведены версия которая установлена на данный момент (если установлена), предлагаемая к установке актуальная версия, список репозиториев в которых доступен данный пакет
policy.png
Наиболее полную информацию о пакете можно получить с помощью команды apt-show имяпакета. Тут будет более чем исчерпывающая информация обо всем что может потребоваться.
show.png
В случае если доступно несколь версий - добавить ключ -a, чтоб вывести поочередно о каждом.

apt depends имяпакета - Просмотр зависимостей и конфликтов - т.е. тех дополнительных пакетов, которые необходимы для работы программы и будут установлены вместе с ним. И заодно тех, которые вместе с выбранным пакетом одновременно сосуществать не могут, и должны быть удалены перед установкой запрошенного.
depends.png
Схожая команда apt rdepends имяпакета - используется для вывода списка обратных зависимостей, т.е это будут пакеты в которых запрошенный указан как прямая зависимость, и при их установке будет произведена и его установка
rdepends.png
todo: list, hold
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Аватара пользователя

root
Сообщения: 648
Зарегистрирован: 16 фев 2017, 17:03
Решено: 3
Откуда: г. Хабаровск
Благодарил (а): 192 раза
Поблагодарили: 152 раза

APT

Сообщение root » 02 сен 2017, 07:19

Chocobo, тема хорошая, скриншоты - не очень) (скринить лучше непрозрачный терминал)
User: adminka
OS: Linux Mint 18.2 Sonya Cinnamon :thumbs:
Kernel: 4.11.0-14-generic
Эмоджи смайлы                  


Аватара пользователя

Автор темы
Chocobo
Сообщения: 5556
Зарегистрирован: 27 авг 2016, 19:57
Решено: 130
Откуда: НН
Благодарил (а): 411 раз
Поблагодарили: 1440 раз

APT

Сообщение Chocobo » 02 сен 2017, 08:38

root, Уж какой есть) может потом как-нибудь перещелкаю если не лень будет


027
Сообщения: 26
Зарегистрирован: 31 авг 2017, 06:05
Благодарил (а): 7 раз
Поблагодарили: 2 раза

APT

Сообщение 027 » 02 сен 2017, 18:59

Chocobo писал(а): На данный моменту тилита apt пришла на смену прежнему варианту, носившему название apt-get.
Во-первых, не только apt-get, а еще и apt-cache и apt-mark.
Во-вторых, не на смену, эти утилиты никуда не делись.
В-третьих, эта утилита — маленький скрипт на питоне, живущий тут: /usr/local/bin/apt.

Утилита является всего лишь надстройкой над стандартными командами одноименной системы управления пакетами APT (Advanced Packaging Tool) и предоставляет более короткий и удобный синтаксис. Например, для установки и удаления пакетов вы должны использовать apt-get, а для поиска и просмотра информации apt-cache. Интерфейс не страдает излишним изяществом, мягко говоря.

Утилита apt убирает эти сложности «под капот». Удобно также, что утилита в необходимых случаях сама вызывает sudo. Однако, надо иметь в виду, apt позволяет выполнять лишь самые ходовые команды, а все богатство опций и возможностей по-прежнему требует использования стандартного инструментария пакетного менеджера APT.

Аватара пользователя

symon2014
Сообщения: 1578
Зарегистрирован: 29 авг 2016, 02:17
Решено: 19
Откуда: Феодосия
Благодарил (а): 47 раз
Поблагодарили: 427 раз

APT

Сообщение symon2014 » 02 сен 2017, 19:02

027 писал(а): утилита в необходимых случаях сама вызывает sudo.
Неа, эта фича только для минта. :smile:
:sry:
Debian (9.1) , LMDE2 , LM 18.2 Mate . Благодарности складываем сюда ---> R320161344462


027
Сообщения: 26
Зарегистрирован: 31 авг 2017, 06:05
Благодарил (а): 7 раз
Поблагодарили: 2 раза

APT

Сообщение 027 » 02 сен 2017, 19:03

А мы тут ап чем? ;)
Но таки да, в убунте она этого не умеет.

Аватара пользователя

Автор темы
Chocobo
Сообщения: 5556
Зарегистрирован: 27 авг 2016, 19:57
Решено: 130
Откуда: НН
Благодарил (а): 411 раз
Поблагодарили: 1440 раз

APT

Сообщение Chocobo » 02 сен 2017, 19:08

027 писал(а): Во-первых, не только apt-get, а еще и apt-cache и apt-mark.
apt объединил в себе все указанное.
027 писал(а): Во-вторых, не на смену, эти утилиты никуда не делись.
И об этом тоже указал, что прежний вариант пока доступен. Тем не менее о нем пора забывать, аки service
symon2014 писал(а): фича только для минта.
Да-да-да, у нас есть свой /usr/local/bin/apt - убунта курит :hoho:


027
Сообщения: 26
Зарегистрирован: 31 авг 2017, 06:05
Благодарил (а): 7 раз
Поблагодарили: 2 раза

APT

Сообщение 027 » 02 сен 2017, 19:11

Chocobo писал(а): И об этом тоже указал, что прежний вариант пока доступен. Тем не менее о нем пора забывать, аки service
Никакой это не «прежний вариант», не надо вводить читатей в заблуждение. Это базовый инструментарий.
Утилитка apt — всего лишь интерфейсная надстройка, синтаксический сахар, не более того. И к тому же умеет далеко не все.

Аватара пользователя

Автор темы
Chocobo
Сообщения: 5556
Зарегистрирован: 27 авг 2016, 19:57
Решено: 130
Откуда: НН
Благодарил (а): 411 раз
Поблагодарили: 1440 раз

APT

Сообщение Chocobo » 02 сен 2017, 19:16

027, Что из написанного мной вводит кого-то в заблуждение?
027 писал(а): умеет далеко не все.
Умеет чуть больше чем " apt-get, а еще и apt-cache и apt-mark"


027
Сообщения: 26
Зарегистрирован: 31 авг 2017, 06:05
Благодарил (а): 7 раз
Поблагодарили: 2 раза

APT

Сообщение 027 » 02 сен 2017, 19:17

В убунте своя версия:

Код: Выделить всё

$ which apt
/usr/bin/apt
и это бинарник (ELF). Судо вызывать не умеет, во всяком случае, в убунте 16.04, более поздних под рукой нет.


027
Сообщения: 26
Зарегистрирован: 31 авг 2017, 06:05
Благодарил (а): 7 раз
Поблагодарили: 2 раза

APT

Сообщение 027 » 02 сен 2017, 19:19

Chocobo писал(а): Что из написанного мной вводит кого-то в заблуждение?
Третий раз указываю:
Chocobo писал(а): тилита apt пришла на смену прежнему варианту, носившему название apt-get
Это принципиально неверное утверждение. Вы можете упорствовать и дальше, а мне надоело.

Аватара пользователя

symon2014
Сообщения: 1578
Зарегистрирован: 29 авг 2016, 02:17
Решено: 19
Откуда: Феодосия
Благодарил (а): 47 раз
Поблагодарили: 427 раз

APT

Сообщение symon2014 » 02 сен 2017, 19:23

027, Не ленись, бинарник арт никуда не делся, просто в минте для него есть надстройка на питоне.
Снимок экрана в 2017-09-02 22-21-22.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
:sry:
Debian (9.1) , LMDE2 , LM 18.2 Mate . Благодарности складываем сюда ---> R320161344462

Аватара пользователя

Автор темы
Chocobo
Сообщения: 5556
Зарегистрирован: 27 авг 2016, 19:57
Решено: 130
Откуда: НН
Благодарил (а): 411 раз
Поблагодарили: 1440 раз

APT

Сообщение Chocobo » 02 сен 2017, 19:25

027 писал(а): Судо вызывать не умеет, во всяком случае, в убунте 16.04
А в минтах умеет :blum:
027 писал(а): Это принципиально неверное утверждение.
Это факт, всюду нет смысла использовать apt-get c выходом APT 1.0 и включением его в дистрибутивы.
Можете продолжать вспоминать легаси

И да, так и не было ответа, что же он не умеет :acute:

Аватара пользователя

slant
Сообщения: 301
Зарегистрирован: 21 июн 2017, 15:09
Решено: 5
Поблагодарили: 110 раз

APT

Сообщение slant » 17 окт 2017, 22:11

Извиняюсь за некропостинг, но все-же:
Chocobo писал(а):
02 сен 2017, 19:25
И да, так и не было ответа, что же он не умеет
Например - искать в каком пакете есть файл с определенным именем, как это может сделать apt-file.

Но, я думаю, главным аргументом должны быть слова авторов в документации. Пишем "man apt", и читаем:
DESCRIPTION
apt provides a high-level commandline interface for the package management system. It is intended as an end user interface and enables some options better suited for interactive usage by default compared to more specialized APT tools like apt-get(8) and apt-cache(8).
И в конце:
SCRIPT USAGE AND DIFFERENCES FROM OTHER APT TOOLS
The apt(8) commandline is designed as an end-user tool and it may change behavior between versions. While it tries not to break backward compatibility this is not guaranteed either if a change seems beneficial for interactive use.

All features of apt(8) are available in dedicated APT tools like apt-get(8) and apt-cache(8) as well. apt(8) just changes the default value of some options (see apt.conf(5) and specifically the Binary scope). So you should prefer using these commands (potentially with some additional options enabled) in your scripts as they keep backward compatibility as much as possible.
Т.е. это именно интерфейс пользователя высокого уровня для упрощения синтаксиса - объединения всего основного в одной программе. Чтобы было удобнее писать команды - однотипнее, чем в довольно большом зоопарке специализированных программ.
В принципе, похожую роль играет еще одна надстройка высокого уровня - aptitude. Только она еще и полностью интерактивную работу через псевдографические менюшки позволяет, если вызвана без параметров.

Аватара пользователя

Автор темы
Chocobo
Сообщения: 5556
Зарегистрирован: 27 авг 2016, 19:57
Решено: 130
Откуда: НН
Благодарил (а): 411 раз
Поблагодарили: 1440 раз

APT

Сообщение Chocobo » 17 окт 2017, 22:24

slant, apt-file, насколько я могу судить, находится несколько сбоку (отдельной утилитой)

Код: Выделить всё

▶ apt-file                              
Программа 'apt-file' на данный момент не установлена. Вы можете установить её, выполнив:
sudo apt install apt-file
zsh: command not found: apt-file
~                                                                             ⍉
▶ apt policy apt-file
apt-file:
  Установлен: (отсутствует)
  Кандидат:   2.5.5ubuntu1
  Таблица версий:
     2.5.5ubuntu1 500
        500 http://mirror.corbina.net/ubuntu xenial/universe amd64 Packages
        500 http://mirror.corbina.net/ubuntu xenial/universe i386 Packages
Поэтому все же не соглашусь :smile:

Аватара пользователя

slant
Сообщения: 301
Зарегистрирован: 21 июн 2017, 15:09
Решено: 5
Поблагодарили: 110 раз

APT

Сообщение slant » 17 окт 2017, 22:30

А весь APT состоит из отдельных утилит. Не все из них ставятся по умолчанию. Например есть 4 разных утилиты-транспорта для загрузки из различных источников: https, S3, Spacewalk, и tor. По умолчанию в системе установлен только https транспорт. А есть еще дополнение для загрузки через p2p, и утилита для создания локального зеркала. Это все тоже часть APT. И тоже по умолчанию не ставится.

Аватара пользователя

Автор темы
Chocobo
Сообщения: 5556
Зарегистрирован: 27 авг 2016, 19:57
Решено: 130
Откуда: НН
Благодарил (а): 411 раз
Поблагодарили: 1440 раз

APT

Сообщение Chocobo » 17 окт 2017, 22:36

slant, Плагины - плагинами, но в разрезе беседы про apt VS apt-get/apt-cache/apt-mark - мы все же думаю затрагиваем сам базовый функционал пакетного менеджера, что несет в себе пакет apt :smile:

Код: Выделить всё

▶ dpkg -S /usr/bin/apt    
apt: /usr/bin/apt
▶ dpkg -S /usr/bin/apt-get
apt: /usr/bin/apt-get
▶ dpkg -S /usr/bin/apt-cache 
apt: /usr/bin/apt-cache
▶dpkg -S /usr/bin/apt-mark 
apt: /usr/bin/apt-mark

Аватара пользователя

slant
Сообщения: 301
Зарегистрирован: 21 июн 2017, 15:09
Решено: 5
Поблагодарили: 110 раз

APT

Сообщение slant » 17 окт 2017, 23:34

Так ведь один пакет - это не значит, что в нем весь комплекс. Базовый функционал - да. Но весь комплекс менеджера APT - довольно большой, и далеко не всем нужны все его возможности. Совершенно логично, что он разбит на пакеты и не ставится весь целиком и сразу. Однако это не значит, что какая-то его часть стала вдруг устаревшей legacy, если авторы сами явно об этом не говорят. Чего в документации таки нету. Там говорится лишь о том, что основной функционал интерфейса сведен в единую утилиту высшего уровня apt для удобства пользователя. Но не говорится что она теперь заменяет все остальное. Напротив - прямо рекомендуется использовать классические команды в скриптах для максимальной совместимости.
И вот например - libre office. Он тоже разбит на много пакетов, и они тоже не все они ставятся по умолчанию. Но ведь те что не ставятся - не стали вдруг от этого legacy? Тут та же история.

Аватара пользователя

Автор темы
Chocobo
Сообщения: 5556
Зарегистрирован: 27 авг 2016, 19:57
Решено: 130
Откуда: НН
Благодарил (а): 411 раз
Поблагодарили: 1440 раз

APT

Сообщение Chocobo » 18 окт 2017, 06:13

slant, Так ниде и не говорилось что одна "высокоуровневая обвязка" сегодня же будет охватывать севь компклекс функционала, включая некий apt-make-zbs
Вполне логично, что бинарник /usr/bin/apt знать не знает про бинарник apt-file который не входит в базовую поставку и доставляется отдельно, по желанию. Возможно часть или все из них будут учтены в следующих версиях, кто знает. По сути для обработки apt file сейчас там хватит простого алиаса с проверкой uid, т.к. колдовать особо нечего, на первый взгляд
slant писал(а):
17 окт 2017, 23:34
Чего в документации таки нету.
Тут согласен, выразился не корректно. легаси слово не совсем верно было применено.
slant писал(а):
17 окт 2017, 23:34
Но не говорится что она теперь заменяет все остальное. Напротив - прямо рекомендуется использовать классические команды в скриптах для максимальной совместимости.
Так я 95% времени пользователь, тем более в случае с минтом, чем скриптопейсатель. Поэтому для моего удобства и запилена обсуждаемая утилита, которой пользователю пользоваться предпочтительней)
А так, вообще сложно припомнить, когда в скриптах вызывал последний раз пакетный менеджер.
В ansible разве что, но и там не в явном виде:

Код: Выделить всё

- name: Install the package "foo"
  apt:
    name: foo
    state: present

И тогда встречный вопрос на ту же функционала - аналог apt list --upgradable, и без повышения привелегий для просмотра этого списка?

Аватара пользователя

slant
Сообщения: 301
Зарегистрирован: 21 июн 2017, 15:09
Решено: 5
Поблагодарили: 110 раз

APT

Сообщение slant » 18 окт 2017, 09:04

apt-get upgrade -su
В процессе выдаст не только полный список пакетов который будет обновлен, но еще и детально - что именно с ними будет делать. Т.е. нужна ли будет переконфигурация добавление или удаление чего-то сопутствующего. И кстати - тоже без sudo. :)

Вернуться в «Системные утилиты»