# Advanced Packaging Tool

L'Advanced Packaging Tool (conosciuto con l'acronimo APT), in informatica, è il gestore standard di pacchetti software della distribuzione GNU/Linux Debian.

## Storia

La prima versione venne pubblicata il 16 agosto 1998 e introdotta per la prima volta in Debian 2.1, pubblicato il 9 marzo 1999, mentre il 1º aprile 2014 è giunto alla versione 1.0.
Il 18 marzo 2020 è stata pubblicata la versione 2.0 che introduce il comando satisfy per la gestione e risoluzione di eventuali conflitti di dipendenze relative a pacchetti già installati e una modalità della selezione dei pacchetti simili ad aptitude.

## Caratteristiche

Contrariamente a dpkg, apt è in grado di gestire le dipendenze in fase di installazione e rimozione di software; è concepito per l'installazione di software da repository connettendosi a internet e inoltre ha la particolarità di sfruttare contemporaneamente diverse sorgenti di pacchetti (sorgenti remote FTP e HTTP, CD-ROM, DVD e disco rigido), di gestire autonomamente diverse distribuzioni di pacchetti e di permettere velocemente l'aggiornamento del sistema operativo a una particolare distribuzione. Può anche gestire pacchetti scaricati su una macchina senza connessione utilizzando apt-offline.
La lista delle sorgenti software da cui attingere i pacchetti è contenuta nei file /etc/apt/sources.list e /etc/apt/sources.list.d.
Nelle distribuzioni GNU/Linux che usano tale gestore di pacchetti (come Debian e Ubuntu) è disponibile come interfaccia grafica Synaptic e aptitude, quest'ultimo può anche essere utilizzato in modalità testuale.

## Esempi di utilizzo

Per utilizzarlo basta digitare in un emulatore di terminale il comando
apt-get o apt
Seguito da opzioni e parametri.

### Installazione pacchetti

L'installazione di nuovi pacchetti, una volta impostate le sorgenti, è effettuabile attraverso l'esecuzione del comando:
dove nomepacchetto sarà ovviamente il nome del pacchetto che si vuole installare

### Rimozione dei pacchetti

La rimozione è effettuabile attraverso l'utilizzo del parametro apt-get remove che però si limita a rimuovere solo il pacchetto e non i file di configurazione:
Per rimuovere, oltre i pacchetti, anche i file di configurazione utilizzati dagli stessi, digitare:
Per rimuovere i pacchetti e le dipendenze non più utilizzate invece:

### Aggiornamento dei pacchetti

Per aggiornare un singolo pacchetto:
Per aggiornare tutti i pacchetti installati:
Per aggiornare tutti i pacchetti e rimuovere gli obsoleti nonché le relative dipendenze:
Per aggiornare tutti i pacchetti e rimuovere gli obsoleti:
Esegue un avanzamento di versione della distribuzione (solo per Ubuntu e basate):

### Simulazione di operazioni

L'opzione --simulate, anteposta all'azione, consente di simulare l'azione e tutti i passi che il programma normalmente compirebbe, quindi vedere cosa verrebbe effettuato senza però correre alcun rischio. Per utilizzarla:
Ad esempio, prima di compiere un upgrade importante, si può provare il seguente comando e controllare che non vengano installati pacchetti che non ci interessano e che non vengano disinstallati pacchetti importanti:

### Gestione elenco sorgenti

Per modificare l'elenco delle sorgenti da cui APT andrà ad attingere è possibile modificare il files /etc/apt/sources.list ed eventualmente /etc/apt/sources.list.d ogni riga nell'elenco dovrà seguire uno di questi formati:
La prima parola di ogni riga, deb o deb-src, indica il tipo di archivio: se contiene pacchetti binari (deb), che sono i pacchetti già compilati che normalmente usiamo, o se l'archivio contiene i pacchetti sorgente (deb-src), che sono il codice sorgente originale del programma. La seconda parola indica l'indirizzo della sorgente.
Al posto di distribuzione deve essere indicata la distribuzione che si vuole gestire (di solito uno dei tre rami di sviluppo stable, testing o unstable, oppure esplicitamente la versione, per esempio woody, sarge o etch).
Le sezioni indicheranno quali parti della distribuzione dovranno essere gestite (normalmente si possono trovare main (i pacchetti completamente liberi, la maggioranza), non-free (i pacchetti distribuiti sotto una licenza non libera) e contrib (pacchetti liberi che però dipendono da altri non liberi). Al termine delle modifiche dei files .list è necessario tuttavia, affinché APT riconosca le modifiche, digitare:

## La versione semplificata: apt

Linux Mint nel 2011 introdusse uno script in python denominato apt che utilizzava una sintassi semplificata di apt-get.
Con la versione 1.0 è stata introdotta a una nuova versione denominata apt meglio performante e che utilizza una sintassi semplificata. Tra le novità vi è, durante l'esecuzione delle operazioni, una barra del progresso per indicarne lo stato di avanzamento.

## Curiosità

È possibile visualizzare un easter egg nascosto al suo interno, visualizzabile tramite l'opzione moo.