Для Debian GNU / Linux это относится к инструментам apt, apt-get, aptitude, apt-cache, apt-sizes, apt-rdepends, dpkg-deb и apt-mark.
Наличие программных пакетов
Как уже было сказано выше, дистрибутив Linux состоит из множества различных программных пакетов. На сегодняшний день программное обеспечение достаточно сложное, поэтому принято делить программное обеспечение на несколько отдельных пакетов. Эти пакеты можно классифицировать по функциональности или ролям, таким как двоичные пакеты, библиотеки, документация, примеры использования, а также коллекции для конкретных языков и предоставляют только выбранную часть программного обеспечения. Для этого нет фиксированного правила, и разделение осуществляется либо командой разработчиков инструмента, либо сопровождающим пакета, который заботится о программном пакете для вашего дистрибутива Linux. Используя aptitude, на рисунке 1 перечислены пакеты, содержащие переводы для разных языков для веб-браузера Mozilla Firefox.
Рисунок 1: aptitude-firefox.PNG
Такой способ работы позволяет поддерживать каждый пакет отдельным разработчиком или всей командой. Кроме того, разделение на отдельные компоненты позволяет другим программным пакетам также использовать его в своих целях. Требуемый функционал может быть применен, и его не нужно изобретать заново.
Организация пакетов
Инструменты управления пакетами в дистрибутиве Debian GNU / Linux постоянно заботятся о том, чтобы зависимости установленных пакетов полностью соблюдались. Это особенно важно, если программный пакет предназначен для установки, обновления или удаления в вашей системе или из нее. Отсутствующие пакеты добавляются в систему или установленные пакеты удаляются из системы, если они больше не требуются. Рисунок 2 демонстрирует это для удаления пакета 'mc-data' с помощью 'apt-get'. Пакет 'mc-data' рекомендует также автоматически удалить пакет 'mc', потому что его установка без 'mc-data' больше не имеет смысла.
Рисунок 2: apt-get-remove-mc.PNG
Марки и флаги пакетов
Во время работы инструменты управления пакетами соблюдают установленные для пакетов флаги и метки. Они либо устанавливаются автоматически, либо устанавливаются системным администратором вручную. Особенно это поведение относится к флагу «необходимый пакет», который установлен для пакетов, которые не следует удалять. Перед тем, как вы это сделаете, выдается четкое предупреждение (см. Рисунок 3).
Рисунок 3: apt-get-remove.PNG
Также учитываются три отметки «автоматический», «ручной» и «удерживаемый». Они отмечают пакет как автоматически устанавливаемый, установленный вручную или не подлежащий обновлению (сохраните текущую версию). Программный пакет либо помечен как «автоматический», либо «ручной», но не оба сразу.
Среди прочего, команда apt-mark обрабатывает метки и флаги с помощью следующих подкоманд:
- auto: установить пакет как автоматически установленный
- hold: удерживать текущую версию пакета
- manual: установить пакет как установленный вручную
- showauto: показать автоматически установленные пакеты
- showmanual: показать пакеты, установленные вручную
- showhold: список приостановленных пакетов
- unhold: удалить флаг удержания для данного пакета
Чтобы вывести список всех установленных вручную пакетов, выполните эту команду:
$ apt-mark show ручноеслово
абс-гид
ack-grep
acl
acpi
…
$
Чтобы сохранить версию пакета, используйте подкоманду hold. Пример ниже показывает это для пакета mc.
# apt-mark hold mcMC поставлен на удержание
#
Подкоманда 'showhold' выводит список пакетов, которые находятся на удержании (в нашем случае это только пакет 'mc'):
# apt-mark showholdMC
#
Используя альтернативный метод под названием 'apt pinning', пакеты классифицируются по приоритетам. Apt применяет их, чтобы решить, как обращаться с этим программным пакетом и с версиями, доступными в репозитории программного обеспечения.
Описание пакета
Используя альтернативный метод под названием 'apt pinning', пакеты классифицируются по приоритетам. Apt применяет их, чтобы решить, как обращаться с этим программным пакетом и с версиями, доступными в репозитории программного обеспечения.
Каждый программный пакет имеет собственное стандартизированное описание. Среди других полей это описание явно указывает, от каких дополнительных пакетов оно зависит. Инструменты, специфичные для распространения, извлекают эту информацию из описания пакета, вычисляют и визуализируют зависимости для вас, а затем. В следующем примере используется команда apt-cache show для отображения описания пакета poppler-utils (см. Рисунок 4).
Рисунок 4: package-description-poppler-utils.PNG
В описании пакета есть раздел под названием "Зависит от". В этом разделе перечислены другие пакеты программного обеспечения, а также номер версии, от которой зависит текущий пакет. На рисунке 4 этот раздел выделен красной рамкой и показывает, что 'poppler-utils' зависит от пакетов 'libpoppler64', 'libc6', 'libcairo2', 'libfreetype6', 'liblcms2-2', 'libstdc ++ 6' и 'zlib1g'.
Показать зависимости пакета
Чтение описания пакета - сложный способ выяснить зависимости пакета. Далее мы покажем вам, как упростить это.
Есть несколько способов показать зависимости пакетов в командной строке. Для пакета deb в качестве локального файла используйте команду dpkg-deb с двумя параметрами - имя файла пакета и ключевое слово Depends. Пример ниже демонстрирует это для пакета skypeforlinux-64.deb ':
$ dpkg-deb -f Загрузки / skypeforlinux-64.deb Зависитgconf-service, libasound2 (> = 1.0.16), libatk1.0-0 (> = 1.12.4), libc6 (> = 2.17),
libcairo2 (> = 1.2.4), libcups2 (> = 1.4.0), libexpat1 (> = 2.0.1),
libfreetype6 (> = 2.4.2), libgcc1 (> = 1: 4.1.1), libgconf-2-4 (> = 3.2.5),
libgdk-pixbuf2.0-0 (> = 2.22.0), libglib2.0-0 (> = 2.31 год.8), libgtk2.0-0 (> = 2.24.0),
libnspr4 (> = 2: 4.9-2 ~), libnss3 (> = 2: 3.13.4-2 ~), libpango-1.0-0 (> = 1.14.0),
libpangocairo-1.0-0 (> = 1.14.0), libsecret-1-0 (> = 0.7), libv4l-0 (> = 0.5.0),
libx11-6 (> = 2: 1).4.99.1), libx11-xcb1, libxcb1 (> = 1.6), libxcomposite1 (> = 1: 0.3-1),
libxcursor1 (>> 1.1.2), libxdamage1 (> = 1: 1.1), libxext6, libxfixes3,
libxi6 (> = 2: 1).2.99.4), libxrandr2 (> = 2: 1).2.99.3), libxrender1, libxss1,
libxtst6, apt-transport-https, libfontconfig1 (> = 2.11.0), libdbus-1-3 (> = 1.6.18),
libstdc ++ 6 (> = 4.8.1)
$
Чтобы сделать то же самое для установленного пакета, используйте apt-cache. Первый пример объединяет подкоманду show, за которой следует имя пакета. Вывод отправляется команде 'grep', которая фильтрует строку 'Depends':
$ apt-cache show xpdf | grep ЗависитЗависит: libc6 (> = 2.4), libgcc1 (> = 1: 4.1.1), libpoppler46 (> = 0.26 год.2),
libstdc ++ 6 (> = 4.1.1), libx11-6, libxm4 (> = 2.3.4), libxt6
$
Команда 'grep-status -F package -s Depends xpdf' сообщит ту же информацию.
Точнее, во втором примере снова используется apt-cache, но с подкомандой «зависит». За подкомандой следует имя пакета:
$ apt-cache зависит от xpdfxpdf
Зависит: libc6
Зависит: libgcc1
Зависит от: libpoppler46
Зависит от: libstdc ++ 6
Зависит: libx11-6
Зависит: libxm4
Зависит: libxt6
Рекомендует: poppler-utils
poppler-utils: i386
Рекомендует: poppler-data
Рекомендует: gsfonts-x11
Рекомендует: cups-bsd
чашки-BSD: i386
Столкнется с:
Столкнется с:
Столкнется с:
Столкнется с:
Заменяет:
Заменяет:
Заменяет:
Заменяет:
Столкнется с: xpdf: i386
$
Приведенный выше список довольно длинный и может быть сокращен с помощью переключателя '-i' (сокращение от '-important'):
$ apt-cache зависит от -i xpdfxpdf
Зависит: libc6
Зависит: libgcc1
Зависит от: libpoppler46
Зависит от: libstdc ++ 6
Зависит: libx11-6
Зависит: libxm4
Зависит: libxt6
$
Команда 'apt-rdepends' делает то же самое, но с информацией о версии, если это указано в описании:
$ apt-rdepends xpdfЧтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
xpdf
Зависит: libc6 (> = 2.4)
Зависит: libgcc1 (> = 1: 4.1.1)
Зависит: libpoppler46 (> = 0.26 год.2)
Зависит от: libstdc ++ 6 (> = 4.1.1)
Зависит: libx11-6
Зависит: libxm4 (> = 2.3.4)
Зависит: libxt6
libc6
Зависит: libgcc1
…
$
Команда aptitude работает и с переключателями. Для зависимостей используйте переключатель '~ R', за которым следует имя пакета. На рисунке 5 это показано для пакета xpdf. Буква «A» во втором столбце вывода «aptitude» указывает на то, что пакет устанавливается автоматически.
Рисунок 5: aptitude-rdepends.PNG
Зависимости пакетов могут быть немного сложными. Это может помочь графически отобразить зависимости пакетов. Используйте команду «долговое дерево», за которой следует имя пакета, чтобы создать графическое представление зависимостей пакета. Инструмент dot из пакета Graphviz преобразует описание в изображение следующим образом:
$ долговые обязательства xpdf | точка -Tpng> график.PNGНа рисунке 6 вы видите созданное изображение PNG, которое содержит граф зависимостей.
Рисунок 6: точка.PNG
Показать обратные зависимости
До сих пор мы отображали, что ответили на вопрос, какие пакеты требуются для пакета. Есть и обратный путь - так называемые обратные зависимости. Следующие примеры относятся к пакету, а также к пакетам, которые от него зависят. Пример номер один использует apt-cache с подкомандой rdepends следующим образом:
$ apt-cache rdepends xpdfxpdf
Обратные зависимости:
| octave-doc
xpdf: i386
libfontconfig1: i386
| xmds-doc
xfe
wiipdf
| vim-latexsuite
python-scapy
| рубин-тиога
| python-таблицы-док
| хруст страницы
| octave-doc
| muttprint-manual
мозплаггер
mlpost
libmlpost-ocaml-dev
…
$
Пакеты, зависящие от других пакетов, отмечены символом трубы. Эти пакеты не нужно устанавливать в вашей системе, но они должны быть указаны в базе данных пакетов.
В следующем примере aptitude используется для перечисления пакетов, которые имеют жесткую ссылку на пакет xpdf (см. Рисунок 7).
Рисунок 7: поиск способностей.PNG
Проверить установку на отсутствие пакетов
Apt-get предлагает подкоманду check, которая позволяет проверить установку. Если вы видите следующий вывод, пакеты не пропущены:
# apt-get checkЧтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
#
Заключение
Поиск зависимостей пакетов хорошо работает с правильными инструментами. Их правильное использование помогает понять, почему пакеты установлены, а какие могут отсутствовать.
Ссылки и ссылки
- Аксель Бекерт, Франк Хофманн: Das Debian-Paketmanagement-Buch, https: // www.dpmb.org /