GNU/Linux >> Linux Esercitazione >  >> Linux

Gestione avanzata dei pacchetti in Kali Linux

L'Advanced Package Tool (APT) è il modo in cui programmi, librerie, documentazione e persino il kernel stesso vengono installati e gestiti su Kali e altri derivati ​​basati su Debian. APT spesso funziona così bene che molti utenti non prestano particolare attenzione ad esso se non per cercare e installare programmi e (si spera) aggiornare regolarmente il proprio sistema.

Per la maggior parte degli utenti standard, utilizzare APT in questo modo è perfettamente normale, ma ci piace pensare che le persone che usano Kali Linux non siano utenti standard (in senso positivo) e quindi dedichiamo questo post a spiegare come utilizzarlo al meglio di APT e come sfruttare l'ampio ecosistema di pacchetti disponibili, mantenendo stabile e felice il tuo sistema Kali.

Molte persone ti diranno che non dovresti assolutamente fare affidamento su un gestore di pacchetti e invece dovresti compilare tutto da zero perché imparerai di più in questo modo. Anche se è certamente vero che imparerai molto, soprattutto all'inizio, costruire tutto a mano si trasformerà rapidamente in una noia quando potresti passare il tuo tempo a hackerare o imparare qualcosa di nuovo, preferibilmente entrambi.

In questo post, ti mostreremo come aggiungere in sicurezza repository di pacchetti aggiuntivi alla tua installazione di Kali, come aggiornarli e declassarli e come garantire che tutti questi repository vivano in armonia. APT è molto potente e valuterà i pacchetti disponibili da tutte le fonti nel loro insieme quando formulerà le sue soluzioni.

Aggiunta di sorgenti pacchetto a Kali Linux

Se vuoi rendere felice il tuo futuro, non dovresti modificare direttamente /etc/apt/sources.list direttamente. Per ogni nuovo repository di pacchetti che aggiungi al tuo sistema, crea un nuovo file con un nome descrittivo (come debian-unstable.list ) in /etc/apt/sources.list.d/ . Lasciando l'originale sources.list file intatto, se Kali ha bisogno di aggiornarlo, non ti interromperà durante l'aggiornamento, chiedendoti quale versione del file conservare.

In questo post, aggiungeremo il repository Kali Bleeding-Edge e i repository Debian Unstable e Experimental.

Il repository di kali-bleeding-edge

Il repository kali-bleeding-edge contiene una serie di strumenti che sono molto popolari e cambiano molto frequentemente (anche quotidianamente). Sarebbe poco pratico e dispendioso in termini di tempo creare e testare manualmente i pacchetti aggiornati in modo che i pacchetti in questo repository vengano generati automaticamente ogni volta che l'origine a monte cambia. Sul lato positivo, significa che non sei mai più indietro di 24 ore rispetto al progetto a monte, ma al contrario, questi pacchetti non sono testati, quindi devi essere consapevole del fatto che i pacchetti in questo repository potrebbero rompersi di tanto in tanto.

Puoi aggiungere il repository e aggiornare l'elenco dei pacchetti disponibili come segue.

echo "deb http://http.kali.org/kali kali-bleeding-edge main contrib non-free" > /etc/apt/sources.list.d/bleeding-edge.list
apt update

Per installare un pacchetto da kali-bleeding-edge, devi aggiungere il nome del repository al nome del pacchetto:

apt install dnsrecon/kali-bleeding-edge

Fortunatamente, APT rende facile il downgrade alla versione kali-rolling di un particolare pacchetto in qualsiasi momento, quindi non c'è bisogno di temere i pacchetti nel repository kali-bleeding-edge. Se scopri che un pacchetto è rotto in kali-bleeding-edge, puoi tornare alla versione kali-rolling allo stesso modo:

apt install dnsrecon/kali-rolling

I repository Debian Unstable e Experimental

Kali Linux è un derivato di Debian Testing, che ha un software più aggiornato di Debian Stable. Per software ancora più recenti, c'è la distribuzione Debian Unstable, che è una versione di sviluppo continuativa di Debian, contenente i pacchetti più recenti. Quando incontri un bug in un pacchetto Debian, potrebbe esserci una versione corretta nel repository Debian Unstable, quindi è una buona idea aggiungerla al tuo sistema Kali. Come con kali-bleeding-edge, i pacchetti in Unstable potrebbero rompersi di tanto in tanto.

Debian Experimental è un altro repository che contiene pacchetti in fase di sviluppo. I pacchetti in questo repository sono molto attuali ma possono anche essere molto bacati, più di kali-bleeding-edge o Debian Unstable. APT installerà i pacchetti da questo repository solo se li richiedi esplicitamente e puoi sempre eseguire il downgrade se le cose non funzionano.

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

Come per i pacchetti kali-bleeding-edge, se desideri installare pacchetti da unstable o Experimental, aggiungi il nome del repository alla fine del nome del pacchetto come mostrato di seguito.

[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) ...

Determinazione delle priorità del pacchetto

Per determinare quali pacchetti vengono installati, APT ha delle priorità assegnato a tutte le origini del pacchetto, con il numero di priorità più alto che ha la precedenza. Un pacchetto con priorità 0 non verrà mai installato e un pacchetto con priorità superiore a 1000 sarà sempre installato, anche se ciò significa eseguire il downgrade del pacchetto.

Tutto questo va bene per APT, ma come puoi tu, l'utente, vedere qual è la priorità di un determinato pacchetto? Inserisci il poco conosciuto comando "apt-cache" e la sua opzione "policy", che mostra tutti i tuoi repository configurati e le loro priorità.

[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:

Noterai che kali-rolling, come distribuzione predefinita, ha la priorità più alta a 990, il che significa che i suoi pacchetti hanno la precedenza su tutti gli altri (che è quello che vuoi come utente Kali), seguito da Debian unstable a 500, kali-bleeding -edge a 100 e, infine, sperimentale, con una priorità bassa di 1. Per vedere come queste priorità si applicano a un determinato pacchetto, dai un'occhiata a 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

Anche se la versione di sqlmap in kali-bleeding-edge è più recente, non verrà installata perché ha solo una priorità di 100, rispetto alla versione installata, che ha una priorità di 990. È per questo motivo che quando vuoi per installare un pacchetto da un repository di pacchetti diverso, deve essere richiesto esplicitamente.

[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) ...

Configurazione APT

Impostazione della distribuzione predefinita

Ora che hai aggiunto alcuni repository extra al tuo sistema, vorrai iniziare a esplorare e installare nuovi pacchetti, ma prima di farlo, è una buona idea dire ad APT quale sia la tua distribuzione predefinita è, che per gli utenti di Kali Linux, è "kali-rolling". In questo modo il tuo sistema non eseguirà l'aggiornamento a un'altra distribuzione senza il tuo consenso. Configura la tua distribuzione predefinita aggiungendo "APT::Default-Release "kali-rolling";" su /etc/apt/apt.conf.d/local .

[email protected]:~# cat /etc/apt/apt.conf.d/local
APT::Default-Release "kali-rolling";

Con la tua distribuzione predefinita configurata, ogni volta che esegui "apt full-upgrade", applicherà l'aggiornamento a kali-rolling, contribuendo a mantenere stabile il tuo sistema.

Riduzione dei prompt di aggiornamento

Se usi qualsiasi derivato di Debian per un periodo di tempo significativo, durante l'esecuzione di "apt upgrade" ti verrà chiesto informazioni su un file di configurazione e se desideri mantenere la versione locale, utilizzare la nuova versione o confrontarli. Il più delle volte, ti ritroverai ad accettare l'impostazione predefinita, rendendo queste interruzioni dispendiose.

Puoi evitare queste richieste aggiornando il tuo /etc/apt/apt.conf.d/local file con ‘DPkg::options { “–force-confdef”; “–force-confold”; }' come mostrato di seguito. Questa riga dice ad APT di provare a scegliere da solo se i file non sono cambiati (–force-confdef) e se i file sono diversi, mantenere la versione esistente (–force-confold).

[email protected]:~# cat /etc/apt/apt.conf.d/local
DPkg::options { "--force-confdef"; "--force-confold"; }
APT::Default-Release "kali-rolling";

Pinning delle versioni del pacchetto

Occasionalmente, troverai alcune applicazioni che richiedono una versione specifica di un particolare pacchetto e non funzioneranno con nessun altro. Altre volte, un aggiornamento a un pacchetto potrebbe influire negativamente su altri strumenti. Questo ci è successo di recente con un aggiornamento del pacchetto devscripts, che ci impediva di creare pacchetti Kali.

Fortunatamente, APT ti consente di bloccare un pacchetto su una versione particolare impostandone la priorità su 1001 in /etc/apt/preferences . Ad esempio, per dire ad APT di mantenere il pacchetto devscripts alla versione 2.16.x, dovresti aggiungere quanto segue.

Package: devscripts
Pin: version 2.16.*
Pin-Priority: 1001

Risorse aggiuntive

In questo post, siamo stati solo in grado di scalfire la superficie di come estendere APT ben oltre l'ecosistema Kali o Debian predefinito. Gli algoritmi del risolutore sono molto efficaci e incorrere in problemi è raro, quindi non devi temere di esplorare altri repository. Per saperne di più su APT e su come piegarlo alla tua volontà, ti invitiamo a fare riferimento a Kali Linux Revealed e The Debian Administrator's Handbook, che contengono entrambi una vasta gamma di informazioni, suggerimenti e trucchi.


Linux
  1. Gestione pacchetti Linux con apt

  2. Come utilizzare XBPS Package Manager su Void Linux

  3. Linux – Kali Rolling vs Kali Sana Repository?

  4. Linux:installare le intestazioni su Kali?

  5. Supporto HTTPS del repository Kali Linux

Kali Linux vs Parrot

Kali Linux – Impossibile recuperare InRelease – Repository Fix

Come aggiungere un repository a Debian

Come convertire i pacchetti Linux con Alien

Gestione dei pacchetti Linux con YUM e RPM

Come elencare i pacchetti installati in Linux utilizzando la gestione dei pacchetti