Инструмент расширенного пакета (APT) - это то, как устанавливаются и управляются программы, библиотеки, документация и даже ядро на Kali и других деривациях на базе Debian. APT часто работает так хорошо, что многие пользователи не обращают на него особого внимания, кроме как, возможно, ищут и устанавливают программы и (надеюсь) регулярно обновляют свою систему. Для большинства стандартных пользователей использование APT таким образом совершенно нормально, но нам нравится думать, что люди, которые используют Kali Linux, не являются стандартными пользователями (в хорошем смысле), и поэтому мы посвящаем этот пост тому, как вам лучше использовать APT и как использовать широкую экосистему доступных пакетов, сохраняя при этом вашу систему Kali стабильной и счастливой. Многие люди скажут вам, что вы не должны полагаться на менеджера пакетов вообще, и вместо этого вы должны скомпилировать все с нуля, потому что вы узнаете больше об этом. Хотя верно, что вы многому научитесь, особенно по мере того, как вы начинаете, создание всего вручную быстро перейдет в скуку, когда вы сможете тратить свое время на взлом или изучать что-то новое, желательно и то, и другое. В этом сообщении мы покажем вам, как вы можете безопасно добавлять дополнительные репозитории пакетов в свою установку Kali, как обновлять и понижать их, а также обеспечивать гармонию всех этих хранилищ. APT является очень мощным и будет оценивать доступные пакеты из всех источников в целом, когда он формулирует свои решения. Добавление источников пакетов в Kali Linux Если вы хотите сделать свое будущее счастливым, вы не должны напрямую редактировать /etc/apt/sources.list напрямую. Для каждого нового репозитория пакетов, который вы добавляете в свою систему, создайте новый файл с описательным именем (например, debian-unstable.list) в /etc/apt/sources.list.d/. Если оставить исходный файл sources.list нетронутым, если Kali необходимо его обновить, он не будет прерывать вас во время обновления, спрашивая, какую версию файла сохранить. В этом посте мы добавим репозиторий Kali Bleeding-Edge и нестабильные и экспериментальные репозитории Debian. Репозиторий kali-bleeding-edge Репозиторий kali-bleeding-edge содержит ряд инструментов, которые очень популярны и меняются очень часто. Было бы непрактичным и трудоемким вручную создавать и тестировать обновленные пакеты, чтобы пакеты в этом репозитории генерировались автоматически всякий раз, когда изменяется исходный источник. С положительной стороны, это означает, что вы не превышаете 24 часа позади проекта, но с другой стороны, эти пакеты не тестируются, поэтому вам нужно знать, что пакеты в этом репозитории могут время от времени ломаться. Вы можете добавить репозитории и обновить список доступных пакетов следующим образом. echo "deb http://http.kali.org/kali kali-bleeding-edge main contrib non-free" > /etc/apt/sources.list.d/bleeding-edge.list apt update Чтобы установить пакет из kali-bleeding-edge, вам нужно добавить имя репозитория в имя пакета: apt install dnsrecon/kali-bleeding-edge К счастью, APT упрощает переход к kali-rolling версии конкретного пакета в любое время, поэтому нет необходимости опасаться пакетов в хранилище с kali-bleeding-edge. Если вы обнаружите, что пакет разбит, вы можете вернуться к kali-rolling версии таким же образом: apt install dnsrecon/kali-rolling Нестабильные и экспериментальные хранилища Debian Kali Linux является производным от Debian Testing, у которого есть более современное программное обеспечение, чем Debian Stable. Для еще более позднего программного обеспечения существует дистрибутив Debian Unstable, который является скользящей версией Debian, содержащей самые последние пакеты. Когда вы сталкиваетесь с ошибкой в пакете Debian, в репозитории Debian Unstable может быть исправлена версия, поэтому рекомендуется добавить ее в вашу систему Kali. Как и в случае с kali-bleeding-edge, пакеты в Unstable могут время от времени ломаться. Debian Experimental - еще один репозиторий, содержащий пакеты, которые находятся в разработке. Пакеты в этом репозитории очень текущие, но также могут быть очень глючными, более того, чем kali-bleeding-edge или Debian Unstable. APT будет устанавливать пакеты только из этого репозитория, если вы явно запросите их, и вы всегда можете понизить рейтинг, если что-то не получится. echo "deb http://ftp.debian.org/debian unstable main contrib non-free" > /etc/apt/sources.list.d/debian.list echo "deb http://deb.debian.org/debian experimental main" >> /etc/apt/sources.list.d/debian.list apt update Как и в случае пакетов с пакетом kali-bleeding-edge, если вы хотите установить пакеты из нестабильных или экспериментальных репозиторий, добавьте имя репозитория в конец имени пакета, как показано ниже. root@kali:~# apt install socat/experimental netperf/unstable Reading package lists... Done Building dependency tree Reading state information... Done Selected version '2.0.0~beta9-1' (Debian:experimental [amd64]) for 'socat' Selected version '2.6.0-2.1' (kali-rolling, Debian:unstable [amd64]) for 'netperf' The following NEW packages will be installed: netperf The following packages will be upgraded: socat 1 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 909 kB of archives. After this operation, 1,127 kB of additional disk space will be used. Get:1 http://kali.mirror.globo.tech/kali kali-rolling/non-free amd64 netperf amd64 2.6.0-2.1 [544 kB] Get:2 http://deb.debian.org/debian experimental/main amd64 socat amd64 2.0.0~beta9-1 [365 kB] Fetched 909 kB in 1s (555 kB/s) Reading changelogs... Done apt-listchanges: Mailing root: apt-listchanges: news for kali Selecting previously unselected package netperf. (Reading database ... 287650 files and directories currently installed.) Preparing to unpack .../netperf_2.6.0-2.1_amd64.deb ... Unpacking netperf (2.6.0-2.1) ... Preparing to unpack .../socat_2.0.0~beta9-1_amd64.deb ... Unpacking socat (2.0.0~beta9-1) over (1.7.3.2-1) ... Setting up socat (2.0.0~beta9-1) ... Processing triggers for systemd (234-3) ... Processing triggers for man-db (2.7.6.1-2) ... Setting up netperf (2.6.0-2.1) ... update-rc.d: We have no instructions for the netperf init script. update-rc.d: It looks like a network service, we disable it. Processing triggers for systemd (234-3) ... Определение приоритетов пакетов Чтобы определить, какие пакеты установлены, APT имеет приоритеты,назначенные для всех источников пакетов. Пакет с приоритетом 0 никогда не будет установлен, и пакет с приоритетом более 1000 будет всегда установлен, даже если это означает понижение пакета. Это хорошо для APT, но как вы можете видеть, какой приоритет относится к данному пакету? Введите малоизвестную команду «apt-cache» и ее «политику», которая отображает все ваши настроенные репозитории и их приоритеты. root@kali:~# apt-cache policy Package files: 100 /var/lib/dpkg/status release a=now 1 http://deb.debian.org/debian experimental/main amd64 Packages release o=Debian,a=experimental,n=experimental,l=Debian,c=main,b=amd64 origin deb.debian.org 500 http://ftp.debian.org/debian unstable/non-free amd64 Packages release o=Debian,a=unstable,n=sid,l=Debian,c=non-free,b=amd64 origin ftp.debian.org 500 http://ftp.debian.org/debian unstable/contrib amd64 Packages release o=Debian,a=unstable,n=sid,l=Debian,c=contrib,b=amd64 origin ftp.debian.org 500 http://ftp.debian.org/debian unstable/main amd64 Packages release o=Debian,a=unstable,n=sid,l=Debian,c=main,b=amd64 origin ftp.debian.org 100 http://http.kali.org/kali kali-bleeding-edge/main amd64 Packages release o=Kali,n=kali-bleeding-edge,c=main,b=amd64 origin http.kali.org 990 http://http.kali.org/kali kali-rolling/contrib amd64 Packages release o=Kali,a=kali-rolling,n=kali-rolling,c=contrib,b=amd64 origin http.kali.org 990 http://http.kali.org/kali kali-rolling/non-free amd64 Packages release o=Kali,a=kali-rolling,n=kali-rolling,c=non-free,b=amd64 origin http.kali.org 990 http://http.kali.org/kali kali-rolling/main amd64 Packages release o=Kali,a=kali-rolling,n=kali-rolling,c=main,b=amd64 origin http.kali.org Pinned packages: Вы заметите, что kali-roll, как дистрибутив по умолчанию, имеет наивысший приоритет на уровне 990, то есть его пакеты имеют приоритет над всеми остальными (именно это вы хотите как пользователь Kali), а затем Debian нестабильно на 500, kali-bleeding-edge на 100, и, наконец, экспериментальный, с низким приоритетом 1. Чтобы увидеть, как эти приоритеты относятся к данному пакету, взгляните на sqlmap. root@kali:~# apt-cache policy sqlmap sqlmap: Installed: 1.1.9-1 Candidate: 1.1.9-1 Version table: 1.1.9+0~git1505273832.7de63a-1 100 100 http://http.kali.org/kali kali-bleeding-edge/main amd64 Packages *** 1.1.9-1 990 990 http://http.kali.org/kali kali-rolling/main amd64 Packages 500 http://ftp.debian.org/debian unstable/main amd64 Packages 100 /var/lib/dpkg/status Несмотря на то, что версия sqlmap в kali-bleeding-edge новее, она не будет установлена, поскольку она имеет только приоритет 100 по сравнению с установленной версией, которая имеет приоритет 990. Именно по этой причине, когда вы хотите для установки пакета из другого репозитория пакета, его необходимо запросить явно. root@kali:~# apt install sqlmap/kali-bleeding-edge Reading package lists... Done Building dependency tree Reading state information... Done Selected version '1.1.9+0~git1505273832.7de63a-1' (http.kali.org [all]) for 'sqlmap' The following packages will be upgraded: sqlmap 1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Need to get 6,789 kB of archives. After this operation, 2,048 B of additional disk space will be used. Get:1 http://kali.mirror.globo.tech/kali kali-bleeding-edge/main amd64 sqlmap all 1.1.9+0~git1505273832.7de63a-1 [6,789 kB] Fetched 6,789 kB in 5s (1,192 kB/s) Reading changelogs... Done (Reading database ... 287587 files and directories currently installed.) Preparing to unpack .../sqlmap_1.1.9+0~git1505273832.7de63a-1_all.deb ... Unpacking sqlmap (1.1.9+0~git1505273832.7de63a-1) over (1.1.9-1) ... Setting up sqlmap (1.1.9+0~git1505273832.7de63a-1) ... Processing triggers for man-db (2.7.6.1-2) ... Конфигурация APT Настройка распределения по умолчанию Теперь, когда у вас есть дополнительные репозитории, добавленные в вашу систему, вы захотите начать изучение и установку новых пакетов, но прежде чем вы это сделаете, неплохо сообщить APT, что ваш дистрибутив по умолчанию, который для пользователей Kali Linux, «kali-rolling». Таким образом, ваша система не будет обновляться до какого-либо другого дистрибутива без вашего согласия. Настройте свой дистрибутив по умолчанию, добавив «APT :: Default-Release» kali-roll»;» в /etc/apt/apt.conf.d/local. root@kali:~# cat /etc/apt/apt.conf.d/local APT::Default-Release "kali-rolling"; Если вы настроили свой дистрибутив по умолчанию, каждый раз, когда вы запускаете «apt full-upgrade», он будет применять обновление для kali-roll, что поможет поддерживать стабильность вашей системы. Уменьшение запросов на обновление Если вы используете какой-либо Debian производный в течение значительного времени, вы столкнетесь с подсказкой при запуске «apt upgrade» с запросом о файле конфигурации и хотите ли вы сохранить локальную версию, использовать новую версию или сравнить ее. Чаще всего вы обнаружите, что принимаете дефолт, делая эти перерывы расточительными. Вы можете избежать этих запросов, обновив файл /etc/apt/apt.conf.d/local с помощью параметров «DPkg :: options» («-force-confdef»; «-force-confold»; }' как показано ниже. Эта строка сообщает APT попробовать самостоятельно, если файлы не изменились (-force-confdef), и если файлы разные, сохраните существующую версию (-force-confold). root@kali:~# cat /etc/apt/apt.conf.d/local DPkg::options { "--force-confdef"; "--force-confold"; } APT::Default-Release "kali-rolling"; Версии пакетов Иногда вы найдете приложение, которое нуждается в определенной версии конкретного пакета и не будет работать с каким-либо другим. В других случаях обновление одного пакета может негативно повлиять на другие инструменты. Это произошло с обновлением пакета devscripts, что мешало нам создавать пакеты Kali. К счастью, APT позволяет привязать пакет к определенной версии, установив приоритет 1001 в /etc/apt/preferences. Например, чтобы сообщить APT, чтобы пакет devscripts содержал версию 2.16.x, вы должны добавить следующее. Package: devscripts Pin: version 2.16.* Pin-Priority: 1001 Дополнительные ресурсы В этой статье мы смогли только поцарапать поверхность того, как вы можете расширить APT далеко за пределы стандартной экосистемы Kali или Debian. Алгоритмы очень эффективны, и проблемы в них встречаются редко, поэтому вам не нужно бояться исследовать другие репозитории. Чтобы узнать больше об APT и о том, как сгибать его по своему желанию, мы рекомендуем обратиться к раскрытому Kali Linux Revealed и руководству администратора Debian, в котором содержится множество информации, советов и трюков.