Управление пакетами Debian: введение в APT

Перейти к содержанию книги Kali Linux Revealed

8 Управление пакетами Debian

После того, как вы ознакомились с основами Linux, пришло время изучить систему управления пакетами дистрибутива на базе Debian. В таких дистрибутивах, включая Kali, пакет Debian представляет собой канонический способ сделать программное обеспечение доступным для конечных пользователей. Понимание системы управления пакетами даст вам представление о том, каким образом структурирована Kali, позволит вам более эффективно решать проблемы и быстро находить помощь и документацию для широкого спектра инструментов и утилит, включенных в Kali Linux.

В этой главе мы представим вашему вниманию систему управления пакетами Debian и познакомим вас с dpkg и набором инструментов apt. Одной из основных преимуществ Kali Linux является гибкость системы управления пакетами, которая использует эти инструменты для обеспечения практически непрерывной инсталляции, обновления, удаления и обработки прикладного программного обеспечения и даже самой базовой операционной системы. Очень важно понять, как эта система работает, чтобы максимально использовать Kali и оптимизировать ваши усилия. Дни болезненных компиляций, провальных обновлений, отладки gcc, долгого создания и настройки различных опций давно прошли, однако, количество доступных приложений значительно выросло и сейчас вам необходимо понимать инструменты, разработанные для их использования. Этот навык также является необходимым, т.к. существует огромное количество инструментов безопасности, которые по причине лицензирования или из-за других нюансов не могут быть включены в Kali, но имеют пакеты Debian для скачивания. Очень важно, чтобы вы знали, как обрабатывать и устанавливать эти пакеты и понимать, как они влияют на систему, особенно, в тех случаях, когда все идет не так как ожидалось.

Мы начнем с базового обзора apt, опишем структуру и содержимое двоичных и исходных пакетов, посмотрим на некоторые базовые инструменты и сценарии и затем углубимся в изучение для того, чтобы помочь вам выжать максимум из этой эффективной пакетной системы и набора инструментов.

8.1 Введение в apt

Давайте начнем с некоторых базовых определений, общего обзора, и небольшой истории пакетов Debian, начиная наше повествование с dpkg и apt.

8.1.1 Взаимосвязь между apt и dpkg

Пакет Debian представляет собой сжатый архив программного приложения. A бинарный пакет (binary package (файл .deb)) содержит файлы, которые могут быть прямо использованы (такие как программы или документации), в то время как исходный пакет (source package) содержит исходный код для программного обеспечения, а также инструкции, которые необходимы для создания бинарных пакетов. Пакет Debian содержит файлы приложения также как и другие метаданные, включая названия зависимостей, которые необходимы приложению и скрипты, которые разрешают выполнение команд на разных стадиях жизненного цикла пакета (установка, удаление и обновление).

Инструмент dpkg был создан для обработки и установки пакетов .deb, но если встречает зависимость, которая не может быть удовлетворена (вроде отсутствующей библиотеки), то это помешает установке пакетов. В подобных случаях dpkg просто перечислит отсутствующую зависимость, потому что у него просто нет вариантов действия или встроенной логики для обработки пакетов, которые должны удовлетворить эти зависимости. Инструмент The Advanced Package Tool (apt), включая apt и apt-get, были разработаны для устранения этих недостатков, и таким образом он может автоматически решить эти проблемы. В этой главе мы поговорим об инструментах dpkg и apt.

Базовой командой для обработки пакетов Debian в системе является dpkg, которая выполняет установку или анализ пакетов .deb и их содержимого. Тем не менее, dpkg имеет только частичное представление о вселенной Debian: он знает, что установлено в системе и что вы предоставляете в командной строке, но ничего не знает о других доступных пакетах. Таким образом, он не будет работать, если зависимость не будет выполнена. apt устраняет данные ограничения.

apt является набором инструментов, которые помогают управлять пакетами Debian или приложениями в вашей системе Debian. Вы можете использовать apt для установки и удаления приложений, обновления пакетов и даже обновления всей системы. Вся магия apt заключается в том, что он является полноценной системой управления пакетов, которая будет не просто устанавливать или удалять пакеты, но также будет рассматривать требования и зависимости пакетированного приложения (и даже их требования и зависимости) и пытаться удовлетворить их все автоматически. apt полагается на dpkg, но не смотря на это отличается от dpkg. apt устанавливает последнюю версию пакета из онлайн источника и работает так, чтобы разрешить зависимости, в то время как dpkg устанавливает пакет, расположенный на вашей локальной системе, и не разрешает зависимости автоматически.

Если вы работаете в данной сфере достаточно долго, чтобы помнить о компиляции программ с помощью gcc (даже с помощью утилит, таких как make и configure), вы, вероятно, помните, что это был довольно болезненный процесс, особенно, если приложение имело несколько зависимостей. Дешифруя различные предупреждения и сообщения об ошибках, вы могли определить, какая часть кода была неудачной, и чаще всего эта неудача была вызвана отсутствующей библиотекой или другой зависимостью. Затем вы отслеживали эту недостающую библиотеку или зависимость, исправляли ее и повторяли попытку. Далее, если вам повезет, компиляция должна завершиться, но часто сборка снова потерпит неудачу, жалуясь на другую нарушенную зависимость.

apt был разработан для того, чтобы помочь решить эту проблему, сопоставить программные требования и зависимости, а также решить их. Эта функциональность работает по умолчанию на Kali Linux, но она не является защищённой от неумелого обращения. Важно понимать, как работает система пакетирования Debian и Kali, потому что вам нужно будет устанавливать пакеты, обновлять программное обеспечение или устранять проблемы, связанные с пакетами. Вы будете использовать apt в своей повседневной работе с Kali Linux, и в этой главе мы познакомим вас с apt и покажем вам, как устанавливать, удалять, обновлять и управлять пакетами и даже покажем вам, как перемещать пакеты между разными дистрибутивами Linux. Мы также поговорим о графических инструментах, которые используют apt, покажем вам, как проверять подлинность пакетов, и углубимся в концепцию rolling distribution — метод, который ежедневно обновляет вашу систему Kali.

Прежде чем мы копнем глубже и покажем вам, как использовать dpkg и apt для установки и управления пакетами, очень важно, чтобы мы углубились в некоторые внутренние действия apt и обсудили некоторую терминологию, используемую в нем.

Источник пакета и исходный пакет (Package Source and Source Package)

Слово исходный/источник (source) может быть двусмысленным. Исходный пакет (source package)—является пакетом, который содержит исходный код программы – не следует путать с источником пакета (package source) – репозиторием (веб-сайтом, FTP сервером, CD-ROM, локальной директорией, и т.д.), который содержит пакет.

apt извлекает свои пакеты из репозитория, хранилища пакетов или просто, »источника пакета». Файл /etc/apt/sources.list перечисляет различные репозитории (или источники), которые содержат пакеты Debian.

8.1.2. Правильное понимание sources.list файла

Файл sources.list является ключевым файлом конфигурации для определения источника пакетов, и поэтому очень важно понимать, как он разбивается и как его настраивать, т.к. apt не будет работать без правильно определенного списка источника пакетов. Давайте обсудим его синтаксис. Для начала мы взглянем на различные репозитории, которые используются Kali Linux, и обсудим зеркала и зеркальные перенаправления, и только после этого вы будете готовы к использованию apt.

Каждая активная строчка файла /etc/apt/sources.list (и файлов /etc/apt/sources.list.d/*. list ) содержит описание источника, сделанного из трех частей, разделенных пробелами. Комментируемые строки начинаются с символа #:

# deb cdrom:[Debian GNU/Linux 2016.1 _Kali-rolling_ - Official Snapshot amd64 LIVE/INSTALL Binary 
20160830-11:29]/ kali-rolling contrib main non-free

deb http://http.kali.org/kali/ kali-rolling main non-free contrib

Давайте взглянем на синтаксис этого файла. Первое поле обозначает тип источника:

  • deb для бинарных пакетов,
  • deb-src для исходных пакетов.

Второе поле дает базовый URL-адрес источника: он может состоять из зеркала Debian или любого другого архива пакетов, настроенного третьей стороной. URL-адрес может начинаться с file://  для указания локального источника, установленного в иерархии файлов системы, с http://  для указания источника, доступного с веб-сервера, или с ftp://  для источника, доступного на FTP-сервере. URL-адрес также может начинаться с cdrom: для установки с CD-ROM/DVD-ROM/ Blu-ray, хотя этот способ становится реже используемым, поскольку методы установки из сети становятся более распространенными.

Информация cdrom описывает ваши устройства CD/DVD-ROM. В отличие от других записей, CD-ROM не всегда бывает доступен, так как он должен быть вставлен в привод, и, как правило, за один раз можно считывать информацию только с одного диска. По этим причинам эти источники управляются несколько иначе и должны быть добавлены программой apt-cdrom, обычно выполняемой с помощью параметра add. Затем вас попросят вставить диск в дисковод, где его содержимое будет просматриваться в поисках файла пакетов. Он будет использовать эти файлы для обновления своей базы данных пакетов (эта операция обычно выполняется командой apt update). После этого apt запросит дополнительный диск, если ему нужен пакет, хранящийся на нем.

Синтаксис последнего поля зависит от структуры репозитория. В самых простых случаях вы можете просто указать суб-директорию (с необходимым знаком слэша) желаемого источника (это чаще всего обычный знак «./«, который означает отсутствие суб-директории – в таком случае пакеты находятся непосредственно по указанному URL). Но в большинстве случаев репозитории будут структурированы, как зеркало Debian, с множество дистрибутивов, каждый из которых обладает большим количеством компонентов. В этих случаях назовите выбранный дистрибутив, а затем компоненты (или разделы), которые нужно включить. Давайте выделим еще немного времени на представление этих разделов.

Debian и Kali используют три раздела для дифференцирования пакетов согласно лицензии, выбранной авторами каждой работы.

Main содержит все пакеты, которые соответствуют генеральной линии бесплатного программного обеспечения Debian (Debian Free Software Guidelines).

Архивы, которые являются non-free, довольно сильно отличаются, потому что они содержат программное обеспечение, которое не (полностью) соответствует данным принципам, но которое, тем не менее, может распространяться без ограничения.

Contrib (contributions) представляет собой набор программ с открытым исходным кодом, которые не могут функционировать без некоторых non-free элементов. Эти элементы могут включать программное обеспечение из раздела non-free или non-free файлов, таких как игровые ПЗУ, BIOS консолей и т. д. Contrib также включает в себя бесплатное программное обеспечение, для компиляции которого требуются патентованные элементы, такие как VirtualBox, который в свою очередь требует non-free компилятор для создания некоторых своих файлов.

Теперь давайте посмотрим на стандартные источники пакетов Kali Linux или репозитории.

8.1.3 Репозитории Kali

Стандартный файл sources.list для системы, работающей на Kali Linux, относится к одному репозиторию (kali-rolling) и трем ранее упомянутым компонентам: main, contrib и non-free:

# Main Kali repository
deb http://http.kali.org/kali/ kali-rolling main contrib non-free

Давайте познакомимся с различными Kali репозиториями

8.1.3.1 Kali-Rolling репозиторий

Это основной репозиторий для конечных пользователей. Он всегда должен содержать самые новые и устанавливаемые пакеты. Он управляется инструментом, который объединяет Debian Testing и особые пакеты Kali, таким образом, гарантируя, что зависимости каждого пакета могут быть удовлетворены в kali-rolling. Другими словами, исключая вероятность любой ошибки в сценариях поддержки, все пакеты должны быть установлены.

Ввиду того, что Debian Testing развивается ежедневно, точно также эволюционирует и Kali Rolling. Особые Kali пакеты также регулярно обновляются, поскольку мы контролируем своевременные выпуски самых важных пакетов.

8.1.3.2 Kali-Dev репозиторий

Данный репозиторий не предназначен для общего пользования. Это пространство, в котором разработчики Kali решают проблемы зависимостей, возникающие в результате слияния особых пакетов Kali в Debian Testing.

Это также место, куда сначала загружаются обновленные пакеты, поэтому, если вам нужно обновление, которое было выпущено недавно, но которое еще не достигло kali-rolling, вы можете получить его из этого репозитория. Это не рекомендуется для обычных пользователей.

8.1.3.3 Репозиторий Kali-Bleeding-Edge

Этот репозиторий содержит пакеты, автоматически созданные из соответствующего репозитория Git (или Subversion). Положительным моментом является то, что вы сразу же получаете доступ к последним функциям и исправлениям ошибок менее, чем через 24 часа после того, как они были сделаны. Это идеальный способ проверить, исправлена ​​ли ошибка, о которой вы ранее сообщали.

Недостатком является то, что эти пакеты не были протестированы или проверены: если соответственные изменения повлияли на пакетирование (добавив новую зависимость), тогда этот пакет может не работать. Из-за этого репозиторий помечен таким образом, что apt автоматически не устанавливает пакеты из него, особенно, во время обновления.

Вы можете зарегистрировать репозиторий либо путем редактирования /etc/apt/sources.list  или путем создания нового файла в директории /etc/apt/sources.list.d , который имеет преимущество при выходе из исходной системы sources.list file un –altered. В данном примере мы предпочли создать отдельный файл /etc/apt/sources.list.d/kali-bleeding-edge.list  следующим образом:

# Kali Bleeding Edge repository
deb http://http.kali.org/kali/ kali-bleeding-edge main contrib non-free

8.1.3.4 Зеркала Kali Linux

Выдержки из sources.list, указанные выше, относятся к http.kali.org: это сервер, на котором работает MirrorBrain2, который перенаправляет ваши HTTP-запросы в официальное зеркало, находящееся рядом с вами. MirrorBrain контролирует каждое зеркало, чтобы гарантировать, что они работают должным образом и являются обновленными; он всегда перенаправит вас на хорошее зеркало.

Отладка перенаправления зеркал

Если у вас возникает проблема с зеркалом (например, из-за неудачного обновления apt), вы можете использовать curl -sI, чтобы увидеть, куда конкретно вы перенаправляетесь:

$ curl -sI http://mirror-1.truenetwork.ru/kali/README
HTTP/1.1 302 Found
Date: Mon, 11 Apr 2016 09:43:21 GMT
Server: Apache/2.4.10 (Debian)
X-MirrorBrain-Mirror: ftp.free.fr
X-MirrorBrain-Realm: country
Link: <http://http.kali.org/README.meta4>; rel=describedby; type="application/metalink4+xml"
Link: <http://ftp.free.fr/pub/kali/README>; rel=duplicate; pri=1; geo=fr
Link: <http://de-rien.fr/kali/README>; rel=duplicate; pri=2; geo=fr
Link: <http://ftp.halifax.rwth-aachen.de/kali/README>; rel=duplicate; pri=3; geo=de
Link: <http://ftp.belnet.be/kali/kali/README>; rel=duplicate; pri=4; geo=be
Link: <http://ftp2.nluug.nl/os/Linux/distr/kali/README>; rel=duplicate; pri=5; geo=nl
Location: http://ftp.free.fr/pub/kali/README
Content-Type: text/html; charset=iso-8859-1

Если проблема сохраняется, вы можете отредактировать /etc/apt/sources.Ust  имя другого известного рабочего зеркала вместо (или до) записи http.kati.org

У нас также есть второй экземпляр MirrorBrain: где http.kali.org размещает репозитории пакетов, а cdimage.kali.org размещает выпущенные ISO-образы.

http://cdimage.kali.org

Если вы хотите запросить список официальных зеркал Kali Linux, вы можете добавить .mirrorlist в любой допустимый URL-адрес, указывающий на http.kali.org или cdimage.kali.org.

http://http.kali.org/README.mirrorlist

http://cdimage.kali.org/README.mirrorlist

Эти списки не являются исчерпывающими из-за некоторых ограничений MirrorBrain (в частности, зеркала, зависящие от некоторых стран, не отображаются в списке, если вы не находитесь в данной стране). Но они содержат лучшие зеркала: они в хорошем состоянии и имеют большую пропускную способность.

Перейти к содержанию книги Kali Linux Revealed

Это интересно:

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *