# Gestione dei pacchetti

## RPM

E' lo strumento per la gestione dei pacchetti su sistemi RedHat e derivati. 

### Installare, aggiornare e rimuovere pacchetti

```bash
rpm -i PACKAGENAME.rpm

rpm -u PACKAGENAME # Aggiornamento
```
L'opzione `-h` mostra una barra di avanzamento. 

```bash
rpm -u PACKAGENAME # Rimozione del pacchetto
```

### Gestire le dipendenze

rpm non installa un pacchetto in mancanza delle dipendenze. Elenchera' solamente i pacchetti mancanti, ma non risolvera' in automatico le dipendenze.

### Elencare i pacchetti installati

```bash
rpm -qa # query all: elenca tutti i pacchetti presenti nel sistema
```

### Ottenere informazioni sui pacchetti

```bash
rpm -qi PACKAGENAME # query info: informazioni su un pacchetto installato

rpm -qip PACKAGENAME # query info: informazioni su un pacchetto NON installato

rpm -ql PACKAGENAME # query list: informazioni su quali file si trovano all'interno di un pacchetto installato

rpm -ql PACKAGENAME # query list: informazioni su quali file si trovano all'interno di un pacchetto NON installato
```

## YUM

Funziona similmente ad APT, essendo in grado di cercare, installare, aggiornare e rimuovere pacchetti, *gestendo in automatico le dipendenze*. 

### Ricercare pacchetti

```bash
yum search PATTERN
```

### Installare, aggiornare e rimuovere pacchetti

```bash
yum install PACKAGENAME

yum update PACKAGENAME

yum update # Aggiorna tutti i pacchetti del sistema

yum check-update PACKAGENAME

yum check-update # Controlla gli aggiornamenti per tutti i pacchetti del sistema

yum remove PACKAGENAME
```

### Ottenere informazioni sui pacchetti

```bash
yum info PATTERN
```
### Gestire i repository

I repository sono elencati nella directory `/etc/yum/repos.d/`. Ogni repository e' rappresentato da un file `.repo`. Il modo raccomandato per aggiungere repository e' attraverso l'utility `yum-config-manager`: 

```bash
yum-config-manager --add-repo URL.repo

yum repolist all # Elenco di tutti i repository

yum-config-manager --disable REPO_ID # Disabilita il repository REPO_ID

yum-config-manager --enable REPO_ID
```

yum memorizza i pacchetti scaricati in `/etc/yum/cache`. Per recuperare lo spazio:

```bash
yum clean packages

yum clean metadata
```

## DNF

Fork di yum, e' il gestore predefinito di Fedora

```bash
dnf search PATTERN

dnf info PACKAGENAME

dnf install PACKAGENAME

dnf remove PACKAGENAME

dnf upgrade PACKAGENAME

dnf upgrade # Aggiorna tutti i pacchetti

dnf list --installed
 
dnf repoquery -l PACKAGENAME # Elencare il contenuto di un pacchetto
```

### Gestire i repository

```bash
dnf repolist # Lista di tutti i repository

dnf --enabled repolist

dnf --disabled repolist

dnf-config-manager --add-repo URL.repo

dnf-config-manager --set-disabled REPO_ID # Disabilita il repository REPO_ID

dnf-config-manager --set-enabled REPO_ID
```

I repository sono elencati nella directory `/etc/yum/repos.d/`. Ogni repository e' rappresentato da un file `.repo`. 

## Zypper

Strumento di gestione dei pacchetti predefinito su SUSE Linux e OpenSUSE. Funziona similmente ad APT e YUM, essendo in grado di cercare, installare, aggiornare e rimuovere pacchetti, *gestendo in automatico le dipendenze*. 

### Aggiornare l'indice dei pacchetti

```bash
zypper refresh
```

### Ricercare pacchetti

```bash
zypper se PACKAGE # search

zypper se -i # Lista di tutti i pacchetti installati sul sistema
```

### Installare, aggiornare e rimuovere pacchetti

```bash
zypper in PACKAGE

zypper update # Aggiorna i pacchetti del sistema

zypper list-updates # Elenca, senza installarli, i pacchetti con aggiornamenti disponibili

zypper rm PACKAGE
```

### Ottenere informazioni sui pacchetti

```bash
zypper info PACKAGE
```

### Gestire i repository

```bash
zypper repos # Elenco di tutti i repository

zypper addrepo URL

zypper addrepo URL -f # Abilita gli aggiornamenti automatici

zypper remove REPO_NAME # Disabilita il repository REPO_ID

zypper setenabled REPO_ID
```