Linux dpkg что это
Linux dpkg что это
Это руководство не следует использовать сопровождающим пакетов, которые хотят понять, как dpkg будет устанавливать их пакеты. Описание того, что делает dpkg при установке и удалении пакетов особенно не полно.
ОПИСАНИЕ
dpkg can be also be used as a front-end to dpkg-deb (1). The following are dpkg-deb actions, and if they are encountered, dpkg just runs dpkg-deb with the parameters given to it: Все эти действия описаны в dpkg-deb (1).
ИНФОРМАЦИЯ О ПАКЕТАХ
СОСТОЯНИЯ ПАКЕТА
ВЫБРАННЫЕ СОСТОЯНИЯ ПАКЕТА
ФЛАГИ ПАКЕТА
ДЕЙСТВИЯ
Установка состоит из следующих шагов:
1. Извлечение управляющих файлов нового пакета.
2. Если другая версия этого пакета была установлена ранее, то запускается сценарий prerm из старого пакета.
4. Распаковываются новые файлы, в тоже самое время сохраняя старые, чтобы если что-то пойдет не так, можно было их восстановить.
5. Если ранее была установлена другая версия этого пакета, то запускается сценарий postrm для старого пакета. Заметим, что этот сценарий запускается после сценария preinst нового пакета, потому что новые файлы записываются в то же самое время, когда удаляются старые.
Настройка состоит из следующих шагов:
1. Распаковка конфигурационных файлов, в то же самое время сохраняя старые конфигурационные файлы, чтобы можно было восстановить их, если что-то пойдет не так.
Удаление пакета состоит из следующих шагов:
1. Запуск сценария prerm
2. Удаление установленных фалов
dpkg-query actions Смотрите dpkg-query (1) для более подробной информации о нижеследующих действиях.
ПАРАМЕТРЫ
Предупреждение: Эти параметры предназначены только для использования экспертами. Использование без полного понимания их действия может нарушить работоспособность всей системы.
all : Turns on (or off) all force options.
downgrade (*): Установить пакет, даже если уже установлена его более новая версия.
Предупреждение: На данный момент dpkg не выполняет проверку зависимостей при переходе на более старую версию и поэтому не предупредит если это поломает зависимости с остальными пакетами. Это может иметь серьёзные последствия: замена на более старую версию системных компонентов первой необходимости может привести к полной неработоспособности системы. Использовать осторожно.
configure-any : Настроить также все распакованные, но ненастроенные пакеты, от которых зависит текущий пакет.
hold : Обрабатывать даже пакеты, помеченные как «зафиксированные».
remove-reinstreq : Удалить пакет, даже если он сломан и отмечен как требующий переустановки. Это может, например, привести к тому, что части пакета останутся в системе, а dpkg про них забудет.
remove-essential : Удалить, даже если это пакет первой необходимости (имеет приоритет «Essential»). Эти пакеты в основном содержат базовые команды Unix. Удаление такого пакета может привести к потере работоспособности системы, так что используйте данный параметр осторожно.
depends : Превратить проблемы с зависимостями в предупреждения.
depends-version : Не обращать внимание на версии при проверке зависимостей.
conflicts : Установить, даже если пакет конфликтует с другим пакетом. Это опасно, так как обычно приводит к перезаписи некоторых файлов.
confmiss : Всегда устанавливать пропущенный конфигурационный файл. Это опасно, так как не будут сохранены изменения (удаление) файла.
overwrite : Перезаписать файл из одного пакета файлом из другого пакета.
overwrite-dir : Перезаписать каталог из одного пакета файлом из другого.
overwrite-diverted : Перезаписать файл с изменённым расположением(diverted) его неизменённой версией.
architecture : Обрабатывать даже пакеты с неправильной архитектурой.
bad-path : В PATH отсутствуют важные программы, поэтому могут возникнуть проблемы.
not-root : Попытаться установить или удалить пакет, даже если не нет прав суперпользователя.
bad-verify : Устанавливать пакет, даже если он не прошёл проверку подлинности.
‘. Errors are reported as `status:
‘ for status change updates; `YYYY-MM-DD HH:MM:SS
ФАЙЛЫ
ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ
ПРИМЕРЫ
To list packages related to the editor vi (1):
To see the entries in /var/lib/dpkg/available of two packages:
Вручную просмотреть список пакетов:
Удалить установленный пакет elvis:
Чтобы установить пакет, сначала нужно найти его в архиве или на CDROM. Файл «available» показывает, что пакет vim находится в секции «editors» («редакторы»):
Получить локальную копию состояний выбранных пакетов:
Вы можете перенести этот файл на другой компьютер и установить его там с помощью:
Заметим, что при этом ничего не будет ни установлено, ни удалено, просто будут заданы состояния запрошенных пакетов. Для того, чтобы на самом деле скачать и установить запрошенные пакеты, вам понадобится другая программа. Например, запустите dselect и выберите «Установить».
Обычно dselect (8) предоставляет более удобный способ изменить состояния выбранных пакетов.
Linux dpkg что это
ВНИМАНИЕ ВНИМАНИЕ ВНИМАНИЕ
Данное руководство было составлено неаккуратно, а теперь еще и устарело.
не нужно использовать для тех пакетов, где люди их устанавливающие хотят понимать как dpkg будет устанавливать их пакеты.
ОПИСАНИЕ
Установка состоит из следующих шагов:
Настройка состоит из следующих шагов:
1. Распаковка конфигурационных файлов и в это же время сохранение старых кофигурационных файлов, так что мы можем восстановить их, если что-то пойдет не так. 2. Запуск сценария postinst, если он есть в данном пакете.
Ищет пакеты выбранные к установке, но которые по каким-либо причинам не были установлены.
Показывает файлы установленные в вашей системе из пакета c названием имя пакета. Однако заметим, что файлы созданные специальными сценариями данного пакета показаны не будут.
Ищет пакеты, что были установлены только частично. dpkg посоветует что делать с ними, чтобы заставить их работать.
Выводит состояние заданного пакета. Это действие показывает информацию об установленном пакете из базы состояний пакетов.
Показвает небольшую подсказку.
Показывает лицензию на dpkg.
Показыает информацию о версии.
Смотрите dpkg-deb(8)
для более подробной информации об этих действиях.
Если пакет удаляется, то возможно, что другой установленный пакет зависит от удаляемого пакета. Задание этой опции приведет к автоматической денастройке пакета, который зависит от удаляемого пакета.
Выдает помощь о опциях отладки
Основная полезная информация по ходу выполнения
Вызов и состояния сценариев обслуживания
Вывод по каждому файлу в ходе работы 100 Подробный вывод по каждому файлу в ходе работы
Вывод по каждому конфигурационному файлу
Подробный вывод по каждому конфигурационному файлу
Зависимости и конфликты
Подробное освещение зависимостей и конфликтов
Подробная ерунда о всяких dpkg/info каталогах
Установить пакет, даже если уже установлена его более новая версия.
Настроить также распакованные, но не настроенные пакеты, что зависят от текущего пакета.
Удалить пакет, даже если он побит и отмечен требованием к переустановке. Это может, например, привести к тому, что части пакета остануться в системе, а затем dpkg о них забудет.
hold: Не беспокоится, если пакет в состоянии hold или нет.
Удалить даже если пакет важен. Важные пакеты содержат базовые команды unix и все такое прочее. Удаление такого пакета может привести к останову работы системы, так что используйте данную опцию с осторожностью.
Установит, даже если пакет конфликтует с другими. Это опасно, так как обычно приводит к перезаписи некоторых файлов.
Удалить, даже если другой пакет зависит от этого. Это обычно приводит к побитости другого пакета.
Не беспокоится о версиях, когда проверяются зависимости. Это обычно приводит к побитости другого пакета.
Модификаторы помеченные (*) включены по умолчанию.
эти опции рекомендуется использовать только экспертам. Их использование без полного понимания их эффекта может разрушить вашу систему.
Игнорировать проверку зависимостей для заданных пакетов (тем не менее, проверка выполняется, но выдаются только предупреждения о конфликтах и ничего в других случаях).
Говорит dpkg чтобы он сохранял память или использовал ее как понадобится.
Выбирает новый или старый формат пакета. Это опция dpkg-deb(8)
Не читать или проверять содержимое файла управления пока строится пакет. Это опция dpkg-deb(8)
Делать все, что необходимо, но не записывать любые изменения. Это используется для просмотра, выполнения заданных действий без модифицирования чего-либо.
Не устанавливать пакет, если новая версия такого же пакета уже установлена.
Работать только с пакетами, что выбраны к установке. Данная пометка делается с помощью dse lect или dpkg, когда он управляет пакетами. Когда, например пакет удаляется, он будет помечен к инсталляции и т.д.
Не устанавливать пакет, если таже версия этого пакетв уже установлена.
ИНФОРМАЦИЯ О ПАКЕТАХ
dpkg обслуживает некоторую полезную информацию о доступных пакетах. Эта информация делится на три класса: состояния, состояния выборки и флаги. Эти величины могут быть изменены с помощью dselect.
Пакет распакован и успешно настроен.
Установка пакета была запущена, но не закончена по какой-либо причине.
Пакет не установлен в вашей системе.
Пакет распакован, но не настроен.
Пакет распакован и настройка была запущена, но пока не завершена по какой-либо причине.
Только конфигурационные файлы пакета существуют в системе.
СОСТОЯНИЕ ВЫБОРКИ ПАКЕТА
Пакет выбран к установке.
Пакет выбран к деустановке (т.е. вы хотите удалить все файлы, исключая конфигурационные)
purge Пакет выбран к очистке (т.е. вы хотите удалить все, даже конфигурационные файлы)
Список доступных пакетов.
Состояния доступных пакетов. Этот файл содержит информацию о пакетах, помеченных к удалению или нет, установленных или нет и т.д. См. секцию ИНФОРМАЦИЯ О ПАКЕТАХ.
См. deb(5)
для информации о этом файле.
dpkg. См. deb(5)
для информации о этом файле.
См. deb(5)
для информации о этом файле.
См. deb(5)
для информации о этом файле.
prerm См. deb(5)
для информации о этом файле.
postrm См. deb(5)
для информации о этом файле.
DPKG_NO_TSTP Определяется для чего-то, если вы предпочитаете, dpkg запускается с новым shell скорее чем приостанавливается dpkg, который в это время выходит из shell.
SHELL Программа dpkg будет запущена в то время как запускается новый shell.
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
Умение устанавливать, обновлять и удалять программное обеспечение относится к важнейшим навыкам работы с любой операционной системой. Поэтому изучение данного вопроса первостепенная задача для любого начинающего пользователя Linux, сразу после того, как он немного осмотрелся в системе. К сожалению, нет единого способа управления ПО, подходящего для всех дистрибутивов, разные семейства предполагают различные подходы, хотя общие принципы во многом совпадают. В данном материале мы будем разбирать вопрос применительно к системам основанным на Debian и Ubuntu.
Пакеты и репозитории
Несмотря на разные форматы, общие принципы построения и управления пакетами в различных Linux системах совпадают, поэтому если вы овладеете приемами работы с одним форматом пакетов, то переучиться на другой не составит особого труда.
Кроме того, при разработке свободного ПО широко используются наработки других проектов, действительно, зачем повторно изобретать велосипед, если нужные функции уже есть в библиотеке другого проекта. Достаточно просто указать нужный пакет в зависимостях, при этом скачивать весь сторонний проект также будет не нужно, достаточно только необходимых пакетов.
Кроме того, установка пакетов в обход репозитория может быть небезопасна и считается правилом дурного тона, хотя и применяется, в основном для коммерческого ПО. Наличие репозиториев также позволяет централизованно обновлять пакеты, достаточно сравнить текущие версии пакетов с версиями в репозитории и скачать нужные обновления. Это удобно, так как одновременно обновляется и система и все установленное в нее ПО.
Кроме того, собственные репозитории существуют и у разработчиков. Поэтому, если вы хотите получать самую свежую версию нужного вам продукта, не дожидаясь пока ее включат в дистрибутив, то можете подключить репозиторий разработчика и обновлять его оттуда.
Как правило типичный дистрибутив на базе Debian имеет четыре основных репозитория:
Каждый репозиторий состоит из нескольких разделов, в Debian это:
В Ubuntu разделы немного иные:
Список подключенных репозиториев хранится в /etc/apt/sources.list, ниже показано содержимое этих файлов в Debian 10 (слева) и Ubuntu 18.04 (справа).
В Debian все достаточно лаконично, подключен только раздел main трех репозиториев Base, Security updates и Stable updates, если вам нужны иные разделы, то их следует подключить самостоятельно, добавив через пробел в нужную строку.
В Ubuntu более развернутый список репозиториев, он полностью не уместился на скриншот, но для понимания структуры записей приведенного фрагмента хватает. Сверху вниз подключены Base и Security updates для поддерживаемых компанией разделов, затем они же вместе для свободного и несвободного ПО поддерживаемого сообществом, а вот Stable backports прописан для всех веток одновременно, еще ниже (за пределами экрана на скриншоте) подключены Security updates и специальный партнерский репозиторий для пакетов партнеров компании Canonical.
Типичная запись репозитория выглядит как строка со следующей структурой:
Адреса репозиториев сохраняются постоянными, отличаясь только именами выпуска, поэтому если вам нужно обновить выпуск, скажем с Debian 9 на Debian 10, то вам просто потребуется заменить везде stretch (имя девятого выпуска) на buster.
Также в Debian можно использовать вместо имен классы выпусков:
Но на практике это не используется, так как при выходе нового релиза вы получите его автоматическое обновление, что в большинстве случаев неприемлемо. Хотя если вы энтузиаст и хотите всегда быть на переднем крае прогресса, то можете везде прописать testing, получив аналог популярных ныне rolling release дистрибутивов, которые не имеют закрепленной версии и всегда предоставляют наиболее свежий срез пакетов, зачастую ценой стабильности.
Для добавления собственных источников пакетов предназначена директория /etc/apt/sources.list.d/ в которой следует располагать файлы с адресами источников и обязательным расширением .list. Хотя их можно прописать и в основной файл, но это считается дурным тоном.
Низкоуровневый менеджер пакетов Dpkg
Данная утилита обычно используется для установки пакетов, скачанных вручную, например, коммерческого ПО. Синтаксис ее довольно прост и легко запоминается. Прежде всего полезно получить информацию о пакете, чтобы узнать его зависимости и возможные конфликты, для этого выполните:
Для установки просто выполните:
Но помните, что dpkg не умеет разрешать зависимости и вы должны будете сделать это вручную, либо скачать все необходимые пакеты и установить их в нужном порядке, это можно поручить dpkg, запустив его с маской в имени пакетов:
Такая конструкция установит все находящиеся в данном расположении deb-пакеты, так что будьте внимательны, либо используйте более узкие маски.
Чтобы получить сведения о всех доступных и установленных пакетах используется ключ -l, но он выведет список всех пакетов, поэтому следует использовать его с маской, например, так:
Так как мы задали имя пакета без подстановочных символов, то информация будет выведена только при полном совпадении заданного имени с именем пакета. Если мы хотим получить больше информации, то можем сделать так:
Теперь мы видим больше пакетов, как установленных в системе, так и доступных в репозитории. Но это не все пакеты, относящиеся к gimp, так как наша маска предписывает искать пакеты, которые начинаются на gimp и игнорирует иные варианты. Поэтому, если вы не уверены, что правильно задали маску, можно пойти другим путем, отдав вывод dpkg команде grep, которая найдет все нужные вхождения.
В этом случае вы получите список только установленных, либо удаленных, но имеющих оставшиеся части (например, конфигурационные файлы) пакетов, но при этом будут найдены все вхождения указанной строки, даже в середине имени, в данном случае мы обнаружили ранее не найденную библиотеку libgimp2.0
Для удаления пакета используйте:
Обратите внимание, что здесь мы указываем не имя deb-файла, а имя установленного пакета, узнать его можно способом, представленным выше. Часто после удаления пакета от него остаются конфигурационные файлы и иные данные, полностью очистить их можно командой:
Но будьте внимательны, при этой операции могут быть удалены пользовательские данные, хранившиеся в стандартных расположениях. Это актуально для таких видов программ, как веб-сервера или СУБД.
На этом мы закончим знакомство с dpkg, ограничившись наиболее часто необходимыми в повседневной деятельности командами, а сами перейдем к более высокоуровневым инструментам.
Улучшенный инструмент для работы с пакетами APT и команды apt и apt-get
Настоящим пакетным менеджером в Debain является APT (Advanced Package Tool, Улучшенный инструмент для работы с пакетами), который умеет работать с репозиториями, разрешать зависимости и взаимодействовать с dpkg, которая, собственно, и занимается установкой пакетов.
APT имеет два интерфейса командной строки: apt-get и более новый apt. Их синтаксис и возможности во многом схожи, и мы будем практически всегда использовать последний, кроме отдельных случаев, когда требуемые возможности поддерживает только apt-get.
Списки пакетов представляют собой простые текстовые файлы с перечнем пакетов в репозитории, данными о пакете, его зависимостях и его расположении в структуре репозитория, один из таких списков открыт на скриншоте выше.
APT всегда работает с локальным кешем списков, поэтому перед любыми действиями с пакетным менеджером следует обновить списки в кеше. Это можно сделать командой, которая должна быть широко известна нашим читателям:
Команда проверяет версии списков в репозитории и при необходимости скачивает их новые версии, после чего анализирует список установленных пакетов и сообщает о доступных обновлениях, увидеть список пакетов, для которых доступны обновления можно командой:
Установить обновления можно командой:
Это безопасный способ обновления, при котором обновляются только установленные пакеты и не происходит установки новых пакетов, если они затрагивают текущие версии, также не удаляются убранные из репозитория пакеты. Если же вы хотите установить самые последние версии пакетов, то следует воспользоваться иной командой:
Следует понимать разницу в работе этих команд, потому что во многих случаях результат их работы оказывается одинаковым и кажется, что разницы между ними нет. Например, в ситуации, показанной на скриншоте выше обе команды отработают одинаково.
Обычные обновления следует выполнять командой upgrade, тогда как dist-upgrade следует использовать для обновления дистрибутива, в том числе и на минорные версии в составе текущего выпуска.
Для установки пакетов следует использовать команду:
Если нужно установить несколько пакетов, то их следует перечислить через пробел. Система проанализирует изменения и либо выполнит установку, либо попросит дополнительного подтверждения, особенно если нужно установить большое количество новых пакетов по зависимостям.
В целом APT хорошо знает свое дело, но мы все равно советуем обращать внимание на состав добавляемых и, особенно, удаляемых пакетов. Также не будет лишним изучить список предлагаемых пакетов, там вы можете найти много интересного и полезного, что позволит расширить возможности устанавливаемого ПО и о чем вы могли даже не догадываться.
Для удаления пакета используйте:
Это удалит сам пакет, но оставит его конфигурационные файлы (если они были изменены) и прочие данные. Для полного удаления пакета со всеми его данными используйте другую команду:
Но будьте внимательны, так как эта команда удалит все данные пакета, в том числе и добавленные пользователем в стандартные расположения, данные, находящиеся в домашних директориях пользователей при этом удалены не будут.
Дополнительно остановимся на таком виде пакетов, как пакеты установленные автоматически. Это пакеты, которые были установлены по зависимостям иных пакетов и после удаления или обновления последних могут более никем не использоваться. APT отслеживает такие пакеты и сообщает о них пользователю.
Удалить их можно командой:
Как можно заметить, APT достаточно дружелюбен к пользователю, постоянно подсказывая ему необходимые команды, что в очередной раз развеивает миф о сложности администрирования Linux, особенно в режиме командной строки.
Также иногда может потребоваться возможность очистить кеш скачанных пакетов, скажем при недостатке места на диске, это можно сделать, введя:
Эта команда полностью очистит кеш, также можно использовать более мягкую очистку с помощью apt-get, который дает возможность удалить из кеша только те пакеты, которые на текущий момент отсутствуют в репозитории (были заменены новыми версиями или удалены):
Затронем еще один интересный момент, допустим вы в своих экспериментах удалили или еще как-либо повредили входящие в состав пакета файлы, но система считает, что пакет установлен и отказывается устанавливать его повторно. Но можно всегда переустановить пакет:
Также иногда бывает нужно проверить что произойдет при установке пакета без его установки, особенно если у нас есть подозрения, что мы можем что-то сломать в системе. Для этого запустите команду установки с ключом -s:
Система смоделирует все необходимые действия и покажет вам результат, после чего вы сможете принять верное решение без опасных экспериментов над ней.
Если вы не знаете точного названия нужного вам пакета, то можно выполнить его поиск командой:
При этом поиск производится не только по имени пакета, но и по его описанию. Это удобно и позволяет быстро найти все связанные с указанной строкой поиска пакеты, даже если они имеют отличное наименование.
Для получения информации о пакете просто введите:
Чтобы отменить фиксацию выполните:
Объем данной статьи не позволяет рассмотреть все возможности apt, поэтому мы ограничились наиболее необходимыми в повседневной деятельности, ну и в завершение небольшая порция юмора. Если запустить команду apt без параметров, то вы увидите краткую справку в самом конце которой будет строка: В APT есть коровья СУПЕРСИЛА. Что это значит? Просто наберите:
И вы увидите старую пасхалку от разработчиков, которая была еще в apt-get, а затем ее заботливо перенесли в apt.
Графические оболочки Aptitude и Synaptic
Кроме родных для APT консольных интерфейсов apt-get и apt существуют и более высокоуровневые оболочки. Одна из них aptitude, которая может работать как в псевдографическом режиме, так и в режиме командной строки, имея синтаксис во многом повторяющий синтаксис apt. Благодаря этому многие воспринимают эту утилиту как еще один интерфейс к APT, хотя основной задачей разработчиков было именно создание псевдографической интерактивной оболочки.
В современных дистрибутивах Debian и Ubuntu aptitude отсутствует в основной поставке и вам потребуется установить этот пакет отдельно.
Если вы используете настольную версию Linux, то вам будет доступен графический менеджер пакетов Synaptic, он также отсутствует в основной поставке основных дистрибутивов и может быть установлен вручную. Данный пакет представляет собой опрятный и удобный графический интерфейс над APT, в тоже время дающий администратору все возможности по тонкой настройке процесса.
Однако не смотря на то, что Aptitude и Synaptic являются зрелыми и эффективными инструментами, мы бы не рекомендовали их использование по крайней мере до тех пор, пока вы не освоите работу с базовым интерфейсом apt.
Магазины приложений
Если мы говорим о настольных системах, то нельзя обойти вниманием магазины приложений. Это модный тренд, пришедший из мира мобильных устройств, но быстро завоевавший популярность и в настольной среде. Действительно, системой могут пользоваться разные люди, они могут являться хорошими специалистами в своей отрасли, но им совершенно не хочется разбираться в устройстве системы, а нужно просто включить компьютер в розетку и работать с ним.
Такой подход может вызвать возмущение у продвинутых пользователей и энтузиастов, но он имеет право на жизнь. Компьютер давно перестал быть уделом избранных и стал неотъемлемой частью нашей жизни. Проведем простую аналогию: сев за руль автомобиля многие из нас просто заводят его, нажимают педали, переключают рычаг коробки передач, не задумываясь о том, какие процессы происходят внутри, а в случае каких-либо неполадок отгоняют машину на сервис.
Ниже показан магазин для актуальной версии Debian
Заключение
Как видим, Debian и основанные на нем системы предоставляют широкий выбор инструментов для управления пакетами, начиная от утилит командной строки и заканчивая магазинами приложений. Каждый найдет инструмент себе по душе. Но для начинающих администраторов мы бы рекомендовали в обязательном порядке осваивать базовые инструменты, такие как dpkg и apt, потому что ситуации бывают разные, а базовые инструменты, в отличие от графической оболочки или псевдографических утилит, доступны всегда.
Дополнительные материалы:
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал: