Использование apt
dpkg
Самая простая операция — установка .deb пакета, которую можно выполнить с помощью опции i
Перед установкой пакета dpkg система проверяет, есть ли в ней предыдущая версия. Если есть, пакет будет обновлен до новой версии. Если нет, будет установлена новая копия.
dpkg проверит, установлены ли эти зависимости в вашей системе, и не сможет установить пакет, если они отсутствуют. В этом случае dpkg покажет, каких пакетов не хватает
Пользователь должен сам найти .deb пакеты с соответствующими зависимостями и установить их.
При удалении также выполняется проверка зависимостей, и пакет нельзя удалить, пока не будут удалены все остальные пакеты, от которых он зависит
В dpkg -r можно передать несколько названий пакетов, и все они будут удалены одновременно.
При удалении пакета в системе остаются соответствующие файлы конфигурации. Если вы хотите удалить все, что связано с пакетом, используйте опцию -P (очистить) вместо -r.
Вы можете принудительно dpkg установить или удалить пакет, даже если не соблюдены зависимости, добавив параметр --force, как в dpkg -i --force PACKAGENAME. Однако в этом случае установленный пакет или даже вся ваша система, скорее всего, будут работать некорректно. Не используйте --force, если не уверены в своих действиях.
Чтобы получить информацию о пакете .deb, такую как его версия, архитектура, разработчик, зависимости и многое другое, используйте команду dpkg с параметром -I, за которым следует имя файла пакета, который вы хотите проверить
Чтобы получить список всех пакетов, установленных в вашей системе, используйте опцию --get-selections, например dpkg --get-selections
Вы также можете получить список всех файлов, установленных конкретным пакетом, передав параметр -L PACKAGENAME в dpkg
Иногда может возникнуть необходимость узнать, какому пакету принадлежит определенный файл в вашей системе. Это можно сделать с помощью утилиты dpkg-query, указав параметр -S и путь к нужному файлу
После установки пакета выполняется этап настройки под названием post-install, в ходе которого запускается скрипт, настраивающий все необходимое для работы программного обеспечения, например разрешения, расположение файлов конфигурации и т. д. Кроме того, пользователю могут быть заданы вопросы, чтобы он мог указать свои предпочтения в отношении работы программного обеспечения.
Иногда из-за поврежденного или неправильно сформированного файла конфигурации может потребоваться восстановить исходные настройки пакета. Или вы можете захотеть изменить ответы на первоначальные вопросы о конфигурации. Для этого запустите утилиту dpkg-reconfigure и укажите название пакета.
Эта программа создаст резервную копию старых файлов конфигурации, распакует новые в нужные каталоги и запустит скрипт post-install, предоставленный пакетом, как если бы пакет устанавливался впервые.
#Установка пакета
dpkg -i PACKAGENAME
#Удаление пакета
dpkg -r p7zip
#Удаление пакета и все что связано с пакетом
dpkg -P p7zip
#Информация о пакете
dpkg -I google-chrome-stable_current_amd64.deb
#получить список всех пакетов, установленных в вашей системе
dpkg --get-selections
#получить список всех файлов, установленных конкретным пакетом
dpkg -L unrar
#узнать, какому пакету принадлежит определенный файл
dpkg-query -S /usr/lib/git-core/git-unpack-file
#Реконфигурация пакета
sudo dpkg-reconfigure tzdata
apt
APT предоставляет такие функции, как расширенный поиск и автоматическое разрешение зависимостей.
APT не является «заменой» для dpkg. Можно сказать, что это «интерфейс», упрощающий работу и восполняющий пробелы в функционале dpkg, например в разрешении зависимостей
APT работает в связке с репозиториями программного обеспечения, в которых содержатся пакеты, доступные для установки. Такие репозитории могут находиться на локальном или удаленном сервере или (что встречается реже) даже на компакт-диске.
Дистрибутивы Linux, такие как Debian и Ubuntu, имеют собственные репозитории, а разработчики или группы пользователей могут создавать собственные репозитории для размещения программного обеспечения, недоступного в основных репозиториях дистрибутива.
apt-get - используется для загрузки, установки, обновления или удаления пакетов из системы.
apt-cache - используется для выполнения операций, таких как поиск, в индексе пакета.
apt-file - Используется для поиска файлов внутри пакетов.
Существует также более «дружелюбная» утилита под названием просто apt, объединяющая в себе наиболее часто используемые функции apt-get и apt-cache. Многие команды для apt совпадают с командами для apt-get, поэтому во многих случаях их можно использовать как взаимозаменяемые
Перед установкой или обновлением программного обеспечения с помощью APT рекомендуется сначала обновить индекс пакетов, чтобы получить информацию о новых и обновленных пакетах. Это делается с помощью команды apt-get, за которой следует параметр update:
apt-get update
Имейте в виду, что при установке или удалении пакетов APT автоматически разрешает зависимости. Это означает, что все дополнительные пакеты, необходимые для устанавливаемого пакета также будут установлены, а пакеты, зависящие от удаляемого пакета также будут удалены. APT всегда показывает, что будет установлено или удалено
При удалении пакета соответствующие файлы конфигурации остаются в системе. Чтобы удалить пакет и все файлы конфигурации, используйте параметр purge вместо remove или параметр remove с опцией --purge
В системе могут возникать «нарушенные зависимости». Это означает, что один или несколько установленных пакетов зависят от других пакетов, которые не были установлены или больше не существуют. Это может произойти из-за ошибки APT или из-за того, что пакет был установлен вручную.
Чтобы решить эту проблему, используйте команду apt-get install -f . Она попытается «исправить» поврежденные пакеты, установив недостающие зависимости, чтобы все пакеты снова были совместимы друг с другом.
При выполнении команды upgrade Сводка в нижней части выходных данных показывает, сколько пакетов будет обновлено, сколько будет установлено, удалено или сохранено обратно, общий размер загрузки и сколько дополнительного места на диске потребуется для завершения операции.
Как и в случае с dpkg, apt-get сначала проверит, установлена ли предыдущая версия пакета. Если да, то пакет будет обновлен до последней версии, доступной в репозитории. Если нет, будет установлена новая копия
#обновление индексов пакетов
apt-get update
#Установка пакетов
apt-get install vim
#Удаление пакета
apt-get remove vim
#Удаление пакета и все что с ним связано (конфиг)
apt-get purge p7zip
#все установленные пакеты до последних версий
apt-get update
apt-get upgrade
Локальный кэш
При установке или обновлении пакета соответствующий .deb файл загружается в локальный каталог кэша перед установкой пакета.
По умолчанию этот каталог находится по адресу /var/cache/apt/archives
Частично загруженные файлы копируются в /var/cache/apt/archives/partial/
По мере установки и обновления пакетов каталог кэша может сильно разрастись. Чтобы освободить место, можно очистить кэш с помощью команды apt-get clean . При этом будет удалено содержимое каталогов /var/cache/apt/archives и /var/cache/apt/archives/partial/
Поиск пакетов
apt-cache можно использовать для выполнения операций с индексом пакетов, таких как поиск определенного пакета или вывод списка пакетов, содержащих определенный файл.
Чтобы выполнить поиск, используйте apt-cache search и введите шаблон поиска. На выходе вы получите список всех пакетов, в названии, описании или файлах которых есть указанный шаблон.
Также можно использовать apt search вместо apt-cache search и apt show вместо apt-cache show.
#Поиск пакета по шаблону
apt-cache search p7zip
#Полная информация о пакете
apt-cache show liblzma5
Список источников
APT использует список источников, чтобы знать, откуда брать пакеты.
Этот список хранится в файле sources.list, расположенном в каталоге /etc/apt
deb http://us.archive.ubuntu.com/ubuntu/ disco main restricted universe multiverse
deb - тип архива, Репозиторий может содержать пакеты с готовым к запуску программным обеспечением (бинарные пакеты, тип deb) или с исходным кодом этого программного обеспечения (исходные пакеты, тип deb-src)
http://us..... - URL-адрес репозитория.
disco — это кодовое имя Ubuntu, название дистрибутива
main - компонент представляет собой набор пакетов
В разных дистрибутивах Linux эти компоненты могут отличаться
Для ubuntu:
main - содержит официально поддерживаемые пакеты с открытым исходным кодом
restricted - содержит официально поддерживаемое программное обеспечение с закрытым исходным кодом, например драйверы для видеокарт.
universe - содержит программное обеспечение с открытым исходным кодом, поддерживаемое сообществом
multiverse - содержит программное обеспечение с закрытым исходным кодом или патентами.
Для debian:
main - состоит из пакетов, соответствующих Руководству по свободному программному обеспечению Debian (DFSG), работа которых не зависит от программного обеспечения за пределами этой области. Включенные в список пакеты считаются частью дистрибутива Debian.
contrib - содержит пакеты, соответствующие требованиям DFSG, но зависящие от других пакетов, которых нет в main.
non-free - содержит пакеты, не соответствующие требованиям DFSG.
security - содержит обновления для системы безопасности.
backports - содержит более новые версии пакетов из main. Цикл разработки стабильных версий Debian довольно длительный (около двух лет), и это гарантирует, что пользователи смогут получать самые актуальные пакеты без необходимости вносить изменения в main основной репозиторий.
В каталог /etc/apt/sources.list.d можно добавить файлы с дополнительными репозиториями, которые будут использоваться APT, без необходимости вносить изменения в основной файл /etc/apt/sources.list
apt-file
Утилита под названием apt-file позволяет выполнять дополнительные операции с индексом пакетов, например просматривать содержимое пакета или находить пакет, содержащий определенный файл. Эта утилита может быть не установлена в вашей системе по умолчанию
apt-get install apt-file
#обновить кэш пакетов, используемых для apt-file
apt-file update
#просмотреть содержимое пакета
apt-file list unrar
#можно использовать apt list вместо apt-file list
apt list git
#выполнить поиск файла во всех пакетах, используя параметр search
apt-file search libSDL2.so
#альтернативный поиск пакета по названию файла
dpkg-query -S 7zr.1.gz
#узнать, в каком пакете находится файл /usr/bin/unrar
apt-file search /usr/bin/unrar
#узнать, в каком пакете находится файл
apt-file search zzip-io.h
#проигнорировать предупреждение о зависимости и удалить пакет с помощью dpkg
#чего делть не стоит без понимания последствий
dpkg -r --force git
#получить дополнительную информацию о пакете под названием midori
apt-cache show midori
Разница между apt-file search и dpkg-query заключается в том, что apt-file search также выполняет поиск по неустановленным пакетам, в то время как dpkg-query может отображать только файлы, относящиеся к установленному пакету.
Пакет deb
Программы упаковываются в пакеты с расширением deb, туда помещается различная информация:
Набор файлов, верификация содержимого и атрибутов
Зависимости от наличия других пакетов и их версий
Скрипты исполняемые при установке и удалениии
Метаданные пакета - имя, версия, сборка
Триггеры
Триггеры
Триггер - это скрипт
Позволяет изменять состояние пакета в зависимости от статуса установки другого пакета.
Информация о пакете
Посмотреть информацию о пакете:
apt show name_package
ABI
Двоичный интерфейс приложений - набор соглашений для доступа приложений к операционной системе и низкоуровневым сервисам, спроектирован для переносимости исполняемого кода между машинами, имеющими совместимые ABI ABI регламентирует использование регистров процесора, состав и формат системных вызовов одного модуля другим, формат передачи аргументов и возвращаемых значений, организацию стека, типы данных, форматы файлов.Если объектный файл был создан компилятором, поддерживающим определенный EABI, тогда компановка возможна любым другим компановщиком поддерживающий этот же EABI.
В библиотеках linux ABI документирует интерфейсы, которые разработчик определил как стабильные
Зависимости
Зависимости - библиотеки, программы, драйвера, другое...
Обновление кэша
В официальных репозиториях возможны обновления, например ссылки на какой то пакет, поэтому перед установкой или обновлением пакетов, необходимо синхронизировать локальный кэш с репозиторием, для этого в debian подобных, есть следующая команда:
apt update
Полезные команды в менеджере apt
apt help
Поиск установленного пакета по названию(установлен, не установлен)
apt list yandex*
Различная информация о пакете, независимо от того, установлен он в систему или нет
apt show vim
Удаляет пакет вместе с конфигурационными файлами пользователя
apt purge postgresql*
Обновляет локальный репозиторий и удаляет неактуальные версии пакетов
apt dist-upgrade
apt full-upgrade
Структура пакетов deb
https://hackware.ru/?p=8185
Сборка пакетов deb
https://losst.ru/sozdanie-deb-paketov
https://www.dmosk.ru/instruktions.php?object=build-deb
apt-file
Поиск файлов в пакетах, как в установленных так и в не установленных.
apt install apt-file
apt-file update
apt-file search test.h
apt-file search test.h
Зависимости пакета
apt depends vim
apt-cache depends
Зависимость пакетов от данного пакета
Следует проверить перед удалением, если не уверен
apt-cache showpkg nmap
Cписок изменений пакета
Cписок изменений пакета, сделанных в различных версиях программы.
apt changelog vim
Скачать пакет без установки
apt download nmap
Проверить cache приложений и сломанные зависимости
apt-get check nmap
Установить локальный .deb пакет
#Установка без проверки зависимости
sudo dpkg -i nmap_7.60-1ubuntu5_amd64.deb
#Опция f пытается привести в норму нарушенные зависимости. Опция f используется с командами install/remove, может пропустить какие то пакеты, чтобы найти решение.
apt install -f
#Установка пакета и его зависимостей из указанной директории ./
apt install ./nmap_7.60-1ubuntu5_amd64.deb
Удаление ненужных зависимостей
sudo apt autoremove
Отчистить кэш пакетов
В директории /var/cache/apt/archives хранится кэш пакетов на случай если необходимо откатиться на старую версию пакета.
apt clean
Ошибка: 404 Not Found [IP: 172.89.202.113 443]
Возникает при использовании команды: apt install, apt upgrade, apt full-upgrade, apt dist-upgrade
При выполнении этих команд информация о пакетах берется из локального кэша. Кэш автоматически не обновляется. Данные на удаленном сервере с пакетами могут изменяться, удаляться, при этом кэш об этом не знает, поэтому при запуске команд ошибка 404 говорит о том, что файл на сервере 172.89.202.113 443 не найден.
Данную проблему можно решить обновлением списка пакетов:
apt update
Далее можно обновить сами пакеты:
apt full-upgrade
Ошибка: Соединение разорвано [IP: 92.99.230.13 80]
Данная ошибка говорит о том, что при попытке скачать пакет, соединение по какой то причине было разорвано, в таком случае можно попробовать заново запустить команду
E: Невозможно исправить ошибки: у вас зафиксированы сломанные пакеты.
Данная ошибка может возникать по разным причинам:
Старый список пакетов, обновить список:
apt update --fix-missing
Установка с помощью dpkg и как следствие отсутствие нужных зависимостей, в таком случае можно попробовать доустановить нужные зависимости:
apt install -f
Возможно в системе есть старые ненужные пакеты, которые мешают установке
Для удаления таких пакетов:
apt clean
Следующая команда покажет битые пакеты, которые не установлены
apt autoremove
То же самое можно проделать с помощью команды dpkg
dpkg --configure -a
Чтобы удалить такие пакеты:
dpkg --remove -force --force-remove-reinstreq имя_пакета
Ошибка битых пакетов чаще всего возникает, когда при установке программы не хватает зависимостей, в таком случае их можно установить вручную, более подробно рассказано в следующей статье: здесь






