Mit dem Advanced Package Tool (APT) werden Programme, Bibliotheken, Dokumentation und sogar der Kernel selbst auf Kali und anderen Debian-basierten Derivaten installiert und verwaltet. APT funktioniert oft so gut, dass viele Benutzer ihm keine besondere Aufmerksamkeit schenken, außer vielleicht Programme zu suchen und zu installieren und (hoffentlich) ihr System regelmäßig zu aktualisieren.
Für die meisten Standardbenutzer ist die Verwendung von APT auf diese Weise völlig normal, aber wir denken gerne, dass Leute, die Kali Linux verwenden, keine Standardbenutzer sind (im positiven Sinne), und deshalb widmen wir diesen Beitrag der Beschreibung, wie Sie sie besser nutzen können von APT und wie Sie das breite Ökosystem der verfügbaren Pakete nutzen können, während Ihr Kali-System stabil und glücklich bleibt.
Viele Leute werden Ihnen sagen, dass Sie sich überhaupt nicht auf einen Paketmanager verlassen sollten und stattdessen alles von Grund auf neu kompilieren sollten, weil Sie auf diese Weise mehr lernen. Es stimmt zwar, dass Sie viel lernen werden, besonders am Anfang, aber alles von Hand zu bauen, wird schnell langweilig, wenn Sie Ihre Zeit damit verbringen könnten, zu hacken oder etwas Neues zu lernen, vorzugsweise beides.
In diesem Beitrag zeigen wir Ihnen, wie Sie Ihrer Kali-Installation sicher zusätzliche Paket-Repositories hinzufügen, wie Sie sie upgraden und downgraden und wie Sie sicherstellen können, dass alle diese Repositories harmonisch funktionieren. APT ist sehr leistungsfähig und wird die verfügbaren Pakete aus allen Quellen als Ganzes bewerten, wenn es seine Lösungen formuliert.
Hinzufügen von Paketquellen zu Kali Linux
Wenn Sie Ihr zukünftiges Ich glücklich machen möchten, sollten Sie /etc/apt/sources.list nicht direkt bearbeiten direkt. Erstellen Sie für jedes neue Paket-Repository, das Sie Ihrem System hinzufügen, eine neue Datei mit einem beschreibenden Namen (wie debian-unstable.list ) unter /etc/apt/sources.list.d/ . Indem Sie die ursprüngliche sources.list verlassen Datei unberührt, wenn Kali sie aktualisieren muss, wird es Sie während des Updates nicht unterbrechen und Sie fragen, welche Version der Datei behalten werden soll.
In diesem Beitrag werden wir das Kali Bleeding-Edge-Repository und die Debian-Repositorys „Unstable“ und „Experimental“ hinzufügen.
Das Kali-bleeding-edge-Repository
Das Kali-Bleeding-Edge-Repository enthält eine Reihe von Tools, die sehr beliebt sind und sich sehr häufig (sogar täglich) ändern. Es wäre unpraktisch und zeitaufwändig, aktualisierte Pakete manuell zu erstellen und zu testen, damit die Pakete in diesem Repository automatisch generiert werden, wenn sich die Originalquelle ändert. Auf der positiven Seite bedeutet dies, dass Sie nie mehr als 24 Stunden hinter dem Upstream-Projekt zurückliegen, aber auf der anderen Seite werden diese Pakete nicht getestet, sodass Sie sich darüber im Klaren sein müssen, dass die Pakete in diesem Repository von Zeit zu Zeit kaputt gehen können.
Sie können das Repo hinzufügen und die Liste der verfügbaren Pakete wie folgt aktualisieren.
echo "deb http://http.kali.org/kali kali-bleeding-edge main contrib non-free" > /etc/apt/sources.list.d/bleeding-edge.list
apt update
Um ein Paket von kali-bleeding-edge zu installieren, müssen Sie den Repository-Namen an den Paketnamen anhängen:
apt install dnsrecon/kali-bleeding-edge
Glücklicherweise macht es APT leicht, jederzeit auf die Kali-Rolling-Version eines bestimmten Pakets zurückzustufen, sodass Sie die Pakete im Kali-Bleeding-Edge-Repository nicht fürchten müssen. Wenn Sie feststellen, dass ein Paket in Kali-Bleeding-Edge beschädigt ist, können Sie auf die gleiche Weise zur Kali-Rolling-Version zurückkehren:
apt install dnsrecon/kali-rolling
Die Debian-Repositories für Unstable und Experimental
Kali Linux ist ein Derivat von Debian Testing, das über aktuellere Software als Debian Stable verfügt. Für noch neuere Software gibt es die Debian Unstable-Distribution, eine fortlaufende Entwicklungsversion von Debian, die die neuesten Pakete enthält. Wenn Sie in einem Debian-Paket auf einen Fehler stoßen, gibt es möglicherweise eine behobene Version im Debian Unstable-Repository, daher ist es eine gute Idee, sie Ihrem Kali-System hinzuzufügen. Wie bei kali-bleeding-edge können die Pakete in Unstable von Zeit zu Zeit brechen.
Debian Experimental ist ein weiteres Repository, das Pakete enthält, die sich in der Entwicklung befinden. Die Pakete in diesem Repository sind sehr aktuell, können aber auch sehr fehlerhaft sein, mehr noch als kali-bleeding-edge oder Debian Unstable. APT installiert Pakete aus diesem Repository nur, wenn Sie dies ausdrücklich anfordern, und Sie können jederzeit ein Downgrade durchführen, wenn die Dinge nicht funktionieren.
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
Wie bei den kali-bleeding-edge-Paketen, wenn Sie Pakete von Unstable oder Experimental installieren möchten, fügen Sie den Repository-Namen an das Ende des Paketnamens an, wie unten gezeigt.
[email protected]:~# 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) ...
Festlegen von Paketprioritäten
Um zu bestimmen, welche Pakete installiert werden, hat APT Prioritäten für alle Paketquellen zugewiesen, wobei die höchste Prioritätsnummer Vorrang hat. Ein Paket mit einer Priorität von 0 wird nie installiert und ein Paket mit einer Priorität über 1000 wird immer installiert, auch wenn das Paket heruntergestuft werden muss.
Das ist alles schön und gut für APT, aber wie können Sie als Benutzer sehen, welche Priorität ein bestimmtes Paket hat? Geben Sie den wenig bekannten Befehl „apt-cache“ und seine Option „policy“ ein, die alle Ihre konfigurierten Repositories und ihre Prioritäten anzeigt.
[email protected]:~# 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:
Sie werden feststellen, dass kali-rolling als Standarddistribution die höchste Priorität bei 990 hat, was bedeutet, dass ihre Pakete Vorrang vor allen anderen haben (was Sie als Kali-Benutzer wollen), gefolgt von Debian unstable bei 500, kali-bleeding -edge auf 100 und schließlich experimentell mit einer niedrigen Priorität von 1. Um zu sehen, wie diese Prioritäten auf ein bestimmtes Paket angewendet werden, werfen Sie einen Blick auf sqlmap.
[email protected]:~# 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
Obwohl die Version von sqlmap in kali-bleeding-edge neuer ist, wird sie nicht installiert, da sie nur eine Priorität von 100 hat, gegenüber der installierten Version, die eine Priorität von 990 hat Um ein Paket aus einem anderen Paket-Repository zu installieren, muss es explizit angefordert werden.
[email protected]:~# 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-Konfiguration
Festlegen der Standardverteilung
Nachdem Sie nun einige zusätzliche Repositories zu Ihrem System hinzugefügt haben, sollten Sie damit beginnen, neue Pakete zu erkunden und zu installieren, aber bevor Sie dies tun, ist es eine gute Idee, APT mitzuteilen, was Ihre Standarddistribution ist ist, was für Kali-Linux-Benutzer „kali-rollend“ ist. Auf diese Weise wird Ihr System ohne Ihre Zustimmung nicht auf eine andere Distribution aktualisiert. Konfigurieren Sie Ihre Standardverteilung, indem Sie „APT::Default-Release „kali-rolling“;“ hinzufügen. nach /etc/apt/apt.conf.d/local .
[email protected]:~# cat /etc/apt/apt.conf.d/local
APT::Default-Release "kali-rolling";
Wenn Ihre Standardverteilung konfiguriert ist, wird jedes Mal, wenn Sie „apt full-upgrade“ ausführen, das Upgrade auf kali-rolling angewendet, wodurch Ihr System stabil bleibt.
Aktualisierungsaufforderungen reduzieren
Wenn Sie ein Debian-Derivat für längere Zeit verwenden, werden Sie beim Ausführen von „apt upgrade“ auf eine Eingabeaufforderung stoßen, in der Sie nach einer Konfigurationsdatei gefragt werden und ob Sie die lokale Version behalten, die neue Version verwenden oder sie vergleichen möchten. In den meisten Fällen werden Sie feststellen, dass Sie die Standardeinstellung akzeptieren, wodurch diese Unterbrechungen verschwenderisch werden.
Sie können diese Eingabeaufforderungen vermeiden, indem Sie Ihre /etc/apt/apt.conf.d/local aktualisieren Datei mit ‘DPkg::options { “–force-confdef”; „–force-fold“; }' Wie nachfolgend dargestellt. Diese Zeile weist APT an, selbst zu entscheiden, ob sich die Dateien nicht geändert haben (–force-confdef), und falls die Dateien unterschiedlich sind, die vorhandene Version beizubehalten (–force-confold).
[email protected]:~# cat /etc/apt/apt.conf.d/local
DPkg::options { "--force-confdef"; "--force-confold"; }
APT::Default-Release "kali-rolling";
Pinning-Paketversionen
Gelegentlich werden Sie einige Anwendungen finden, die eine bestimmte Version eines bestimmten Pakets benötigen und mit keinem anderen funktionieren. In anderen Fällen kann eine Aktualisierung eines Pakets andere Tools beeinträchtigen. Dies ist uns kürzlich mit einem Update des devscripts-Pakets passiert, das uns daran gehindert hat, Kali-Pakete zu erstellen.
Glücklicherweise erlaubt Ihnen APT das Pinen ein Paket auf eine bestimmte Version, indem Sie seine Priorität auf 1001 setzen in /etc/apt/preferences . Um beispielsweise APT anzuweisen, das devscripts-Paket in Version 2.16.x zu halten, würden Sie Folgendes hinzufügen.
Package: devscripts
Pin: version 2.16.*
Pin-Priority: 1001
Zusätzliche Ressourcen
In diesem Beitrag konnten wir nur an der Oberfläche kratzen, wie Sie APT weit über das standardmäßige Kali- oder Debian-Ökosystem hinaus erweitern können. Die Solver-Algorithmen sind sehr effektiv und es kommt selten zu Problemen, sodass Sie keine Angst haben müssen, andere Repositories zu erkunden. Um mehr über APT zu erfahren und wie Sie es Ihren Wünschen anpassen können, empfehlen wir Ihnen, Kali Linux Revealed und The Debian Administrator’s Handbook zu lesen, die beide eine Fülle von Informationen, Tipps und Tricks enthalten.