APT

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
Аватара пользователя

Автор темы
Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

APT

#1

01 сен 2017, 19: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
Сообщения: 938
Зарегистрирован: 16 фев 2017, 20:03
Решено: 5
Откуда: г. Хабаровск
Благодарил (а): 268 раз
Поблагодарили: 262 раза
Контактная информация:

APT

#2

02 сен 2017, 10:19

Chocobo, тема хорошая, скриншоты - не очень) (скринить лучше непрозрачный терминал)
Вы не готовы! :pc2:
Изображение

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

Автор темы
Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

APT

#3

02 сен 2017, 11:38

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

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

027
Сообщения: 358
Зарегистрирован: 31 авг 2017, 09:05
Решено: 1
Благодарил (а): 26 раз
Поблагодарили: 53 раза
Контактная информация:

APT

#4

02 сен 2017, 21: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.

no avatar

symon2014

APT

#5

02 сен 2017, 22:02

027 писал(а): утилита в необходимых случаях сама вызывает sudo.
Неа, эта фича только для минта. :smile:

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

027
Сообщения: 358
Зарегистрирован: 31 авг 2017, 09:05
Решено: 1
Благодарил (а): 26 раз
Поблагодарили: 53 раза
Контактная информация:

APT

#6

02 сен 2017, 22:03

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

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

Автор темы
Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

APT

#7

02 сен 2017, 22:08

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

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

027
Сообщения: 358
Зарегистрирован: 31 авг 2017, 09:05
Решено: 1
Благодарил (а): 26 раз
Поблагодарили: 53 раза
Контактная информация:

APT

#8

02 сен 2017, 22:11

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

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

Автор темы
Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

APT

#9

02 сен 2017, 22:16

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

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

027
Сообщения: 358
Зарегистрирован: 31 авг 2017, 09:05
Решено: 1
Благодарил (а): 26 раз
Поблагодарили: 53 раза
Контактная информация:

APT

#10

02 сен 2017, 22:17

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

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

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

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

027
Сообщения: 358
Зарегистрирован: 31 авг 2017, 09:05
Решено: 1
Благодарил (а): 26 раз
Поблагодарили: 53 раза
Контактная информация:

APT

#11

02 сен 2017, 22:19

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

no avatar

symon2014

APT

#12

02 сен 2017, 22:23

027, Не ленись, бинарник арт никуда не делся, просто в минте для него есть надстройка на питоне.
Снимок экрана в 2017-09-02 22-21-22.png

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

Автор темы
Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

APT

#13

02 сен 2017, 22:25

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

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

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

slant
Сообщения: 4504
Зарегистрирован: 21 июн 2017, 18:09
Решено: 99
Благодарил (а): 51 раз
Поблагодарили: 1992 раза
Контактная информация:

APT

#14

18 окт 2017, 01:11

Извиняюсь за некропостинг, но все-же:
Chocobo писал(а):
02 сен 2017, 22: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
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

APT

#15

18 окт 2017, 01: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
Сообщения: 4504
Зарегистрирован: 21 июн 2017, 18:09
Решено: 99
Благодарил (а): 51 раз
Поблагодарили: 1992 раза
Контактная информация:

APT

#16

18 окт 2017, 01:30

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

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

Автор темы
Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

APT

#17

18 окт 2017, 01: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
Сообщения: 4504
Зарегистрирован: 21 июн 2017, 18:09
Решено: 99
Благодарил (а): 51 раз
Поблагодарили: 1992 раза
Контактная информация:

APT

#18

18 окт 2017, 02:34

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

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

Автор темы
Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

APT

#19

18 окт 2017, 09:13

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

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

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

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

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

slant
Сообщения: 4504
Зарегистрирован: 21 июн 2017, 18:09
Решено: 99
Благодарил (а): 51 раз
Поблагодарили: 1992 раза
Контактная информация:

APT

#20

18 окт 2017, 12:04

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

Закрыто

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя