Использование apt
Пакет 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 имя_пакета
Ошибка битых пакетов чаще всего возникает, когда при установке программы не хватает зависимостей, в таком случае их можно установить вручную, более подробно рассказано в следующей статье: здесь